<?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>202569</bug_id>
          
          <creation_ts>2019-10-04 00:46:13 -0700</creation_ts>
          <short_desc>[JSC] Change signature of HostFunction to (JSGlobalObject*, CallFrame*)</short_desc>
          <delta_ts>2019-10-10 12:40:54 -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>JavaScriptCore</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>
          
          <blocked>202392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>pmatos</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576757</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 00:46:13 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576758</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-04 00:47:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/55975858&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576767</commentid>
    <comment_count>2</comment_count>
      <attachid>380195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 01:30:49 -0700</bug_when>
    <thetext>Created attachment 380195
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576779</commentid>
    <comment_count>3</comment_count>
      <attachid>380200</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 02:04:10 -0700</bug_when>
    <thetext>Created attachment 380200
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576795</commentid>
    <comment_count>4</comment_count>
      <attachid>380207</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 02:56:36 -0700</bug_when>
    <thetext>Created attachment 380207
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576796</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 02:59:35 -0700</bug_when>
    <thetext>OK, let&apos;s see the status of EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576973</commentid>
    <comment_count>6</comment_count>
      <attachid>380237</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 13:01:54 -0700</bug_when>
    <thetext>Created attachment 380237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576995</commentid>
    <comment_count>7</comment_count>
      <attachid>380247</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 13:37:18 -0700</bug_when>
    <thetext>Created attachment 380247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577054</commentid>
    <comment_count>8</comment_count>
      <attachid>380260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 15:39:07 -0700</bug_when>
    <thetext>Created attachment 380260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577055</commentid>
    <comment_count>9</comment_count>
      <attachid>380260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 15:41:39 -0700</bug_when>
    <thetext>Comment on attachment 380260
Patch

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

The other parts are mechanical one.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:840
&gt;      ProtoCallFrame protoCallFrame;

ProtoCallFrame&apos;s globalObject change is important.

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:273
&gt;      // Calling convention:      f(edi, esi, edx, ecx, ...);

ThunkGenerators.cpp change is important.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:265
&gt; +    makeCall(entry, protoCallFrame, t3, t4)

LLInt change is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577533</commentid>
    <comment_count>10</comment_count>
      <attachid>380260</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-07 15:30:43 -0700</bug_when>
    <thetext>Comment on attachment 380260
Patch

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

r=me

&gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:273
&gt;&gt;      // Calling convention:      f(edi, esi, edx, ecx, ...);
&gt; 
&gt; ThunkGenerators.cpp change is important.

can we file a bug on using GPRInfo here instead of naming registers?

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:337
&gt; +    static_assert(GPRInfo::regT2 != GPRInfo::argumentGPR0);
&gt; +    static_assert(GPRInfo::regT2 != GPRInfo::argumentGPR1);

I think arm64 and x86_64 on Windows/*nix can easily be written using GPRInfo and RegisterSet. As I said above, filing a bug for this work would be nice (you don&apos;t necessarily need to do the work, but we should just have a bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577545</commentid>
    <comment_count>11</comment_count>
      <attachid>380260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-07 15:47:46 -0700</bug_when>
    <thetext>Comment on attachment 380260
Patch

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

Thanks!

&gt;&gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:273
&gt;&gt;&gt;      // Calling convention:      f(edi, esi, edx, ecx, ...);
&gt;&gt; 
&gt;&gt; ThunkGenerators.cpp change is important.
&gt; 
&gt; can we file a bug on using GPRInfo here instead of naming registers?

Yes, filed https://bugs.webkit.org/show_bug.cgi?id=202657.

&gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:337
&gt;&gt; +    static_assert(GPRInfo::regT2 != GPRInfo::argumentGPR1);
&gt; 
&gt; I think arm64 and x86_64 on Windows/*nix can easily be written using GPRInfo and RegisterSet. As I said above, filing a bug for this work would be nice (you don&apos;t necessarily need to do the work, but we should just have a bug)

Right. Fixed. https://bugs.webkit.org/show_bug.cgi?id=202657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577555</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-07 16:13:52 -0700</bug_when>
    <thetext>Committed r250803: &lt;https://trac.webkit.org/changeset/250803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577569</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-07 16:53:34 -0700</bug_when>
    <thetext>Committed r250807: &lt;https://trac.webkit.org/changeset/250807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578213</commentid>
    <comment_count>14</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2019-10-09 06:32:53 -0700</bug_when>
    <thetext>Since this bug&apos;s patch made trunk, that we have 32bits failing to build in Debug mode or segfaulting in tests when built in Release mode - opened bug 202748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578301</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-09 10:58:41 -0700</bug_when>
    <thetext>It looks like the changes in r250803 and the subsequent change in 250807 has caused the windows builds to fail. 

build:
https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/builds/7170
https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/builds/7173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578790</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-10 12:40:54 -0700</bug_when>
    <thetext>Committed r250982: &lt;https://trac.webkit.org/changeset/250982&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380195</attachid>
            <date>2019-10-04 01:30:49 -0700</date>
            <delta_ts>2019-10-04 02:04:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202569-20191004013048.patch</filename>
            <type>text/plain</type>
            <size>1264309</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YWNkZDAwZWE0OTRmMGQ5M2NkZTM5YzYxMDk1OTUzYWM1OTE4ZGIyLi42NGI5OWY5ODViYTgzMDY1
YTdmMWZiMWQ5ZmUzYjI3ZWY3ODNkY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NzggQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAg
ICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvQVBJQ2FzdC5oOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9i
YWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNCYXNlSW50ZXJu
YWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBDaGFuZ2VMb2ctMjAxMS0wMi0xNjoKKyAgICAgICAg
KiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ci5oOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBmdGwvRlRMT1NSRW50cnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNh
dmVkUmVzdWx0QWxpYXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29s
bGVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
UHJveHlUYXJnZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFr
U2V0U2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0
YW5jZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1
YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAg
ICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1u
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVu
Y3Rpb25OYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlU2NvcGVDaGFpbik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3Jp
cHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2Ny
aXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6cmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpyZWdpc3Rl
cnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJG
cmFtZU9yRW50cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y2FsbGVyRnJhbWVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OnJldHVyblBDIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNS
ZXR1cm5QQyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJS
ZXR1cm5QQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZz
ZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFic3RyYWN0UmV0dXJuUEMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnRvcE9mRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENhbGxlckZyYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJlc3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVja2VkQXJndW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjpnZXRBcmd1bWVudFVuc2FmZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnNldFRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3
VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4ZWMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDYWxsZWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6Oml0ZXJhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0lu
ZGV4Rm9yUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxl
ckZyYW1lQW5kUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZy
YW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2Fm
ZUNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9n
cmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJv
Z3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAg
KEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oOgorICAgICAgICAq
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZNRW50
cnlSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVJlY29yZDo6cHJldlRvcENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUp
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklURXhjZXB0
aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUHJp
bnRTdGRPdXQpOgorICAgICAgICAoZnVuY3Rpb25QcmludFN0ZEVycik6CisgICAgICAgIChmdW5j
dGlvbkRlYnVnKToKKyAgICAgICAgKGZ1bmN0aW9uRGVzY3JpYmUpOgorICAgICAgICAoZnVuY3Rp
b25EZXNjcmliZUFycmF5KToKKyAgICAgICAgKGZ1bmN0aW9uU2xlZXBTZWNvbmRzKToKKyAgICAg
ICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAoZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAg
ICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAgKGZ1bmN0aW9uRWRlbkdDKToKKyAgICAg
ICAgKGZ1bmN0aW9uSGVhcFNpemUpOgorICAgICAgICAoZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsp
OgorICAgICAgICAoZnVuY3Rpb25BZGRyZXNzT2YpOgorICAgICAgICAoZnVuY3Rpb25WZXJzaW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToK
KyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgor
ICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4
KToKKyAgICAgICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyk6CisgICAgICAgIChmdW5jdGlv
bkNsZWFyU2FtcGxpbmdGbGFncyk6CisgICAgICAgIChmdW5jdGlvbkdldFJhbmRvbVNlZWQpOgor
ICAgICAgICAoZnVuY3Rpb25TZXRSYW5kb21TZWVkKToKKyAgICAgICAgKGZ1bmN0aW9uSXNSb3Bl
KToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKToKKyAgICAgICAgKGZ1bmN0
aW9uUmVhZGxpbmUpOgorICAgICAgICAoZnVuY3Rpb25QcmVjaXNlVGltZSk6CisgICAgICAgIChm
dW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25Ob0RGRyk6Cisg
ICAgICAgIChmdW5jdGlvbk5vRlRMKToKKyAgICAgICAgKGZ1bmN0aW9uTm9PU1JFeGl0RnV6emlu
Zyk6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
ZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNP
TUdDb21waWxlZCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKToKKyAgICAg
ICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFn
ZW50U3RhcnQpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3Qp
OgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk6CisgICAgICAgIChmdW5jdGlv
bkRvbGxhckFnZW50U2xlZXApOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2Fz
dCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1
bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRN
b25vdG9uaWNOb3cpOgorICAgICAgICAoZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KToKKyAgICAgICAg
KGZ1bmN0aW9uSGVhcENhcGFjaXR5KToKKyAgICAgICAgKGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNz
KToKKyAgICAgICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKGZ1
bmN0aW9uTWFsbG9jSW5BTG9vcCk6CisgICAgICAgIChmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUp
OgorICAgICAgICAoZnVuY3Rpb25KU0NPcHRpb25zKToKKyAgICAgICAgKGZ1bmN0aW9uUmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50KToKKyAgICAgICAgKGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZl
cik6CisgICAgICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1
bmN0aW9uUXVpdCk6CisgICAgICAgIChmdW5jdGlvbkZhbHNlKToKKyAgICAgICAgKGZ1bmN0aW9u
VW5kZWZpbmVkMSk6CisgICAgICAgIChmdW5jdGlvblVuZGVmaW5lZDIpOgorICAgICAgICAoZnVu
Y3Rpb25Jc0ludDMyKToKKyAgICAgICAgKGZ1bmN0aW9uSXNQdXJlTmFOKToKKyAgICAgICAgKGZ1
bmN0aW9uSWRlbnRpdHkpOgorICAgICAgICAoZnVuY3Rpb25FZmZlY3RmdWw0Mik6CisgICAgICAg
IChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAgICAgIChmdW5jdGlvbkhhc0N1c3RvbVBy
b3BlcnRpZXMpOgorICAgICAgICAoZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMpOgor
ICAgICAgICAoZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MpOgorICAgICAgICAoZnVuY3Rpb25SZWxl
YXNlV2Vha1JlZnMpOgorICAgICAgICAoZnVuY3Rpb25JczMyQml0UGxhdGZvcm0pOgorICAgICAg
ICAoZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01v
ZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1By
b2ZpbGVyKToKKyAgICAgICAgKGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QpOgorICAgICAg
ICAoZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKToKKyAgICAgICAg
KGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChmdW5jdGlvbkVuc3Vy
ZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcik6
CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAg
IChmdW5jdGlvbk1heEFyZ3VtZW50cyk6CisgICAgICAgIChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0
KToKKyAgICAgICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKToKKyAgICAgICAgKGZ1bmN0aW9u
V2ViQXNzZW1ibHlNZW1vcnlNb2RlKToKKyAgICAgICAgKGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAoZnVu
Y3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQv
TExJbnRFeGNlcHRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJr
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpjYWxsQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmFycmF5Q29uc3Ry
dWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2Nh
bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVz
aCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NsaWNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0luZGV4
T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAg
KEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5j
QWRkKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNBbmQpOgorICAgICAgICAoSlNDOjphdG9t
aWNzRnVuY0NvbXBhcmVFeGNoYW5nZSk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jRXhjaGFu
Z2UpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0lzTG9ja0ZyZWUpOgorICAgICAgICAoSlND
OjphdG9taWNzRnVuY0xvYWQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY09yKToKKyAgICAg
ICAgKEpTQzo6YXRvbWljc0Z1bmNTdG9yZSk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jU3Vi
KToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWl0KToKKyAgICAgICAgKEpTQzo6YXRvbWlj
c0Z1bmNXYWtlKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNYb3IpOgorICAgICAgICAqIHJ1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQmlnSW50Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKToK
KyAgICAgICAgKEpTQzo6YmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKToKKyAgICAgICAgKiBy
dW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmJpZ0ludFByb3RvRnVu
Y1RvU3RyaW5nSW1wbCk6CisgICAgICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAo
SlNDOjpiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxCb29sZWFuQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpib29sZWFuUHJvdG9G
dW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVmFsdWVPZik6Cisg
ICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9Db25zb2xlQ2xpZW50Lmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6Y29uc29sZUxvZ1dpdGhMZXZlbCk6CisgICAgICAgIChKU0M6OmNv
bnNvbGVQcm90b0Z1bmNEZWJ1Zyk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNFcnJv
cik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNMb2cpOgorICAgICAgICAoSlNDOjpj
b25zb2xlUHJvdG9GdW5jSW5mbyk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNXYXJu
KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NsZWFyKToKKyAgICAgICAgKEpTQzo6
Y29uc29sZVByb3RvRnVuY0Rpcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNEaXJY
TUwpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGFibGUpOgorICAgICAgICAoSlND
Ojpjb25zb2xlUHJvdG9GdW5jVHJhY2UpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5j
QXNzZXJ0KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50KToKKyAgICAgICAg
KEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQpOgorICAgICAgICAoSlNDOjpjb25zb2xl
UHJvdG9GdW5jUHJvZmlsZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNQcm9maWxl
RW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QpOgor
ICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZSk6CisgICAgICAgIChKU0M6OmNvbnNv
bGVQcm90b0Z1bmNUaW1lTG9nKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1RpbWVF
bmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKToKKyAgICAgICAg
KEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY0dyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3Vw
RW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1JlY29yZCk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJv
dG9GdW5jU2NyZWVuc2hvdCk6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbERhdGUpOgorICAg
ICAgICAoSlNDOjpkYXRlUGFyc2UpOgorICAgICAgICAoSlNDOjpkYXRlTm93SW1wbCk6CisgICAg
ICAgIChKU0M6OmRhdGVOb3cpOgorICAgICAgICAoSlNDOjpkYXRlVVRDKToKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNUb0lTT1N0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xv
Y2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVT
eW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVU
Q0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vj
b25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGlt
ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29uZHMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0
VVRDU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRNaW51dGVzKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jU2V0SG91cnMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRD
SG91cnMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0RGF0ZSk6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1NldE1vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldEZ1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1Nl
dFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0WWVhcik6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNUb0pTT04pOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsRXJyb3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OnB1dCk6CisgICAgICAg
IChKU0M6OkVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25GdXp6Lmg6CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0
aEZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Omluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dExvZyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246
Om9mZnNldE9mR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6
Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bENvbGxhdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbEludGxDb2xsYXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKToKKyAgICAgICAg
KEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAg
ICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OmNhbGxJbnRs
RGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdEZ1bmNG
b3JtYXREYXRlVGltZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVy
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxOdW1iZXJGb3JtYXQpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsT2JqZWN0RnVuY0dldENhbm9u
aWNhbExvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMpOgorICAgICAg
ICAoSlNDOjpjYWxsSW50bFBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGVGdW5jU2VsZWN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0QXJyYXlCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjphcnJh
eUJ1ZmZlckZ1bmNJc1ZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAgICAgIChKU0M6
OmFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OnNo
YXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NG
dW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OmlzQm91bmRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICogcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b246OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbCk6CisgICAgICAgICogcnVudGltZS9K
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6
OnNldERhdGEpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKToKKyAg
ICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgpOgorICAgICAgICAoSlND
OjpkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3
UHJvdG9GdW5jR2V0SW50OCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50
MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEludDMyKToKKyAgICAgICAg
KEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3
UHJvdG9GdW5jR2V0VWludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRV
aW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIpOgorICAg
ICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpk
YXRhVmlld1Byb3RvRnVuY1NldEludDgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVu
Y1NldEludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMik6Cisg
ICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgpOgorICAgICAgICAoSlNDOjpk
YXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9G
dW5jU2V0VWludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMy
KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KToKKyAgICAgICAg
KiBydW50aW1lL0pTRGF0ZU1hdGguaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjph
bGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAg
ICAgKEpTQzo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlND
OjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYWtlQm91bmRGdW5j
dGlvbik6CisgICAgICAgIChKU0M6Omhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6YXNzZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OmVucXVldWVKb2IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxG
dW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQYXJzZUludCk6CisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNQYXJzZUZsb2F0KToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0RlY29k
ZVVSSSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jRW5jb2RlVVJJKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0VuY29kZVVSSUNvbXBvbmVudCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFc2NhcGUpOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVW5lc2NhcGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxG
dW5jVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJy
b3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jTWFr
ZVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAg
ICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5j
QnVpbHRpbkxvZyk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKToKKyAgICAgICAgKEpTQzo6Z2xv
YmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY093
bktleXMpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxv
YWRlclJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJSZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlckdldE1v
ZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlckV2YWx1YXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1N0cmluZ2lm
eSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om9iamVj
dFByaXZhdGVGdW5jSW5zdGFuY2VPZik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZp
ZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZp
ZXdQcml2YXRlRnVuY1NvcnQpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y1NldCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMpOgorICAgICAg
ICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpT
Qzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90
b0dldHRlckZ1bmNCdWZmZXIpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJG
dW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJG
dW5jQnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2
ZXJzZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAg
ICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbE1hcCk6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFw
QnVja2V0SGVhZCk6CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCk6
CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KToKKyAgICAgICAgKEpT
Qzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2V0TWFwKToKKyAgICAgICAgKEpTQzo6bWFwUHJvdG9GdW5jQ2xlYXIpOgorICAg
ICAgICAoSlNDOjptYXBQcm90b0Z1bmNEZWxldGUpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5j
QWJzKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FDb3MpOgorICAgICAgICAoSlNDOjpt
YXRoUHJvdG9GdW5jQVNpbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBVGFuKToKKyAg
ICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4yKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY0NlaWwpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ2x6MzIpOgorICAgICAgICAo
SlNDOjptYXRoUHJvdG9GdW5jQ29zKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0V4cCk6
CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNGbG9vcik6CisgICAgICAgIChKU0M6Om1hdGhQ
cm90b0Z1bmNIeXBvdCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cpOgorICAgICAg
ICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01p
bik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNQb3cpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jUmFuZG9tKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1JvdW5kKToKKyAg
ICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NpZ24pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9G
dW5jU2luKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NxcnQpOgorICAgICAgICAoSlND
OjptYXRoUHJvdG9GdW5jVGFuKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0lNdWwpOgor
ICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQUNvc2gpOgorICAgICAgICAoSlNDOjptYXRoUHJv
dG9GdW5jQVNpbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVRhbmgpOgorICAgICAg
ICAoSlNDOjptYXRoUHJvdG9GdW5jQ2JydCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmND
b3NoKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0V4cG0xKToKKyAgICAgICAgKEpTQzo6
bWF0aFByb3RvRnVuY0Zyb3VuZCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cxcCk6
CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cxMCk6CisgICAgICAgIChKU0M6Om1hdGhQ
cm90b0Z1bmNMb2cyKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NpbmgpOgorICAgICAg
ICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNU
cnVuYyk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9NaWNyb3Rhc2suaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNv
bnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL05hdGl2ZUZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUZ1bmN0aW9uOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb246Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6TnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1cm5VbmRlZmluZWQpOgorICAg
ICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVs
bFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAq
IHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RO
dW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcik6CisgICAgICAg
IChKU0M6Om51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIpOgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5j
VG9FeHBvbmVudGlhbCk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRml4ZWQpOgor
ICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6
Om51bWJlclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3RXaXRo
TmV3VGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JLZXlzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24pOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyk6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvcklzKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1
bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkp
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToK
KyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6
Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAgICAgIChKU0M6OnByb3h5UmV2b2NhYmxl
Q29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UHJveHlPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpjYWxsUHJveHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5UmV2b2tl
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5UmV2b2tlKToKKyAgICAgICAgKiBydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0Q29uc3Ry
dWN0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldCk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0
UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktleXMpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
U2V0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhw
Q29uc3RydWN0b3JEb2xsYXIpOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvcklucHV0
KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUpOgorICAgICAgICAo
SlNDOjpyZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yTGFzdFBhcmVuKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMZWZ0
Q29udGV4dCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0KToK
KyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dCk6CisgICAgICAgIChKU0M6
OnNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6ZXNTcGVjUmVn
RXhwQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNDb21waWxlKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVySWdu
b3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlclN0aWNreSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyVW5p
Y29kZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MpOgorICAgICAgICAo
SlNDOjpyZWdFeHBQcm90b0dldHRlclNvdXJjZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3Rv
RnVuY1NlYXJjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEhlYWQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQpOgorICAg
ICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSk6CisgICAgICAgICogcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jQWRkKToK
KyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjpzZXRQcm90
b0Z1bmNEZWxldGUpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNIYXMpOgorICAgICAgICAo
SlNDOjpzZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhTdHJp
bmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJp
bmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNSZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBs
YWNlVXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2Yp
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
U3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cik6CisgICAgICAgIChKU0M6OmJ1aWx0
aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1
YnN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6dG9Mb2NhbGVDYXNl
KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZSk6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY1RyaW0pOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNU
cmltU3RhcnQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUcmltRW5kKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0VuZHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nSW5jbHVkZXNJbXBsKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjpi
dWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU3ltYm9sKToKKyAgICAg
ICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JGb3IpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25z
dHJ1Y3RvcktleUZvcik6CisgICAgICAgICogcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1
bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAgICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cu
aDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBEZWxldGUpOgorICAgICAgICAo
SlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01h
cEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdl
YWtSZWYpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrUmVmKToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRXZWFrUmVm
KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1JlZkRlcmVmKToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrU2V0KToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha1NldCk6CisgICAgICAgIChK
U0M6OnByb3RvRnVuY1dlYWtTZXREZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFr
U2V0SGFzKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkRPTUpJVEdldHRlckNvbXBsZXg6
OmZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6RE9NSklURnVuY3Rpb25P
YmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OkRPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVDaGVjayk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNy
YXNoKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25CcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25ERkdUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25GVExUcnVlKToKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25DcHVNZmVuY2UpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNwdVJk
dHNjKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVDcHVpZCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uQ3B1UGF1c2UpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNwdUNsZmx1c2gpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkxMaW50VHJ1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSklU
VHJ1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTm9JbmxpbmUpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdDKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25FZGVuR0MpOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ2Fs
bEZyYW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFtZSk6CisgICAg
ICAgIChKU0M6OmNvZGVCbG9ja0Zyb21BcmcpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNvZGVC
bG9ja0Zvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcFNvdXJjZUZvcik6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKToKKyAgICAgICAgKEpTQzo6ZG9QcmludCk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGF0YUxvZyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJpbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvbkR1bXBTdGFjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcFJlZ2lz
dGVycyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcENlbGwpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkluZGV4aW5nTW9kZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSW5saW5lQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblZhbHVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25HZXRQSUQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhdmVBQmFkVGltZSk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
Q3JlYXRlR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVQcm94eSk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVOdWxsUm9wZVN0cmluZyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21H
ZXR0ZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdCk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ1BhcnNlcik6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVh
dGVCdWlsdGluKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRQcml2YXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVJvb3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldEVsZW1lbnQpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVNpbXBsZU9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uR2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNldEhpZGRlblZh
bHVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rpb25zT25TdGFj
ayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hv
dWxkTm90VGhyb3cpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUmV0dXJuVHlwZUZvcik6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25I
YXNCYXNpY0Jsb2NrRXhlY3V0ZWQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tF
eGVjdXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6
eik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUpOgor
ICAgICAgICAoSlNDOjpmdW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2xvYmFs
T2JqZWN0Rm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyk6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uVG90YWxHQ1RpbWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblBhcnNlQ291bnQp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbklzV2FzbVN1cHBvcnRlZCk6CisgICAgICAgICogd2Fz
bS9XYXNtRW1iZWRkZXIuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlk
YXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVy
bmFsKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6OmNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b0Z1bmNFeHBvcnRzKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3Ip
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkpOgorICAgICAgICAoSlND
OjpjYWxsSlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVm
ZmVyKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKToKKyAgICAg
ICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKToKKyAgICAgICAgKEpTQzo6d2ViQXNz
ZW1ibHlNb2R1bGVFeHBvcnRzKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJs
eU1vZHVsZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKToKKyAgICAgICAg
KEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
SlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlUYWJs
ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk6CisgICAgICAgIChK
U0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6d2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQ
cm90b0Z1bmNTZXQpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pOgor
ICAgICAgICAqIHlhcnIvWWFyckVycm9yQ29kZS5oOgorCiAyMDE5LTEwLTAzICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGVzdG1hc20gZmFpbHVyZSBvbiBB
U2FuIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjRkNjIwMzg2Nzk4ZmM5YzU0MWUzZTVjYjFmOTg1
OTAwODRjY2NlLi5jYjg4N2QwZTVlMTI5ZjY0YmFiMmI5ZDg4YWI4YTIzYzcxZGI3ZjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDA0IEBACisyMDE5LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQ2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0
RnVuY3Rpb24gdG8gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0Lmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
QmluZGluZ1NlY3VyaXR5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpT
Q2xhc3M+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTo6Y2FsbFRocm93VHlwZUVycm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3JlOjppc1Jl
YWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
SXRlcmF0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2lu
ZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxQbHVn
aW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNsb25lQXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb25lQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6c3RydWN0dXJlZENsb25l
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6c3RydWN0dXJlZENsb25lQXJyYXlCdWZm
ZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0
ZVNlcmlhbGl6ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVm
aW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaCk6CisgICAgICAgIChXZWJDb3JlOjpqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZCk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRGVsZXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNSZWFkT25seU1hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkdldCk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNp
dGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdFBy
b3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
RVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q0VSZWFjdGlvbnNOb3ROZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25TcGVjaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
VGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFy
Z3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldp
dGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJn
dW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGlu
Z09wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RD
b25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZElu
U3BlY2lmaWNXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZh
dGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uVGFrZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRo
b2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2Q0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbklu
ZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uTmFtZWREZWxldGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1l
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRl
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFt
ZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdl
dFNlY3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxKU1Rlc3RPYmop
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZvaWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Wb2lkTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25CeXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhB
cmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51
bGxhYmxlU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
bnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxs
YWJsZVVTVlN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5
dGVTdHJpbmdBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5n
TG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVP
YmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRv
d0FyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZ0lzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJp
bmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxE
b3VibGVJc05hTik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nSXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9u
Z0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVs
bCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9k
Myk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlz
aGluZ1VuaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRp
c3Rpbmd1aXNoaW5nVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxh
YmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRo
b2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJp
bmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5p
b25NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25B
bnkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlz
ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0
dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92
ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxs
ZXJOYW1lZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5
RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90
b3R5cGVGdW5jdGlvblRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25GdW5jdGlvblJldHVybmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmlu
Z2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5
cGVGdW5jdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVl
bmNlT2ZOdWxsYWJsZXNBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9m
VW5pb25zQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25VbmlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVu
Y2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuaDoKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxS
dW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxSdW50aW1lQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uaDoKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZhY2UuaDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEFu
eS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmg6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDoKKwogMjAxOS0xMC0wMyAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgIFtpT1NdIFdlYkNvbnRlbnQg
cHJvY2VzcyBjYW4gYmUgaW50ZXJydXB0ZWQgZHVyaW5nIHN1c3BlbnNpb247IGxvc2VzICJOb3cg
UGxheWluZyIgc3RhdHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExOTY4ZTVkMWE0Zjc4MWE1ODM4MWMzNjQzYWYy
MTllYTM0YWUzNjEuLmU5MDYyOWVhM2I2NTMyYWQ5NWQwOWZmY2MyZjk4MDBlODM0YTI5MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RG
dW5jdGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhbGxNZXRob2QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y2FsbE5QSlNPYmplY3QpOgorICAgICAgICAoV2ViS2l0Ojpjb25zdHJ1Y3RX
aXRoQ29uc3RydWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVPYmplY3RNYXAuaDoKKwogMjAxOS0xMC0wMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU29ja2V0IFJXSSBjbGllbnQgc2hvdWxkIGFj
cXVpcmUgYmFja2VuZCBjb21tYW5kcyBmcm9tIHNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGJjZTYzNDYzOWQ3ODk3Mjk0ODE2NTJjMDgzN2VhNTA4MTcyMTQ2ODEuLjQ0Njlk
YzkzODI0MTZkMTQ2M2Y5YjY1OTBjOGM2MzhhMTcwMWE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENoYW5nZSBzaWduYXR1cmUgb2YgSG9z
dEZ1bmN0aW9uIHRvIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIuaDoKKwogMjAxOS0xMC0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBQcm92aWRlIFRBUEkgdGhlIGZ1bGwgdGFyZ2V0IHRyaXBsZSBpbnN0
ZWFkIG9mIGp1c3QgdGhlIGFyY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElD
YWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggZTUyODNiNWI0MmNkM2M4ZGFhNjNmMjlmYzJmZTk4ODYx
M2Q2YzhkZS4uZWE3ODQ4ZGVlMWFiNjUxOGVhN2Q3YzU1ZWYxZGUzYjExZTNiNTgxNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTM2
LDcyICszNiw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEFQSUNhbGxiYWNrRnVuY3Rp
b24gewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhlY1N0YXRlKik7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246
OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
Q29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7Ci0gICAgSlNPYmplY3RSZWYgZnVuY3Rp
b25SZWYgPSB0b1JlZihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihj
YWxsRnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0
PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBOb3RT
dHJpY3RNb2RlKSkpOwogCi0gICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8SlNWYWx1
ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShhcmd1bWVudENvdW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7
IGkrKykKLSAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBw
ZW5kKHRvUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwog
CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgIEpTVmFsdWVSZWYgcmVzdWx0Owog
ICAgIHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwor
ICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsKICAg
ICAgICAgcmVzdWx0ID0ganNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2Fs
bGJhY2soKShleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwg
YXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24p
Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxG
cmFtZSwgZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFs
dWUuCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgcmVz
dWx0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGNhbGxGcmFtZSwgcmVzdWx0
KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgSlNDb250ZXh0UmVmIGN0eCA9
IHRvUmVmKGV4ZWMpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anND
YWxsZWUoKTsKKyAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoY2FsbEZyYW1lKTsKICAgICBK
U09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKIAogICAgIEpT
T2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjayA9IGpzQ2FzdDxUKj4oY29u
c3RydWN0b3IpLT5jb25zdHJ1Y3RDYWxsYmFjaygpOwogICAgIGlmIChjYWxsYmFjaykgewotICAg
ICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAg
ICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgIGFyZ3VtZW50
cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkp
KTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKICAgICAgICAgSlNWYWx1ZVJl
ZiBleGNlcHRpb24gPSAwOwogICAgICAgICBKU09iamVjdFJlZiByZXN1bHQ7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAg
ICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY3R4LCBjb25zdHJ1Y3RvclJlZiwgYXJndW1l
bnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihjYWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoY2FsbEZyYW1lLCBleGNlcHRpb24pKTsK
ICAgICAgICAgfQogICAgICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAg
ICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhyZXN1bHQp
KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUNhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCmluZGV4IGIyZjM4
ODhiNjUxYjk3ZDM5YzRjNWUxODRmNTAyN2RiZGMwOGUyYjAuLjNiODIwZTllNmYzNGZiNjJlYmZh
ODcyNWM4YjM3OTY5ZGU2Y2I2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCkBA
IC0zMywxMSArMzMsMTIgQEAKICNpbmNsdWRlICJIZWFwQ2VsbElubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIENhbGxGcmFtZTsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBWTTsKICAgICBjbGFzcyBKU09i
amVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOworICAgIHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0R3JvdXAqIEpTQ29u
dGV4dEdyb3VwUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxP
YmplY3QubW0KaW5kZXggZjA3YTJkYWJiMzBmNThlODFjNmM4Zjk5NzIyZmM3NTNlZDU2ZjU3ZS4u
ZDlhNDMzNjMxMTk0MzViZTU2NzhmYTY2MTk1ZWI0ZDQ4OGRmZDkyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC0xNzcsMTcgKzE3Nywx
NyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZl
dGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJl
amVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiTm8gbW9kdWxlIGxvYWRlciBwcm92aWRlZC4i
KSk7CiAKICAgICBhdXRvIGRlZmVycmVkUHJvbWlzZSA9IFN0cm9uZzxKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkPih2bSwgZGVmZXJyZWQpOwotICAgIGF1dG8qIHJlc29sdmUgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlc29sdmUiLCBbPV0gKEV4
ZWNTdGF0ZSogZXhlYykgeworICAgIGF1dG8qIHJlc29sdmUgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlc29sdmUiLCBbPV0gKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7CiAgICAgICAgIC8vIFRo
aXMgY2FwdHVyZXMgdGhlIGdsb2JhbE9iamVjdCBidXQgdGhhdCdzIG9rIGJlY2F1c2Ugb3VyIHN0
cnVjdHVyZSBrZWVwcyBpdCBhbGl2ZSBhbnl3YXkuCi0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgSlNDb250
ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0
b0dsb2JhbFJlZihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSldOwotICAgICAgICBpZCBzY3Jp
cHQgPSB2YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHRvUmVmKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
KSk7CisgICAgICAgIGlkIHNjcmlwdCA9IHZhbHVlVG9PYmplY3QoY29udGV4dCwgdG9SZWYoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAKICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKIAogICAgICAgICBhdXRvIHJlamVjdFByb21pc2UgPSBbJl0gKFN0cmlu
ZyBtZXNzYWdlKSB7Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZChjcmVhdGVUeXBlRXJyb3IoZXhl
YywgbWVzc2FnZSkpOwotICAgICAgICAgICAgY2FsbChleGVjLCBkZWZlcnJlZFByb21pc2UtPkpT
UHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNl
ZW4uLi4iKTsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJh
bWUsIG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIGNhbGwoY2FsbEZyYW1lLCBkZWZlcnJlZFByb21p
c2UtPkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVy
IGJlIHNlZW4uLi4iKTsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsK
ICAgICAgICAgfTsKIApAQCAtMjA2LDE1ICsyMDYsMTUgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpT
QVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKG1ha2VTdHJpbmcoIlRoZSBzYW1l
IEpTU2NyaXB0IHdhcyBwcm92aWRlZCBmb3IgdHdvIGRpZmZlcmVudCBpZGVudGlmaWVycywgcHJl
dmlvdXNseTogIiwgb2xkTW9kdWxlS2V5LCAiIGFuZCBub3c6ICIsIG1vZHVsZUtleS5zdHJpbmco
KSkpOwogCiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSk7Ci0gICAgICAgIGNhbGwoZXhlYywg
ZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSgpLCBhcmdzLCAiVGhp
cyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgZGVm
ZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSgpLCBhcmdzLCAiVGhpcyBz
aG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZp
bmVkKCk7CiAgICAgfSk7CiAKLSAgICBhdXRvKiByZWplY3QgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlamVjdCIsIFs9XSAoRXhlY1N0YXRlKiBl
eGVjKSB7CisgICAgYXV0byogcmVqZWN0ID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDEsICJyZWplY3QiLCBbPV0gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICAgICAgYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBhcmdzLmFwcGVu
ZChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAotICAgICAgICBjYWxsKGV4ZWMsIGRlZmVycmVk
UHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdCgpLCBhcmdzLCAiVGhpcyBzaG91bGQg
bmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgZGVmZXJyZWRQcm9t
aXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZl
ciBiZSBzZWVuLi4uIik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAg
ICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRl
cm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRlcm5hbC5oCmluZGV4
IGEyNzRhZjk2ZThjNDA5OTc2NzY1YzEzMzhmMmVmMmExZmJlZDE2ZmQuLmEyZmNjNWNkYmQ5Nzhk
MmEzNGRlOTkxMjlhZmJjY2Y4MWMwNDA3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZUludGVybmFsLmgKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvV2ViS2l0QXZhaWxhYmlsaXR5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNMb2NrSG9sZGVyOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgU291
cmNlQ29kZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogZXh0ZXJuICJDIiBK
U1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChjb25zdCBKU0M6OkpTTG9ja0hvbGRl
ciYsIEpTQzo6RXhlY1N0YXRlKiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBiODNiMTMzMTQx
YjEwMTU1NmI4NDhjZTNmZmRmZWQ1ZTdiOGI4YzMwLi4zNzIzZTQwZmVjYjUxNzZkOTQ3YzFlOWUy
NDczM2I1MDM1NmVmMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaApAQCAtMjE4LDggKzIxOCw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmlu
YWwgOiBwdWJsaWMgUGFyZW50IHsKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxs
YmFja09iamVjdChKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxs
YmFja09iamVjdChFbmNvZGVkSlNWYWx1ZSk7CiAgCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgCiAgICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1
ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBz
dGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKaW5kZXggYzcyMzYzMzk1YjA0NzViOGVjMTYyYjA1MDhkMjNiZGEyNzgx
N2QxMS4uYzU1N2Y5OGZmN2E1NThlZmVhYTg5MGI3MTdkNDNlNzcwYWI2ZmUwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTQ0MSwzMCArNDQxLDMwIEBAIENvbnN0cnVjdFR5cGUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0Nh
bGxlZSgpOwotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CisgICAgSlNP
YmplY3QqIGNvbnN0cnVjdG9yID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpOworICAgIEpTQ29udGV4
dFJlZiBleGVjUmVmID0gdG9SZWYoY2FsbEZyYW1lKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1
Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYg
anNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPihjb25zdHJ1Y3Rvcikt
PmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewog
ICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0
cnVjdG9yID0ganNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKLSAgICAgICAgICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgICAgICAgICAgc2l6
ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAg
ICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAgICAgICAgICAgYXJndW1l
bnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgICAg
ICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KGkpKSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0
b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICAg
ICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIEpTT2JqZWN0KiBy
ZXN1bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRv
SlMoY2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291
bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNTE0LDMwICs1MTQsMzAgQEAgQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKLSAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIEpT
T2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU0NvbnRleHRSZWYg
ZXhlY1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYg
PSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhjYWxsRnJhbWUsIE5vdFN0cmljdE1vZGUpKSk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9KUyhmdW5jdGlv
blJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xh
c3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNG
dW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7Ci0gICAgICAgICAgICBzaXplX3Qg
YXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgICAg
ICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAgICAgICAgIGFyZ3VtZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgICAgICAgICAg
YXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChpKSkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9S
ZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoZXhlYyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIEpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHRvSlMoY2FsbEZyYW1lLCBjYWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5j
dGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAg
ICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3Bl
LCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nLTIwMTEtMDItMTYgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nLTIwMTEtMDItMTYKaW5kZXggOWY4MWIyYjM2YjQ2NTUzZTlmYTNmMWY5Yzg4
ZjdmMGE5ODQ2YmQ0OS4uMjVlYzliNTc2NmVmZmMzMmM3NWU5NmMwMzEyMzNlZGY1YjJmYmNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZy0yMDExLTAyLTE2Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2ctMjAxMS0wMi0xNgpAQCAtMjM4NTAs
NyArMjM4NTAsNyBAQCBuCiAgICAgICAgICAgICAKICAgICAgICAgaXMgbm93IHRoaXMKIAotICAg
ICAgICAgICAgSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqTmF0aXZlRnVuY3Rpb24pKEV4ZWNTdGF0
ZSopCisgICAgICAgICAgICBKU1ZhbHVlIChKU0NfSE9TVF9DQUxMICpOYXRpdmVGdW5jdGlvbiko
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogICAgICAgICAgICAgCiAgICAgICAgIENhbGxl
ZSwgJ3RoaXMnLCBhbmQgYXJndW1lbnQgYWNjZXNzIGFsbCBoYXBlbiByZWxhdGl2ZSB0byB0aGUg
RXhlY1N0YXRlKiwKICAgICAgICAgd2hpY2ggaXMgYSBwb2ludGVyIGludG8gdGhlIFJlZ2lzdGVy
RmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJh
bWUuaAppbmRleCA4ZGVmYzI2NzBjMTgyYTk1NWJmYjY1MTdhY2U0NjYwNGM1ZGY3MTVlLi5kMGEw
NzRhYmU1OWMzMGEyNzBiYTE1OGNjYWIzY2Q5ZTk3ZTc1Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCkBAIC0zNyw4ICszNyw5IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZTsKLWNsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTRnVuY3Rpb247Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIGVudW0gS2lu
ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDMxYTZl
MGRmZGJkNmZlNDgyNTRhOWQxNjk5ZWMyNzFkZmJkYjQwZTguLjFlNWVhYTkyYzBhMGYwNmNiZDJl
MjhjOWM0MDU1ZWYzZDRiMDQwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCkBAIC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4
ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBj
bGFzcyBWTTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyaXRoTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0
aE1vZGUuaAppbmRleCAwYTY0NDQ4NmUzNGY3MjljYTNlNGNkZjkwNTc3YzU5ODQzOGU4NjQ5Li4z
ZWJhY2FiNzhhMmJhYTQ3OTU4OGY4ZWJhMGU1NzU2ZjhhNmVhYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIHVzaW5nIEVuY29kZWRKU1ZhbHVlID0gaW50NjRfdDsKIAogbmFt
ZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDczYzgxMmMxZDU1MTZlMGVkNTJiNmRkZTdjNDcyMzU5MWY3NjUxNWIu
LjIzMzNjMjg0Yzg5MzI2OTMyYmJjNTZhZTUxZWM5MTQwNWU3NjQxYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNjk3LDcgKzM2
OTcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3Io
CiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSAhPSBjb25zdHJ1Y3RvckNsYXNzSW5mb0Zv
clR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoZnVuY3Rp
b24tPmdsb2JhbE9iamVjdCgqbV92bSkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKQorICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9p
bmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gV2Ugb25seSBoYXZlIGFuIGludHJpbnNpYyBmb3IgdGhl
IGNhc2Ugd2hlcmUgeW91IHNheToKQEAgLTM3MzQsNyArMzczNCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICBpZiAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlm
ICghZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25j
dXJyZW50bHkodHlwZSkpCisgICAgaWYgKCFmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVk
QXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGluc2VydENoZWNrcygpOwpAQCAtMzc2NSw3ICszNzY1LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIH0KIAogICAgIGlm
IChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSAhPSBtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+
Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaW5z
ZXJ0Q2hlY2tzKCk7CkBAIC0zODA2LDcgKzM4MDYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgICAgICAgICByZXN1bHROb2RlID0g
YWRkVG9HcmFwaChDYWxsU3RyaW5nQ29uc3RydWN0b3IsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFw
aChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1
bHROb2RlKTsKKyAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09i
amVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9i
amVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHROb2RlKTsKICAgICAgICAg
CiAgICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM4MzIsOSArMzgzMiw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50
SW50ZXJuYWxGdW5jdGlvbigKIAogICAgICAgICBOb2RlKiByZXN1bHROb2RlOwogICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdE5v
ZGUgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPm9iamVjdFN0cnVjdHVyZUZvck9iamVj
dENvbnN0cnVjdG9yKCkpKSk7CisgICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFwaChO
ZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9i
YWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSkpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoQ2FsbE9iamVj
dENvbnN0cnVjdG9yLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2JhbE9iamVj
dCgqbV92bSkpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgICAgICByZXN1bHROb2RlID0gYWRk
VG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5j
dGlvbi0+Z2xvYmFsT2JqZWN0KCkpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIHNldChyZXN1
bHQsIHJlc3VsdE5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMjZiZDcyODZkZmZmZTYyYWY2NDQyZmI3ODMyMWI3
NTQ1MmVlNTRlMC4uMTVhZjQxYmUwNGUyYmM4M2Y5Y2I3OGJmZjdlMzBlYzEwZTEwYWY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNTIsNyArNTIsOCBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2luZ2xlUm9vdEdyYXBoOwogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAppbmRleCA1MGNiMDYwNWMxMDY3ZGU3YmRhMmZl
MThjOWZjZGM1OTM1MWVhZTcyLi4xN2Y4YWVlMWUyZDg4ODY5Mjk2MWVmOWFlYWRkMzQ1N2NkMzIx
NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCkBAIC0zMyw4ICsz
Myw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAK
IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDVmMDVlZTE1ZjI0ZGM2NTk1NzEwNjk0N2Y1ZDdlNmIxMDZi
MzYzMTIuLjlkMDM4YjVmMzJjNTY2OTA0MjcxNzIyMzI1YTYyZmNlNzQ5OWY0NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjM1
LDYgKzcyMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdAogICAgIG1faml0LnN0b3JlUHRy
KHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpKTsKICAgICBt
X2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkpOworICAgIG1faml0
LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
RnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVu
Y2Uodm0oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggN2IwYzg5YTk0Y2EzMjhlZTk2ZWVlMGY0Yjk2
ZmUyMjdjZDdkMWRjOC4uMTAzNjllNGU0OTQ1MjYwZGE3Y2M0YzEzYTNmNzE4NmE2ZTQyMzU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKQEAgLTgxLDYgKzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogICAgIG1hY3JvKEpTQ2VsbF91c2VmdWxCeXRlcywgSlNDZWxsOjppbmRleGluZ1R5cGVB
bmRNaXNjT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0lu
Zm8sIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1hY3Jv
KEpTRnVuY3Rpb25fZXhlY3V0YWJsZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
IFwKKyAgICBtYWNybyhKU0Z1bmN0aW9uX2dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fc2NvcGUsIEpTRnVuY3Rp
b246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9yYXJlRGF0
YSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSBcCiAgICAgbWFjcm8oSlNHbG9iYWxP
YmplY3RfcmVnRXhwR2xvYmFsRGF0YV9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgSlNHbG9iYWxP
YmplY3Q6OnJlZ0V4cEdsb2JhbERhdGFPZmZzZXQoKSArIFJlZ0V4cEdsb2JhbERhdGE6Om9mZnNl
dE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4
cCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggNGE1YzU0NWU2MGMzOTMwN2ZlNDJmMzU1YzRiNzIxNDNlNDNmNWZkNS4uZTQxYmZjMjdl
ZDAxMmM2ZmZiOTE0M2EzNjU4YzdmMjdmYWUwODU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTYwNSw2ICs1NjA1LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3Qs
IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQ
b2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0
YWJsZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmpl
Y3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KHdlYWtQb2ludGVyKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpLCBmYXN0T2JqZWN0LCBtX2hl
YXBzLkpTRnVuY3Rpb25fZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAK
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0T2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuaAppbmRleCA0MzljNGMy
MGFlN2E2NGFiOTMxMTMwNTU1N2M5ZDg4MGRmNWRkMmU5Li41ZjA5Y2I3NzI0MjM5YTNlYjllZDIy
NmUzMThkNWU2OWQ5ODE0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRy
eS5oCkBAIC0yOSw4ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBGVEwgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggNjIzNzhlZjQzNGZkZmQzYTQ4
NzUzZjI4NGI4NGI4M2JlNTQyZjFkMS4uZGFjM2RkNWRiZDllYmU3ODkxNGI1MTFiNzE5MmViOTQ3
MzVmMjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaApAQCAtMzgsNyArMzgsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAKaW5kZXggNTY4YmNhYmM2YjI5YjdlODQ2NDllODE2Y2U5NGE3MWMwM2Fk
Mzk2NC4uNzgxZTY2MjdhN2I5Y2I4NWIzZDJjOGM4N2Y5NDYxMDhjZjI1NWJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcApAQCAtMTA4LDE1ICsxMDgsMTYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VB
c3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwKICAgICBh
dXRvKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsK
ICAgICBKU0M6OlZNJiB2bSA9IHNjcmlwdFN0YXRlLT52bSgpOwogCi0gICAgSlNDOjpKU05hdGl2
ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uOwotCisgICAgSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9u
KiBqc0Z1bmN0aW9uID0gbnVsbHB0cjsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKIAotICAgICAgICBqc0Z1bmN0aW9uID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpj
cmVhdGUodm0sIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygp
LCBbJiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEpTQzo6RXhlY1N0YXRlKiBleGVj
KSB7Ci0gICAgICAgICAgICBpZiAoIWV4ZWMpCisgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIGpzRnVuY3Rpb24gPSBKU0M6
OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmco
KSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAgICAgICAgICAgaWYgKCFjYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgY2hlY2tBc3luY0NhbGxSZXN1bHQoSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIiksIGNhbGxiYWNrKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNPTlZhbHVlID0gdG9JbnNwZWN0b3JWYWx1ZSgq
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKQorICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZXN1
bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KHJlc3VsdEpT
T05WYWx1ZSwgY2FsbGJhY2spOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNo
ZWNrQXN5bmNDYWxsUmVzdWx0KEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygiT2JqZWN0
IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4gKG11c3Qgbm90IGJlIGxvbmdlciB0aGFuICIs
IEpTT046OlZhbHVlOjptYXhEZXB0aCwgJyknKSksIGNhbGxiYWNrKTsKQEAgLTEzMyw3ICsxMzQs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAg
IC8vIFNpbmNlIGBjYWxsYmFja2AgaXMgbW92ZWQgYWJvdmUsIHdlIGNhbid0IGNhbGwgaXQgaWYg
dGhlcmUncyBhbiBleGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvCiAgICAgICAgIC8vIGV4ZWN1dGUg
dGhlIGBKU05hdGl2ZVN0ZEZ1bmN0aW9uYCBpbnNpZGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMu
Ci0gICAgICAgIGpzRnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigp
KG51bGxwdHIpOworICAgICAgICBqc0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+
ZnVuY3Rpb24oKShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgKaW5kZXggN2UyMDM5OWM4YTczZjFiYThmOWQxNDBhNGU4NjA0NDg0MGY2Y2M5NS4uZGQzZjNk
NjgyZGY1MmVkZTExMzhhYjE1MGM4ZWUzNDcxMWI2NzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0z
OSw3ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGYwZmZjNDVkZDlmYTZjZGY2MTdmMDM4MWU0
NmY4ZGNlYmZlZjNjOGMuLjIzNzg3ZWE3YzkxYjEzOTNiN2E0OGFkMTUwMTQwMjU3M2E5MGEyNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzgsMTAgKzM4LDEx
IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBD
b25zb2xlQ2xpZW50OwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAppbmRleCAw
ZTFjZjhhOTk4YjY3NjQ5ODgwM2FjZmM0OGE1YTcwNTI1ZWM3ZGVhLi43Y2ZjZjg4NGUyYzE5OTEw
MWJkOWNkY2QwYjAxNjkyYTY0Zjc3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcApAQCAtMzgsMjQgKzM4LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uU3VidHlwZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklu
dGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRN
TEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVq
ZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvblByb3h5VGFyZ2V0VmFsdWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01h
cFNpemUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRl
cmF0b3JFbnRyaWVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SW5zdGFuY2Vz
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9sZGVycyhFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqKTsK
LQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmli
dXRlU2F2ZWRSZXN1bHRBbGlhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25E
ZXRhaWxzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uR2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0
aXZlR2V0dGVyVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0
dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0
dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpzX2luZm8gPSB7
ICJJbmplY3RlZFNjcmlwdEhvc3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlKSB9OwogCkBA
IC04NCwyMjUgKzg0LDIyNSBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEpTQ19OQVRJ
VkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigic2F2ZWRSZXN1bHRBbGlhcyIsIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcywgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUF0dHJpYnV0ZUV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1
YXRlKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1
YXRlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNhdmVkUmVzdWx0QWxpYXMoZXhlYykp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2F2ZWRSZXN1bHRBbGlh
cyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbnRlcm5hbENvbnN0
cnVjdG9yTmFtZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5pbnRlcm5hbENvbnN0cnVjdG9yTmFtZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNI
VE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xs
ZWN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+aXNIVE1MQWxsQ29sbGVjdGlvbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
aXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzUHJvbWlzZVJlamVjdGVkV2l0aE5h
dGl2ZUdldHRlclR5cGVFcnJvcihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJn
ZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdldFZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cHJveHlUYXJn
ZXRWYWx1ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5w
cm94eVRhcmdldFZhbHVlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBTaXplKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBTaXplKGNhbGxGcmFt
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25XZWFrTWFwRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVj
dGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlw
dEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGNhbGxGcmFtZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25XZWFrU2V0U2l6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndl
YWtTZXRTaXplKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PndlYWtTZXRTaXplKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRFbnRyaWVzKGV4ZWMp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRFbnRyaWVz
KGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPml0ZXJhdG9yRW50cmllcyhjYWxsRnJh
bWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uUXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmpl
Y3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5xdWVyeUluc3RhbmNlcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5xdWVyeUluc3RhbmNlcyhjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9s
ZGVycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnF1ZXJ5SG9sZGVycyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5xdWVyeUhvbGRlcnMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY2Fs
bEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uU3VidHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0
SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPnN1YnR5cGUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+c3VidHlwZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
IWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uRGV0YWlscyhl
eGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbkRl
dGFpbHMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5nZXRJbnRlcm5hbFBy
b3BlcnRpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGNhbGxGcmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAppbmRleCBiODk5MWNk
MmM3Y2I1MTVjNzEzMTA3Yjg5MmQ3ZWE2ZGI4Y2I1YzA0Li5mODg3ZWM3ODNlMDUxYWVlNzlhOTJk
MGQ5MjBiZDQ4NTcyOTMxMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
CkBAIC0zNywxOSArMzcsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiAvLyBGdW5jdGlvbnMuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0
aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uU2Nv
cGVEZXNjcmlwdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmli
dXRlcy4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENh
bGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZVNjb3BlQ2hhaW4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlVHlwZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVDYWxsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZVNvdXJjZUlEKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5lKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlVHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVs
ZXRlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlOjpzX2luZm8gPSB7ICJKYXZhU2NyaXB0Q2FsbEZy
YW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUpIH07CiAKQEAgLTcyLDE0NyArNzIsMTQ3
IEBAIHZvaWQgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9V
VF9UUkFOU0lUSU9OKCJpc1RhaWxEZWxldGVkIiwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWls
RGVsZXRlZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkFjY2Vzc29yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVh
dGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY2FsbEZyYW1lKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9u
U2NvcGVEZXNjcmlwdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGNhbGxGcmFtZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0
dHJpYnV0ZUNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y2FsbGVyKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihjYWxsRnJhbWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVB
dHRyaWJ1dGVTb3VyY2VJRChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zb3VyY2VJRChleGVj
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zb3VyY2VJRChjYWxs
RnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bGluZShleGVjKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5saW5lKGNhbGxGcmFtZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNvbHVtbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
ICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y29sdW1uKGV4ZWMpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVtbihjYWxsRnJhbWUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1
bmN0aW9uTmFtZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5mdW5jdGlvbk5hbWUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZVNjb3BlQ2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRD
YWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlQ2hhaW4oZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVDaGFpbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNK
YXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2Fz
dGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGhpc09iamVjdChleGVjKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50aGlzT2JqZWN0KGNhbGxGcmFt
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBlKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnR5cGUoY2FsbEZyYW1lKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNU
YWlsRGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoZXhlYykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXNUYWlsRGVsZXRlZChjYWxs
RnJhbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAppbmRleCA2MDdmZWFmYjIw
NjYzYjZjYzY4NGE1YjA4MzJjNGRkMGI0OTE4OTc1Li42MDJjOGJhNGM0ODk3YjllNmMyODBkZmJi
OTFlNzIzOTMwNGU2YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTM3LDggKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAppbmRleCA1NWNhNGQ1
NzhmMDM3YjQ0NzAwODE3N2ZkYzk1YmU3OGQxOWMyYzM3Li4yM2JiMjE1ZGIyY2QxNDkxZWZiMTJi
MjZlZGYxZGY1YTVkOGVkZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApAQCAtMzUsOSArMzUsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIENhbGxG
cmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTVmFsdWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5oCmluZGV4IDFlZWI0ZjhhOGM2NTMyNzUwZDhlMmY5MzNhYTYwNDYwNTIwYWUxNDEuLjdl
YTJmOWMyZjUzNDRhNWQ3ODBlM2E1MDc4MDVkOTdiZTZkYTRiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTM4LDkg
KzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IGM4NTdj
ZGRmZWJkNzcxMzNkOTMyMWQwYmNmYWM5N2YwYTEyMjM4ZTcuLmJiZjE4YjU1NWZmODNmMmRkZDQy
M2YwYmE1NWY2ZmZjYWFiYzE5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC0z
Niw3ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAppbmRleCA0ODMyZDZkZTgy
NTM4NTZjZGIwZTUxMjU0MzlhOWY5Nzk0NmQ4ZjY4Li40MzU1YjIzNTRjYzQ5NjA5OWM4ZGI1MmEz
MmM2Nzg1ODU3OWVhMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQWJzdHJhY3RQQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9BYnN0cmFjdFBDLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwotY2xhc3MgRXhlY1N0YXRlOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCiBjbGFzcyBBYnN0cmFjdFBD
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAppbmRl
eCBkZDIwMGUxYTM1MTA3MzEyZDFkMDVlMjUyMjI0MzM3NWE0OTQ1MjgxLi5kMDBjM2M5YjgyNzdj
NmI3ODQ1YmQ1M2ZjMjRmZTA3YzE3MjBjNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlND
ICB7CiAKICAgICBjbGFzcyBBcmd1bWVudHM7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNs
YXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0NhbGxl
ZTsKICAgICBjbGFzcyBKU1Njb3BlOwpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDICB7
CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKLSAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxs
RnJhbWU7CisgICAgdXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAgICAgY2xhc3MgQ2Fs
bFNpdGVJbmRleCB7CiAgICAgcHVibGljOgpAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgSlND
ICB7CiAKICAgICAvLyBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHNjcmlwdCBleGVj
dXRpb24uCiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBtb3N0IGZ1bmN0
aW9ucy4KLSAgICBjbGFzcyBFeGVjU3RhdGUgOiBwcml2YXRlIFJlZ2lzdGVyIHsKKyAgICBjbGFz
cyBDYWxsRnJhbWUgOiBwcml2YXRlIFJlZ2lzdGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgaGVhZGVyU2l6ZUluUmVnaXN0ZXJzID0gQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCArIDE7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAg
ICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxsZXJGcmFt
ZUFuZFBDKCkuY2FsbGVyRnJhbWUgPSBmcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlKGlu
dCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKiBzY29wZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW3Njb3BlUmVnaXN0ZXJPZmZzZXRdID0gc2NvcGU7IH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBpbml0R2xvYmFsRXhlYyhFeGVjU3RhdGUqIGdsb2JhbEV4ZWMsIEpTQ2FsbGVl
KiBnbG9iYWxDYWxsZWUpOworICAgICAgICBzdGF0aWMgdm9pZCBpbml0R2xvYmFsRXhlYyhDYWxs
RnJhbWUqIGdsb2JhbEV4ZWMsIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUpOwogCiAgICAgICAgIC8v
IFJlYWQgYSByZWdpc3RlciBmcm9tIHRoZSBjb2RlZnJhbWUgKG9yIGNvbnN0YW50IGZyb20gdGhl
IENvZGVCbG9jaykuCiAgICAgICAgIFJlZ2lzdGVyJiByKGludCk7CkBAIC0zMDMsOCArMzAzLDgg
QEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgcHJpdmF0ZToKIAotICAgICAgICBFeGVjU3RhdGUo
KTsKLSAgICAgICAgfkV4ZWNTdGF0ZSgpOworICAgICAgICBDYWxsRnJhbWUoKTsKKyAgICAgICAg
fkNhbGxGcmFtZSgpOwogCiAgICAgICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1lSW50ZXJuYWwoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggNWRmMDQ4Yzk5Nzc4M2FhNGQ3MTliMmQ3MzQyY2M3MmU1ZmRmN2E1My4uYjYwMWRj
ZjcwM2NkOWVhNGEzYjUzZTg4YmVkOGIzYzUyZDQ1YTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC04MzgsNyArODM4LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDYWxsRnJhbWUqIGNhbGxGcmEKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAKICAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9j
aywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzY29wZSksIHRoaXNPYmosIDEp
OworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIEpTQ2Fs
bGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKIAogICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CkBAIC04OTQs
NyArODk0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKICAgICB9CiAKICAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVC
bG9jaywgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICB7CkBAIC05NjUsNyArOTY1LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVj
dXRlQ29uc3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogY29uc3RydWMKICAg
ICB9CiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxG
cmFtZS5pbml0KG5ld0NvZGVCbG9jaywgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50
LCBhcmdzLmRhdGEoKSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEo
KSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICB7CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBD
YWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwogCi0gICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29kZUJs
b2NrLCBmdW5jdGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7Cisg
ICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCksIGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsK
ICAgICAvLyBSZXR1cm4gdGhlIHN1Y2Nlc3NmdWwgY2xvc3VyZToKICAgICBDYWxsRnJhbWVDbG9z
dXJlIHJlc3VsdCA9IHsgY2FsbEZyYW1lLCBwcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgJnZtLCBzY29wZSwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH07CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEx
NDksOCArMTE0OSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFi
bGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAKICAgICBBU1NFUlQoY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycu
CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxP
YmplY3Qodm0pLCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5p
dChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgog
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwpAQCAtMTE5OSw4ICsxMjAwLDkgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEMKICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlz
IGB1bmRlZmluZWRgLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGlu
ZwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBQ
cm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNv
ZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCh2bSksIHNj
b3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzY29w
ZSksIGpzVW5kZWZpbmVkKCksIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggNTNlOThjNjBmM2M2ZGE3ZTU5Nzc1NGQxMGM0
ZTNhZmM0NjQzNDcyYS4uN2RiYzUxYzE2OWRjZDBjMjE2OTEwMmU3NzE2OWE0Mzg3Njk3ZGE2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZy
YW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZy
YW1lLmgKQEAgLTQ1LDE0ICs0NSwyMiBAQCBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9D
YWxsRnJhbWUgewogICAgIHVpbnQzMl90IHBhZGRlZEFyZ0NvdW50OwogICAgIGJvb2wgaGFzQXJp
dHlNaXNtYXRjaDsKICAgICBKU1ZhbHVlICphcmdzOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3Q7CiAKLSAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBKU1ZhbHVl
LCBpbnQsIEpTVmFsdWUqIG90aGVyQXJncyA9IDApOworICAgIHZvaWQgaW5pdChDb2RlQmxvY2sq
LCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBKU1ZhbHVlKiBvdGhl
ckFyZ3MgPSAwKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
Y29kZUJsb2NrVmFsdWUuUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9CiAgICAgdm9pZCBzZXRDb2Rl
QmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsgY29kZUJsb2NrVmFsdWUgPSBjb2RlQmxvY2s7
IH0KIAogICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBjYWxsZWVWYWx1ZS5S
ZWdpc3Rlcjo6b2JqZWN0KCk7IH0KLSAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVl
KSB7IGNhbGxlZVZhbHVlID0gY2FsbGVlOyB9CisgICAgdm9pZCBzZXRDYWxsZWUoSlNPYmplY3Qq
IGNhbGxlZSkKKyAgICB7CisgICAgICAgIGNhbGxlZVZhbHVlID0gY2FsbGVlOworICAgIH0KKyAg
ICB2b2lkIHNldEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0ID0gb2JqZWN0OworICAgIH0KIAogICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZh
bHVlLnBheWxvYWQoKTsgfQogICAgIGludCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KQEAgLTc4LDExICs4NiwxMiBAQCBz
dHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxsRnJhbWUgewogICAgIH0KIH07CiAKLWlu
bGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBKU09i
amVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhp
cywgSlNWYWx1ZSogb3RoZXJBcmdzKQoraW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlz
LCBKU1ZhbHVlKiBvdGhlckFyZ3MpCiB7CiAgICAgdGhpcy0+YXJncyA9IG90aGVyQXJnczsKICAg
ICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKICAgICB0aGlzLT5zZXRDYWxsZWUoY2Fs
bGVlKTsKKyAgICB0aGlzLT5zZXRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICB0aGlz
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwog
ICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpCiAgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2ggPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAppbmRleCA2MDM4
OWI0YmE3ZTU2MGNlNzdmODJhYWRiOGMzMzAzZTQ5NjZjYzI2Li45ZGQzYWNlNThkMDJlYmJhY2Ew
NDhhZGQ0NGYyMWQ4YzJiM2Y3MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXIuaApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIENvZGVCbG9jazsKLSAgICBjbGFzcyBF
eGVjU3RhdGU7CiAgICAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNP
YmplY3Q7CiAgICAgY2xhc3MgSlNTY29wZTsKIAotICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxG
cmFtZTsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKICAgICBjbGFzcyBSZWdp
c3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmgKaW5kZXggODRiNTJlODAy
ZTFhYmZhNzA2YTJlODdmYTE2MzQxNmRmMGIwZjgwZC4uMjA4ODBhNjNjOTc0NWM5ZWViZWRiYTQy
Yjg5M2IwN2NlZGJkMGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1NoYWRvd0NoaWNrZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU2hhZG93Q2hpY2tlbi5oCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKU0FycmF5OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Njb3BlOwpAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBTbG90VmlzaXRv
cjsKIGNsYXNzIFZNOwogCi10eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIFNoYWRvd0NoaWNrZW4gaXMgYSBsb2cgdGhhdCBjYW4g
YmUgdXNlZCB0byBwcm9kdWNlIGEgc2hhZG93IHN0YWNrIG9mIENISUNLRU4tc3R5bGUgc3RhY2sg
ZnJhbWVzLgogLy8gVGhpcyBlbmFibGVzIHRoZSBkZWJ1Z2dlciB0byBhbG1vc3QgYWx3YXlzIHNl
ZSB0aGUgdGFpbC1kZWxldGVkIHN0YWNrIGZyYW1lcywgc28gbG9uZyBhcyB3ZSBoYXZlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKaW5kZXgg
Njg2ODMyZjNiMjk2MzY1NjBhOTc3Y2NmMDg1MTdhNjM1YTJkMjNhNC4uYTM0MWI3YTlkNWNjNzkx
NTc0ZGNlYTYwZWE4NWUzNjNmNTljYWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtMzYsMTYgKzM2LDE2IEBAIG5hbWVzcGFj
ZSBKU0Mgewogc3RydWN0IEVudHJ5RnJhbWU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogCitj
bGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlT3JpZ2luOwotY2xh
c3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNGdW5jdGlvbjsKIGNsYXNzIENs
b25lZEFyZ3VtZW50czsKIGNsYXNzIFJlZ2lzdGVyOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExp
c3Q7CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIAogY2xhc3MgU3RhY2tWaXNpdG9yIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCmluZGV4IDY3MjE4OGU4
OTBiMDk0MjkxNDVkODRlMTQxNWJkYjMwNTFhMTM5MWUuLmJlN2JmODg5ODc5ZDk1NWQ4ZjQ0ODZk
ODM0MTEwMTk2NmNhY2FiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9WTUVudHJ5UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1ZNRW50cnlSZWNvcmQuaApAQCAtMzAsNyArMzAsOCBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFZNOwogCkBA
IC00MCw3ICs0MSw3IEBAIHN0cnVjdCBWTUVudHJ5UmVjb3JkIHsKICAgICAgKiBhZnRlciBjYWxs
ZWUgc2F2ZSByZWdpc3RlcnMgd2hlcmUgbG9jYWwgdmFyaWFibGVzIHdvdWxkIGdvLgogICAgICAq
LwogICAgIFZNKiBtX3ZtOwotICAgIEV4ZWNTdGF0ZSogbV9wcmV2VG9wQ2FsbEZyYW1lOworICAg
IENhbGxGcmFtZSogbV9wcmV2VG9wQ2FsbEZyYW1lOwogICAgIEVudHJ5RnJhbWUqIG1fcHJldlRv
cEVudHJ5RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fY2FsbGVlOwogCkBAIC01Miw4ICs1Myw4IEBA
IHN0cnVjdCBWTUVudHJ5UmVjb3JkIHsKICAgICBDUFVSZWdpc3RlciBjYWxsZWVTYXZlUmVnaXN0
ZXJzQnVmZmVyWzFdOwogI2VuZGlmCiAKLSAgICBFeGVjU3RhdGUqIHByZXZUb3BDYWxsRnJhbWUo
KSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KLSAgICBTVVBQUkVTU19BU0FOIEV4ZWNT
dGF0ZSogdW5zYWZlUHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcENhbGxGcmFt
ZTsgfQorICAgIENhbGxGcmFtZSogcHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRv
cENhbGxGcmFtZTsgfQorICAgIFNVUFBSRVNTX0FTQU4gQ2FsbEZyYW1lKiB1bnNhZmVQcmV2VG9w
Q2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CiAKICAgICBFbnRyeUZy
YW1lKiBwcmV2VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcEVudHJ5RnJhbWU7IH0K
ICAgICBTVVBQUkVTU19BU0FOIEVudHJ5RnJhbWUqIHVuc2FmZVByZXZUb3BFbnRyeUZyYW1lKCkg
eyByZXR1cm4gbV9wcmV2VG9wRW50cnlGcmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgKaW5kZXggYmU5YzEzMDg1ZDI5NzUyMjlmYTVkOGY3ZGVlNjkyMWVjNjE3
NGU0YS4uYzBkNDJiYzc5NmRhNmQ3NDhhNGMxNDliZGM4MGM5YWQ5NWZjZjc1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC00MSw4ICs0MSw5IEBAIG5hbWVz
cGFjZSBKU0MgewogI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCiAjZW5kaWYKIAotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgU3RydWN0dXJlOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBSZWdpc3RlcmVk
U3RydWN0dXJlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgK
aW5kZXggZTVkMjlmOWI0M2VmOTU5ZDcyNjc0NTMwZWI2ZWFjOWMzMGM3ZWI0MS4uZDA5MTcyMzhk
ZWRiYTAyZmNkNjcyNjJmMTI1OTg1NDRiNjMyZTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmgKQEAgLTI3LDggKzI3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiB2b2lkIGdlbmVyaWNVbndpbmQoVk0mLCBFeGVjU3Rh
dGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNjU2ZTdkZDg2YWIyM2M5NjhmZTliNzgxZWRhYWM0YTVhNWZiYmQyYS4uNjM5NDYzYzk5ZTlm
ZGJiNDc4OTBlZjY0OTBjOGIyYjFiNWVlZjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05ODcsNyArOTg3LDcgQEAgc3RhdGljIFNsb3dQYXRo
UmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUg
Y2FsbGVlLAogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKICAgICAg
ICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAg
ICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAg
ICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmpl
Y3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0
clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLAogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6
Okhvc3QpIHsKICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0Nh
bGxlZSk7CiAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsK
LSAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIHZtLmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRh
Zz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCBkMjUzMjMxNGFmNzNkOTI1ODA4NDEyMGY2YTVlNDk0MTdmZWNlZTZi
Li45ZGI2NzM0MTkyM2RkZTExNTIyNGUyMGZkNWM4MDVhN2NkNzhiMjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzksOSArMzksOSBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9maWxlOwog
Y2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgQnV0dGVyZmx5OworY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgRXhlY1N0YXRlOwog
Y2xhc3MgSlNBcnJheTsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTRnVuY3Rpb247CkBAIC02Niw3
ICs2Niw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBz
dHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7Cit1c2lu
ZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGV4dGVybiAiQyIgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMDhjZDFkMGVjZjgwNDg2
YTAwNzQ2ZjNhYTZhODU1N2Y1ZDY0MzFkMi4uM2JiNzM5Y2UxMzhhZDdkZWNlNDY1MTY3ZGI1NGIy
M2VjMmYwMjFmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcApAQCAtMjcxLDMyICsyNzEsMzkgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwgVGh1bmtGdW4KICNp
ZiBDUFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQogICAgIC8vIENhbGxpbmcgY29udmVudGlv
bjogICAgICBmKGVkaSwgZXNpLCBlZHgsIGVjeCwgLi4uKTsKLSAgICAvLyBIb3N0IGZ1bmN0aW9u
IHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWRpKTsKKyAgICAvLyBIb3N0IGZ1bmN0
aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplc2kp
OwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplc2kpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWRpKTsKICAg
ICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24p
IHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0
ZXJzOjplc2ksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJz
OjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJl
Z2lzdGVyczo6ZWRpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lz
dGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhY
ODZSZWdpc3RlcnM6OmVkaSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4
NlJlZ2lzdGVyczo6ZWRpKTsKICAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFk
ZHJlc3MoWDg2UmVnaXN0ZXJzOjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBYODZS
ZWdpc3RlcnM6OnI5KTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplc2ksIEludGVybmFsRnVuY3Rpb246Om9mZnNl
dE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICB9IGVs
c2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdp
c3RlcnM6OmVkaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihr
aW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWRpKTsKKyAgICB9CiAgICAgaml0LmNh
bGwoWDg2UmVnaXN0ZXJzOjpyOSwgSlNFbnRyeVB0clRhZyk7CiAKICNlbHNlCiAgICAgLy8gQ2Fs
bGluZyBjb252ZW50aW9uOiAgICAgIGYoZWN4LCBlZHgsIHI4LCByOSwgLi4uKTsKLSAgICAvLyBI
b3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKLSAgICBqaXQubW92ZShKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWN4KTsKKyAgICAv
LyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgWDg2UmVn
aXN0ZXJzOjplZHgpOwogCiAgICAgLy8gTGVhdmUgc3BhY2UgZm9yIHRoZSBjYWxsZWUgcGFyYW1l
dGVyIGhvbWUgYWRkcmVzc2VzLgogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHN0YWNrIGlzIGFs
aWduZWQgdG8gMTYgYnl0ZXMsIGJ1dCBpZiB0aGlzIGNoYW5nZXMgYXQgc29tZSBwb2ludCwgd2Ug
bmVlZCB0byBlbWl0IGNvZGUgdG8gYWxpZ24gaXQuCiAgICAgaml0LnN1YlB0cihKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJVDo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplZHgpOworICAgIGpp
dC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4
NlJlZ2lzdGVyczo6ZWN4KTsKICAgICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5j
dGlvblR5cGU6OkpTRnVuY3Rpb24pIHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VK
SVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZHgsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Ci0gICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
KSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5jYWxsKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZz
ZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7CisgICAgICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAg
ICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWN4KTsK
KyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJz
OjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhY
ODZSZWdpc3RlcnM6OmVjeCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlv
bkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCwgSW50ZXJuYWxGdW5jdGlvbjo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWN4KTsKKyAgICB9CisgICAg
aml0LmNhbGwoWDg2UmVnaXN0ZXJzOjpyOSwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBqaXQuYWRk
UHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoNCAqIHNpemVvZihpbnQ2NF90KSksIEpT
SW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAjZW5kaWYKQEAgLTMwNiwxNSAr
MzEzLDE4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5h
dGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAgICAgQ09NUElMRV9BU1NFUlQoQVJN
NjRSZWdpc3RlcnM6OngxICE9IEpTSW50ZXJmYWNlSklUOjpyZWdUMywgVDNfbm90X3RyYW1wbGVk
X2J5X2FyZ18xKTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6eDIgIT0gSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QzLCBUM19ub3RfdHJhbXBsZWRfYnlfYXJnXzIpOwogCi0gICAgLy8g
SG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7Ci0gICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6eDApOworICAg
IC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBBUk02
NFJlZ2lzdGVyczo6eDEpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6OngxKTsKKyAgICBqaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBBUk02NFJl
Z2lzdGVyczo6eDApOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9u
VHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZSgpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4
ZWN1dGFibGUoKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CisgICAgICAgIGppdC5sb2FkUHRyKEpT
SW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CiAgICAgICAgIGppdC5s
b2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MiwgZXhlY3V0
YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBBUk02NFJlZ2lzdGVyczo6eDIpOwotICAgIH0gZWxzZQot
ICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVy
czo6eDEsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkp
LCBBUk02NFJlZ2lzdGVyczo6eDIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5sb2FkUHRy
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwgSW50ZXJuYWxGdW5j
dGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEFSTTY0UmVnaXN0ZXJzOjp4
Mik7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVn
aXN0ZXJzOjp4MCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIEFS
TTY0UmVnaXN0ZXJzOjp4MCk7CisgICAgfQogICAgIGppdC5jYWxsKEFSTTY0UmVnaXN0ZXJzOjp4
MiwgSlNFbnRyeVB0clRhZyk7CiAKICNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykK
QEAgLTMyMywxNiArMzMzLDIzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAgICAgaml0LnN1
YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDE2KSwgSlNJbnRlcmZhY2VKSVQ6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogCisgICAgc3RhdGljX2Fzc2VydChKU0ludGVy
ZmFjZUpJVDo6cmVnVDIgIT0gSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CisKICAgICAv
LyBDYWxsaW5nIGNvbnZlbnRpb24gaXMgZihhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwgLi4u
KS4KLSAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBmKEV4ZWNTdGF0ZSopLgotICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VK
SVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwogCi0gICAg
aml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwg
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgaWYgKHRodW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBl
OjpKU0Z1bmN0aW9uKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhl
Y3V0YWJsZSgpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKLSAgICAgICAgaml0LmNhbGwoSlNJ
bnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyLCBleGVjdXRhYmxlT2Zm
c2V0VG9GdW5jdGlvbiksIEpTRW50cnlQdHJUYWcpOwotICAgIH0gZWxzZQotICAgICAgICBqaXQu
Y2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIx
LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNF
bnRyeVB0clRhZyk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZSgpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJ
bnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjApOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVy
ZmFjZUpJVDo6cmVnVDIsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBJbnRlcm5hbEZ1bmN0
aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRl
cmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIGpp
dC5jYWxsKEpTSW50ZXJmYWNlSklUOjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CiAKICNpZiBDUFUo
TUlQUykKICAgICAvLyBSZXN0b3JlIHN0YWNrIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGNiNGFiYWZlNDE5MTZiMTE4NzE2MDBiYjEyNmM3ZTA1OGE3MDA3MWQuLjAyNGE4M2VkMjVmNzQ0
OGM2MDQzODk1NDM0ODVjZWQxMWNjNWYxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOTQs
MTAzICsyOTQsMTAyIEBAIGNsYXNzIFdvcmtlcnMgewogfTsKIAogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUq
KTsKLQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0
ZE91dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUHJpbnRTdGRFcnIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRlYnVnKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBT
ZWNvbmRzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25KU0NTdGFjayhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdDKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVNZW1vcnlGb290cHJpbnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9u
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SdW4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFN0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SZWFkbGluZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZU
TChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTm9PU1JFeGl0RnV6emluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdD
b21waWxlcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0aW9ucyhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9jayhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBOT19SRVRVUk5fV0lUSF9WQUxVRSBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFsc2UoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDEoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
SW50MzIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklzUHVyZU5hTihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0ZnVsNDIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklkZW50aXR5KEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkhhc0N1c3RvbVByb3BlcnRpZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNy
b3Rhc2tzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50
YXgoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hv
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2luZyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJT
dGF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmludFN0ZE91dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZEVycihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EZWJ1ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EZXNjcmliZUFycmF5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25KU0NTdGFjayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkZ1bGxHQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSGVhcFNpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTG9hZFN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DaGVja1N5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25QcmVjaXNlVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbk5vREZHKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk5vT1NSRXhpdEZ1enppbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2Nh
dGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNhbGxlcklzT01HQ29tcGlsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlvblJldHJ5Q291bnQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
VHJhbnNmZXJBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9j
ayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIE5PX1JFVFVSTl9XSVRIX1ZB
TFVFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkZhbHNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDEoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uVW5kZWZpbmVkMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bklzUHVyZU5hTihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25JZGVudGl0eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JB
bGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxh
dGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVI
ZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0Rl
YnVnZ2luZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW1wbGluZ1Byb2Zp
bGVyU3RhY2tUcmFjZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
YW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
ICNlbmRpZgogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1h
eEFyZ3VtZW50cyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3NlZChFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5j
VGVzdFBhc3NlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25X
ZWJBc3NlbWJseU1lbW9yeU1vZGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxh
Z3MoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DbGVhclNhbXBsaW5nRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRp
ZgogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRv
bVNlZWQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNldFJhbmRvbVNlZWQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJD
cmVhdGVSZWFsbShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyRGV0YWNoQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRv
bGxhckFnZW50U3RhcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRS
ZXBvcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRvbGxhckFnZW50U2xlZXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dEdldFJlcG9ydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
V2FpdEZvclJlcG9ydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSGVhcENhcGFjaXR5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNo
U291cmNlSW5mbyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShFeGVjU3RhdGUqKTsK
LQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRs
ZWRSZWplY3Rpb25DYWxsYmFjayhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRS
YW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxs
ZXJTb3VyY2VPcmlnaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJB
Z2VudFNsZWVwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50TGVhdmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0
eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlz
YWJsZVJpY2hTb3VyY2VJbmZvKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0
cnVjdCBTY3JpcHQgewogICAgIGVudW0gY2xhc3MgU3RyaWN0TW9kZSB7CkBAIC02MTksNyArNjE4
LDcgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAg
ICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJDI2MiIpLCBkb2xs
YXIpOwogICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNyZWF0ZVJl
YWxtIiwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbSwgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCBkb2xsYXIsICJkZXRhY2hBcnJheUJ1ZmZlciIsIGZ1bmN0aW9uRG9sbGFyRGV0YWNoQXJy
YXlCdWZmZXIsIDEpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZGV0YWNoQXJy
YXlCdWZmZXIiLCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIsIDEpOwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgZG9sbGFyLCAiZXZhbFNjcmlwdCIsIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlw
dCwgMSk7CiAgICAgICAgIAogICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbCIpLCB0aGlzKTsKQEAgLTEyNzQsNDcgKzEyNzMsNDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByaW50SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBG
SUxFKiBvdXQpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEV4ZWNT
dGF0ZSogZXhlYykgeyByZXR1cm4gcHJpbnRJbnRlcm5hbChleGVjLCBzdGRvdXQpOyB9Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRFcnIoRXhlY1N0YXRlKiBl
eGVjKSB7IHJldHVybiBwcmludEludGVybmFsKGV4ZWMsIHN0ZGVycik7IH0KK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZE91dChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBwcmludEludGVybmFsKGNhbGxGcmFtZSwgc3Rk
b3V0KTsgfQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIHByaW50SW50
ZXJuYWwoY2FsbEZyYW1lLCBzdGRlcnIpOyB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGVidWcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmll
d1dpdGhTdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSkt
PnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gc3RyaW5nID0gY1N0cmlu
Z0Zyb21WaWV3V2l0aFN0cmluZyhleGVjLCBzY29wZSwgdmlld1dpdGhTdHJpbmcpOworICAgIGF1
dG8gc3RyaW5nID0gY1N0cmluZ0Zyb21WaWV3V2l0aFN0cmluZyhjYWxsRnJhbWUsIHNjb3BlLCB2
aWV3V2l0aFN0cmluZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgZnByaW50ZihzdGRlcnIsICItLT4gJXNcbiIsIHN0cmluZy5kYXRhKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB0b1N0cmluZyhleGVj
LT5hcmd1bWVudCgwKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCB0b1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICI8bm90IG9iamVjdD4iX3MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgdG9TdHJpbmcoIjxCdXR0ZXJmbHk6ICIsIFJhd1BvaW50ZXIob2JqZWN0
LT5idXR0ZXJmbHkoKSksICI7IHB1YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5n
dGgoKSwgIjsgdmVjdG9yIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4i
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNv
bmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25TbGVlcFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIFNlY29u
ZHMgc2Vjb25kcyA9IFNlY29uZHMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwor
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIFNlY29u
ZHMgc2Vjb25kcyA9IFNlY29uZHMoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxs
RnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgICAgIHNsZWVwKHNlY29uZHMpOwogICAgIH0KQEAgLTEzMzksNDQgKzEzMzgs
NDQgQEAgY2xhc3MgRnVuY3Rpb25KU0NTdGFja0Z1bmN0b3IgewogICAgIFN0cmluZ0J1aWxkZXIm
IG1fdHJhY2U7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlND
U3RhY2soRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkpTQ1N0YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciB0cmFjZTsKICAgICB0cmFjZS5hcHBlbmRMaXRlcmFsKCItLT4gU3Rh
Y2sgdHJhY2U6XG4iKTsKIAogICAgIEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9yIGZ1bmN0b3IodHJh
Y2UpOwotICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRl
KGZ1bmN0b3IpOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCB0cmFjZS50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0Fu
ZFN3ZWVwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHZtLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIodm0uaGVhcC5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CiAgICAgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC5zaXplQWZ0ZXJMYXN0RnVs
bENvbGxlY3Rpb24oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25FZGVuR0MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgdm0uaGVhcC5jb2xsZWN0U3lu
YyhDb2xsZWN0aW9uU2NvcGU6OkVkZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodm0uaGVhcC5zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC5z
aXplKCkpKTsKIH0KQEAgLTE0MjcsMTQgKzE0MjYsMTQgQEAgY2xhc3MgSlNDTWVtb3J5Rm9vdHBy
aW50IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
Q01lbW9yeUZvb3RwcmludDo6c19pbmZvID0geyAiTWVtb3J5Rm9vdHByaW50IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NNZW1vcnlGb290
cHJpbnQpIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVN
ZW1vcnlGb290cHJpbnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZU1lbW9yeUZvb3RwcmludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQ01lbW9yeUZvb3RwcmludDo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQ01lbW9yeUZvb3RwcmludDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhFeGVjU3Rh
dGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVh
ayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgTWVtb3J5Rm9vdHByaW50Ojpy
ZXNldFBlYWsoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMTQ0Myw5ICsxNDQyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlc2V0TWVtb3J5UGVhayhFeGVjU3RhdGUqKQogLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgZ2Vu
ZXJhbGx5IHZlcnkgaGVscGZ1bCBpbiA2NC1iaXQgY29kZSBhcyB0aGUgdGFnIGFuZCBwYXlsb2Fk
CiAvLyBzaGFyZSBhIHJlZ2lzdGVyLiBCdXQgaW4gMzItYml0IEpJVGVkIGNvZGUgdGhlIHRhZyBt
YXkgbm90IGJlIGNoZWNrZWQgaWYgYW4KIC8vIG9wdGltaXphdGlvbiByZW1vdmVzIHR5cGUgY2hl
Y2tpbmcgcmVxdWlyZW1lbnRzLCBzdWNoIGFzIGluID09PS4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJlc3NPZihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAo
IXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIC8vIE5lZWQgdG8gY2FzdCB0byB1aW50NjRfdCBzbyBiaXR3aXNlX2Nhc3Qg
d2lsbCBwbGF5IGFsb25nLgpAQCAtMTQ1NCwxNTYgKzE0NTMsMTUxIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2YoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblZlcnNpb24oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25WZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICAvLyBXZSBu
ZWVkIHRoaXMgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgTW96aWxsYSBKUyB0
ZXN0cyBidXQgZm9yIG5vdwogICAgIC8vIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueSB2ZXJzaW9u
LXNwZWNpZmljIGhhbmRsaW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBm
aWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmlu
ZyBmaWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxl
U3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90
IG9wZW4gZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291bGQg
bm90IG9wZW4gZmlsZS4iX3MpKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIHJlYWxt
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKKyAg
ICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkocmVhbG0tPmdsb2JhbEV4ZWMo
KSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAg
ICBhcnJheS0+cHV0RGlyZWN0SW5kZXgocmVhbG0tPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXkp
OworICAgIHJlYWxtLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
cmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKLSAgICBl
dmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgU291
cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFtZSksIEpTVmFsdWUo
KSwgZXhjZXB0aW9uKTsKKyAgICBldmFsdWF0ZShyZWFsbS0+Z2xvYmFsRXhlYygpLCBqc2NTb3Vy
Y2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVO
YW1lKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBzY29wZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
cmVhbG0tPmdsb2JhbEV4ZWMoKSwgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcg
c291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5n
IHNvdXJjZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEds
b2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+
KCkpOworICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwg
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSk7CiAKLSAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIDApOworICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0
RW1wdHlBcnJheShyZWFsbS0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgYXJyYXktPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChyZWFs
bS0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIH0KLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgcmVhbG0tPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBldmFsdWF0ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2lu
KCkpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CisgICAgZXZhbHVhdGUocmVhbG0tPmdsb2JhbEV4
ZWMoKSwganNjU291cmNlKHNvdXJjZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSks
IEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAg
c2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlv
bik7CisgICAgICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKHJlYWxtLT5nbG9iYWxFeGVjKCksIGV4
Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfQogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlYWxtKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAg
ICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3Bl
LCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9u
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGpzY1NvdXJjZShzY3JpcHQsIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFt
ZSkgfSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxv
YWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkxvYWRTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNlQ29kZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJT
b3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291
cmNlKHNvdXJjZUNvZGUsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVl
KCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQot
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7
CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGV2YWx1YXRpb25FeGNl
cHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5h
bWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBib29s
IGlzQmluYXJ5ID0gZmFsc2U7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVj
KTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPiAxKSB7CisgICAgICAgIFN0
cmluZyB0eXBlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhjYWxsRnJhbWUp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgaWYgKHR5cGUgIT0gImJpbmFyeSIpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCAiRXhwZWN0ZWQgJ2JpbmFyeScgYXMgc2Vjb25kIGFyZ3VtZW50
LiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
RXhwZWN0ZWQgJ2JpbmFyeScgYXMgc2Vjb25kIGFyZ3VtZW50LiIpOwogICAgICAgICBpc0JpbmFy
eSA9IHRydWU7CiAgICAgfQogCiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnRlbnQgPSBmaWxs
QnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lKTsKICAgICBpZiAoIWNvbnRlbnQpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJDb3VsZCBub3Qgb3BlbiBm
aWxlLiIpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpOwogCiAgICAgaWYgKCFpc0JpbmFyeSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPmxlbmd0aCgpKSkpOwogCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnR5cGVk
QXJyYXlTdHJ1Y3R1cmUoVHlwZVVpbnQ4KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShUeXBlVWludDgpOwogICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBKU1VpbnQ4QXJyYXk6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGNv
bnRlbnQpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5h
bWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmls
ZU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVj
dG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3Rl
bShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVu
IGZpbGUuIl9zKSkpOwotCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAg
ICAgc3RvcFdhdGNoLnN0YXJ0KCk7CkBAIC0xNjEzLDI1ICsxNjA3LDI1IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgpCi0gICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBzeW50YXhFeGNlcHRpb24pOworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBzeW50YXhFeGNlcHRpb24pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9
CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICB1bnNpZ25lZCBmbGFnID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVy
KGV4ZWMpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoY2FsbEZyYW1l
KSk7CiAgICAgICAgIGlmICgoZmxhZyA+PSAxKSAmJiAoZmxhZyA8PSAzMikpCiAgICAgICAgICAg
ICBTYW1wbGluZ0ZsYWdzOjpzZXRGbGFnKGZsYWcpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWcgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIo
ZXhlYykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKTsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUp
KTsKICAgICAgICAgaWYgKChmbGFnID49IDEpICYmIChmbGFnIDw9IDMyKSkKICAgICAgICAgICAg
IFNhbXBsaW5nRmxhZ3M6OmNsZWFyRmxhZyhmbGFnKTsKICAgICB9CkBAIC0xNjM5LDQwICsxNjMz
LDQwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5n
RmxhZ3MoRXhlY1N0YXRlKiBleGVjKQogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZXRSYW5kb21TZWVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYWtSYW5kb20oKS5zZWVk
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbE9iamVjdC0+
d2Vha1JhbmRvbSgpLnNlZWQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uU2V0UmFuZG9tU2VlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB1bnNpZ25lZCBzZWVkID0gZXhlYy0+YXJndW1l
bnQoMCkudG9VSW50MzIoZXhlYyk7CisgICAgdW5zaWduZWQgc2VlZCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PndlYWtSYW5kb20oKS5zZXRTZWVkKHNlZWQpOworICAgIGdsb2JhbE9iamVjdC0+d2Vha1JhbmRv
bSgpLnNldFNlZWQoc2VlZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNS
b3BlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1
ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICBjb25z
dCBTdHJpbmdJbXBsKiBpbXBsID0gYXNTdHJpbmcoYXJndW1lbnQpLT50cnlHZXRWYWx1ZUltcGwo
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighaW1wbCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2Fs
bGVyU291cmNlT3JpZ2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBzdGF0ZS0+Y2Fs
bGVyU291cmNlT3JpZ2luKCk7CisgICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGNhbGxG
cmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7CiAgICAgaWYgKHNvdXJjZU9yaWdpbi5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhzdGF0ZS0+dm0oKSwgc291cmNlT3JpZ2luLnN0cmlu
ZygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3Qt
PnZtKCksIHNvdXJjZU9yaWdpbi5zdHJpbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVmVjdG9yPGNoYXIsIDI1Nj4gbGluZTsKICAgICBp
bnQgYzsKQEAgLTE2ODMsNjEgKzE2NzcsNjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlYWRsaW5lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgbGluZS5hcHBlbmQo
Yyk7CiAgICAgfQogICAgIGxpbmUuYXBwZW5kKCdcMCcpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwgbGluZS5kYXRhKCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgbGluZS5kYXRhKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEV4
ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRp
bWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2ZXJJbmxp
bmVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJJbmxpbmUo
ZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJJbmxpbmUoY2FsbEZy
YW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9E
RkcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNldE5ldmVyT3B0aW1pemUoZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2V0TmV2ZXJPcHRpbWl6ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZUTChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkpIHsK
LSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZv
ckZ1bmN0aW9uKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkpIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0
RXhlY3V0YWJsZUZvckZ1bmN0aW9uKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAgICBp
ZiAoZXhlY3V0YWJsZSkKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNldE5ldmVyRlRMT3B0aW1p
emUodHJ1ZSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRG
dXp6aW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Ob09TUkV4aXRGdXp6aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXRDYW5ub3RVc2VPU1JFeGl0RnV6
emluZyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXRDYW5ub3RVc2VPU1JF
eGl0RnV6emluZyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9wdGltaXplTmV4dEludm9jYXRpb24oZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUob3B0aW1pemVOZXh0SW52b2NhdGlvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk51bWJl
ck9mREZHQ29tcGlsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlck9mREZHQ29tcGlsZXMoZXhlYykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyT2ZERkdDb21waWxlcyhjYWxsRnJhbWUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01H
Q29tcGlsZWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNhbGxlcklzT01HQ29tcGlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogCiAgICAg
Q2FsbGVyRnVuY3RvciB3YXNtVG9KU0ZyYW1lOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoZXhl
YywgJnZtLCB3YXNtVG9KU0ZyYW1lKTsKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFt
ZSwgJnZtLCB3YXNtVG9KU0ZyYW1lKTsKICAgICBpZiAoIXdhc21Ub0pTRnJhbWUuY2FsbGVyRnJh
bWUoKS0+aXNBbnlXYXNtQ2FsbGVlKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
Yywgc2NvcGUsICJjYWxsZXIgaXMgbm90IGEgd2FzbS0+anMgaW1wb3J0IGZ1bmN0aW9uIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImNhbGxlciBpcyBu
b3QgYSB3YXNtLT5qcyBpbXBvcnQgZnVuY3Rpb24iKTsKIAogICAgIC8vIFdlIGhhdmUgYSB3cmFw
cGVyIGZyYW1lIHRoYXQgd2UgZ2VuZXJhdGUgZm9yIGltcG9ydHMuIElmIHdlIGV2ZXIgY2FuIGRp
cmVjdCBjYWxsIGZyb20gd2FzbSB3ZSB3b3VsZCBuZWVkIHRvIGNoYW5nZSB0aGlzLgogICAgIEFT
U0VSVCghd2FzbVRvSlNGcmFtZS5jYWxsZXJGcmFtZSgpLT5jYWxsZWUoKS5pc1dhc20oKSk7CkBA
IC0xODYyLDQ1ICsxODU2LDQwIEBAIFdvcmtlcnMmIFdvcmtlcnM6OnNpbmdsZXRvbigpCiAgICAg
cmV0dXJuICpyZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJDcmVhdGVSZWFsbShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBHbG9iYWxPYmplY3QqIHJlc3VsdCA9IEds
b2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
anNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdC0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJCIpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJEZXRhY2hB
cnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGZ1bmN0aW9uVHJhbnNm
ZXJBcnJheUJ1ZmZlcihleGVjKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVj
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNlQ29kZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKLSAgICBHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8R2xvYmFsT2JqZWN0Kj4odm0s
Ci0gICAgICAgIGV4ZWMtPnRoaXNWYWx1ZSgpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZ2xvYmFsIikpKTsKKyAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0ganNEeW5hbWlj
Q2FzdDxHbG9iYWxPYmplY3QqPih2bSwKKyAgICAgICAgY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5n
ZXQoY2FsbEZyYW1lLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIikpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAo
IWdsb2JhbE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGdsb2JhbCB0byBw
b2ludCB0byBhIGdsb2JhbCBvYmplY3QiX3MpKSk7CisgICAgaWYgKCFyZWFsbSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVFcnJvcihjYWxsRnJhbWUsICJFeHBlY3RlZCBnbG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9i
YWwgb2JqZWN0Il9zKSkpOwogICAgIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3Jp
Z2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGUocmVhbG0tPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUs
IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25F
eGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZUNv
ZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKS5pc29sYXRlZENvcHkoKTsK
KyAgICBTdHJpbmcgc291cmNlQ29kZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKS5pc29sYXRlZENvcHkoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBMb2NrIGRpZFN0YXJ0TG9jazsKQEAg
LTE5NDIsMTYgKzE5MzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRvbGxhckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2Fk
Y2FzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIGNhbGxiYWNrID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBjYWxsYmFj
ayA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGJhY2ssIGNhbGxEYXRhKTsK
ICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJFeHBlY3RlZCBjYWxsYmFjayJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUs
ICJFeHBlY3RlZCBjYWxsYmFjayJfcykpKTsKICAgICAKICAgICBSZWZQdHI8TWVzc2FnZT4gbWVz
c2FnZTsKICAgICB7CkBAIC0xOTYxLDIyICsxOTUwLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBl
eGVjCiAgICAgCiAgICAgYXV0byBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1l
c3NhZ2UtPnJlbGVhc2VDb250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNo
YXJpbmdNb2RlID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwotICAgIEpTQXJyYXlCdWZm
ZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShu
YXRpdmVCdWZmZXIpKTsKKyAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5n
TW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZChqc0J1ZmZlcik7CiAgICAgYXJncy5hcHBlbmQo
anNOdW1iZXIobWVzc2FnZS0+aW5kZXgoKSkpOwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092
ZXJmbG93ZWQoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c051bGwoKSwgYXJncykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091
dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBjYWxsYmFjaywgY2FsbFR5
cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgcmVw
b3J0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHJl
cG9ydCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAg
ICBXb3JrZXJzOjpzaW5nbGV0b24oKS5yZXBvcnQocmVwb3J0KTsKQEAgLTE5ODQsMjkgKzE5NzMs
MjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVw
b3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRTbGVlcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAg
ICAgICAgU2Vjb25kcyBzZWNvbmRzID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpID49IDEpIHsKKyAgICAgICAgU2Vjb25kcyBzZWNvbmRzID0gU2Vjb25kczo6ZnJvbU1p
bGxpc2Vjb25kcyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgc2xlZXAoc2Vjb25kcyk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJBZ2VudEJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNBcnJheUJ1ZmZlcioganNCdWZm
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVm
ZmVyKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghanNCdWZmZXIgfHwg
IWpzQnVmZmVyLT5pc1NoYXJlZCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgU2hh
cmVkQXJyYXlCdWZmZXIiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhw
ZWN0ZWQgU2hhcmVkQXJyYXlCdWZmZXIiX3MpKSk7CiAgICAgCi0gICAgaW50MzJfdCBpbmRleCA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJfdCBpbmRleCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkudG9JbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIFdvcmtlcnM6OnNp
bmdsZXRvbigpLmJyb2FkY2FzdCgKQEAgLTIwMjEsOSArMjAxMCw5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudEdldFJlcG9ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogCiAgICAgU3RyaW5nIHN0cmluZyA9IFdvcmtlcnM6OnNpbmdsZXRvbigpLnRyeUdl
dFJlcG9ydCgpOwogICAgIGlmICghc3RyaW5nKQpAQCAtMjAzMiwxOSArMjAyMSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHN0
cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRMZWF2aW5nKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3coRXhl
Y1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dE1vbm90b25pY05vdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICBTdHJpbmcgc3RyaW5nOwogICAg
IHsKQEAgLTIwNTcsMjAgKzIwNDYsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIHN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSGVhcENhcGFjaXR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IZWFwQ2FwYWNpdHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHZtLmhlYXAuY2FwYWNpdHkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGRvdWJsZSBz
bGVlcFRpbWVNcyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0g
ICAgICAgIHNsZWVwVGltZU1zID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7Cisg
ICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgc2xlZXBU
aW1lTXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
IApAQCAtMjA4MSwxMyArMjA3MCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRmxhc2hIZWFwQWNjZXNzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvID0gZmFs
c2U7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoRXhlY1N0YXRl
KikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWxsb2NJbkFMb29wKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBWZWN0b3I8dm9pZCo+IHB0cnM7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDUwMDA7ICsraSkKQEAgLTIwOTcsNyArMjA4Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWxsb2NJbkFMb29wKEV4
ZWNTdGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUo
RXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ub3RhbENv
bXBpbGVUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBFTkFCTEUoSklU
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoSklUOjp0b3RhbENvbXBpbGVU
aW1lKCkubWlsbGlzZWNvbmRzKCkpKTsKQEAgLTIxMTUsMTAgKzIxMDQsMTAgQEAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19mdW5kYW1lbnRhbDxWYWx1ZVR5cGU+Ojp2YWx1ZT46OnR5
cGUgYWRkT3B0aW9uKFYKICAgICBvcHRpb25zT2JqZWN0LT5wdXREaXJlY3Qodm0sIGlkZW50aWZp
ZXIsIEpTVmFsdWUodmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkpTQ09wdGlvbnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkpTQ09wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBK
U09iamVjdCogb3B0aW9uc09iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9uc09iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSk7CiAjZGVmaW5lIFJFQURfT1BUSU9O
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSBcCiAgICAgYWRkT3B0aW9uKHZtLCBvcHRpb25zT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAjbmFtZV8pLCBPcHRpb25zOjpuYW1lXygpKTsKICAgICBGT1JfRUFDSF9KU0NfT1BU
SU9OKFJFQURfT1BUSU9OKQpAQCAtMjEyNiwyOSArMjExNSwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zT2JqZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAKLSAgICBDb2RlQmxvY2sqIGJsb2NrID0gZ2V0U29tZUJhc2VsaW5lQ29k
ZUJsb2NrRm9yRnVuY3Rpb24oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIENvZGVCbG9jayogYmxv
Y2sgPSBnZXRTb21lQmFzZWxpbmVDb2RlQmxvY2tGb3JGdW5jdGlvbihjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWJsb2NrKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKDApKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5
QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiTm90
IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyJfcykpKTsKICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5bmFtaWND
YXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTQXJyYXlC
dWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywg
IkV4cGVjdGVkIGFuIGFycmF5IGJ1ZmZlciJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxs
RnJhbWUsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiX3MpKSk7CiAgICAgCiAgICAgQXJyYXlC
dWZmZXJDb250ZW50cyBkdW1teUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2Zl
clRvKHZtLCBkdW1teUNvbnRlbnRzKTsKQEAgLTIxNTYsMTYgKzIxNDUsMTYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9j
ayhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RmFpbE5leHROZXdDb2RlQmxvY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICB2bS5zZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uY29kZUNhY2hlKCktPndyaXRlKHZtKTsKIAogICAg
IGpzY0V4aXQoRVhJVF9TVUNDRVNTKTsKQEAgLTIxNzYsMjMgKzIxNjUsMjMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKiBleGVjKQogI2VuZGlm
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShFeGVjU3Rh
dGUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7IH0KK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3Rh
dGUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzSW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDEoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNJbnQzMihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1
bWVudChpKS5pc0ludDMyKCkpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVu
dChpKS5pc0ludDMyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0cnVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1
cmVOYU4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklzUHVyZU5hTihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsK
LSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KGkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudChpKTsKICAgICAgICAgaWYgKCF2
YWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZmFsc2UpKTsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7
CkBAIC0yMjA0LDQ5ICsyMTkzLDQ5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Jc1B1cmVOYU4oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRydWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklkZW50aXR5KEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPmFyZ3VtZW50KDApKTsgfQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklkZW50aXR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsgfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0ZnVsNDIoRXhlY1N0YXRlKikKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cig0MikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1h
c3F1ZXJhZGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoTWFzcXVlcmFkZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoTWFzcXVlcmFkZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVz
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25I
YXNDdXN0b21Qcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
YXNPYmplY3QodmFsdWUpLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKGV4ZWMtPnZtKCkpKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KHZhbHVlKS0+aGFz
Q3VzdG9tUHJvcGVydGllcyhnbG9iYWxPYmplY3QtPnZtKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFy
aWFibGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgdm0uZHVtcFR5cGVQcm9maWxlckRhdGEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRHJhaW5NaWNyb3Rhc2tzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5maW5h
bGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikK
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU0M6OkpTVmFsdWU6OkpTRmFsc2UpKTsKQEAgLTIyNTUsMzQgKzIyNDQsMzQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUq
KQogI2VuZGlmCiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFN0b3BXYXRj
aCBzdG9wV2F0Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKLSAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYywganNj
U291cmNlKHNvdXJjZSwgeyB9LCBVUkwoKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVj
a01vZHVsZVN5bnRheChjYWxsRnJhbWUsIGpzY1NvdXJjZShzb3VyY2UsIHsgfSwgVVJMKCksIFRl
eHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBz
dG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9TdHJpbmcoIlN5
bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3IubGluZSgpKSkpOworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwgZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9y
LmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRj
aC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKikKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQ
cm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6OkpT
VmFsdWU6OkpTVHJ1ZSkpOwpAQCAtMjI5MSw5ICsyMjgwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNT
dGF0ZSoKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2VuZXJhdGVIZWFwU25hcHNob3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
QEAgLTIzMDEsMTQgKzIyOTAsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSogZXhlYykKICAgICBzbmFwc2hvdEJ1
aWxkZXIuYnVpbGRTbmFwc2hvdCgpOwogCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSBzbmFwc2hv
dEJ1aWxkZXIuanNvbigpOwotICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVu
Y29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOworICAgIEVuY29kZWRKU1ZhbHVlIHJl
c3VsdCA9IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoY2FsbEZyYW1lLCBqc29uU3RyaW5nKSk7
CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVh
cFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFN0cmluZyBqc29uU3RyaW5nOwpAQCAtMjMyNCw2NiArMjMxMyw2NiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JH
Q0RlYnVnZ2luZyhFeGVjU3RhdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIGpzb25TdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXNldFN1cGVyU2FtcGxlclN0YXRlKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudChpKSkpCisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChKU09iamVj
dCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KGkpKSkKICAgICAgICAgICAgIG9iamVjdC0+ZW5zdXJlQXJyYXlTdG9yYWdlKHZtKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogI2lm
IEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFNhbXBsaW5nUHJv
ZmlsZXImIHNhbXBsaW5nUHJvZmlsZXIgPSB2bS5lbnN1cmVTYW1wbGluZ1Byb2ZpbGVyKFdURjo6
U3RvcHdhdGNoOjpjcmVhdGUoKSk7CiAgICAgc2FtcGxpbmdQcm9maWxlci5ub3RpY2VDdXJyZW50
VGhyZWFkQXNKU0NFeGVjdXRpb25UaHJlYWQoKTsKICAgICBzYW1wbGluZ1Byb2ZpbGVyLnN0YXJ0
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1Ry
YWNlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghdm0uc2FtcGxpbmdQcm9maWxlcigpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVFcnJvcihleGVjLCAiU2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiX3Mp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiU2FtcGxpbmcgcHJvZmlsZXIgd2Fz
IG5ldmVyIHN0YXJ0ZWQiX3MpKSk7CiAKICAgICBTdHJpbmcganNvblN0cmluZyA9IHZtLnNhbXBs
aW5nUHJvZmlsZXIoKS0+c3RhY2tUcmFjZXNBc0pTT04oKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSBy
ZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAg
ICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGNhbGxG
cmFtZSwganNvblN0cmluZykpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJ
TEVSKQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRz
KEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJn
dW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKEpTQzo6bWF4QXJndW1lbnRzKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RTdGFydChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBu
dW1iZXJPZkFzeW5jUGFzc2VzID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBudW1i
ZXJPZkFzeW5jUGFzc2VzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW51bWJl
ck9mQXN5bmNQYXNzZXMuaXNVSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGEgdWludDMyIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRXhwZWN0ZWQg
Zmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3MpOwogCiAgICAgYXN5bmNUZXN0RXhwZWN0
ZWRQYXNzZXMgKz0gbnVtYmVyT2ZBc3luY1Bhc3Nlcy5hc1VJbnQzMigpOwogICAgIHJldHVybiBl
bmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkFzeW5jVGVzdFBhc3NlZChFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3NlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopCiB7CiAgICAgYXN5bmNUZXN0UGFzc2VzKys7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVm
aW5lZCgpOwpAQCAtMjM5MSwzNiArMjM4MCwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEV4ZWNTdGF0ZSopCiAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
V2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBpZiAoIVdhc206
OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUg
dXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zKTsK
IAotICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0
KCkpIHsKKyAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
Z2V0T2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgbWFrZVN0cmluZyhtZW1vcnktPm1lbW9yeSgpLm1v
ZGUoKSkpKTsKICAgICAgICAgaWYgKGF1dG8qIGluc3RhbmNlID0ganNEeW5hbWljQ2FzdDxKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqPih2bSwgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcodm0sIG1ha2VTdHJpbmcoaW5zdGFuY2UtPm1lbW9yeU1vZGUo
KSkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
IldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9y
eSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhl
ciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfcyk7CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogb2Jq
ZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLmdldE9iamVjdCgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzRnVuY3Rpb24odm0pKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5zZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayh2bSwgb2JqZWN0KTsK
KyAgICBnbG9iYWxPYmplY3QtPnNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKHZtLCBvYmpl
Y3QpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTI2NjYsMTMgKzI2NTUsMTMgQEAgc3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib28KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKLSAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bGZpbGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RG
aWxlXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihl
eGVjLCBqc0Nhc3Q8R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
aXNMYXN0RmlsZSwgZmFsc2UsIGV4ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsK
KyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bGZpbGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZv
cHRpb25zLCBpc0xhc3RGaWxlXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGNhbGxGcmFt
ZSwganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGlzTGFzdEZpbGUsIGZhbHNl
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
fSk7CiAKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIHJlamVjdEhhbmRsZXIgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2Vz
cywgJm9wdGlvbnMsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICAgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKGV4ZWMsIGpzQ2FzdDxHbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBpc0xhc3RGaWxlLCB0cnVlLCBleGVjLT5hcmd1bWVudCgwKSwg
b3B0aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiByZWplY3RIYW5kbGVy
ID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmlu
ZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RGaWxlXShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uKGNhbGxGcmFtZSwganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCks
IGlzTGFzdEZpbGUsIHRydWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nl
c3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCmluZGV4IDJiNzM2MDJhODMyZDBhZDRhZmY0NjdiNjUxZjYzYjEyYjJl
NmE0NmMuLjJhM2U3NWRjNGE3ZDhlZWU1MGVkYWNjMDZjMjc3NjEyNWExZmQ1MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKQEAgLTI5LDcgKzI5
LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxG
cmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
IAogbmFtZXNwYWNlIExMSW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IGMwYjMxNjFhNjhiNjE1ZjJiODQ1NWJmMGVmNWYxNzkyM2Y3
ZjI5MzguLjM0ZTY1MTc3ZjcwYmUwMWFlMzliOTgxNDQ4ZDZjOTc2NWJmNWYzNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTQ0Myw3
ICsxNDQzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLAogICAgICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Okhvc3QpIHsKICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVl
KGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwor
ICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwg
ZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
ZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENG
dW5jdGlvblB0clRhZyk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNDYzLDcgKzE0NjMsNyBA
QCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZTo6SG9zdCkgewogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjQ2FsbGVlKTsKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNh
bGxlZSkpOwotICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0u
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBleGVjQ2FsbGVl
KSk7CiAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExM
SW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcp
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKaW5kZXggYzI0YzJkODYxYTZkZTllYWJlNGZhMTJiZDZmMGJhOTc4MzhmNTg1NC4uYWU3
OGY0YThjNWMwYWRlNjg1ODVlYWQzYWNkYjQzM2E4OGQyYjZlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTMwLDcgKzMwLDggQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90
b0NhbGxGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2NWY5MjRmYmQ1MDU0ODNmMjAyZTEy
ZjljNDVlNDM2ZWJjMjRjYzgwLi5lNGI4ZTUwMjU1NDBjMWRhZjY3OTRhMjk0ZGU5NGM4MGRmNTMx
NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjYyLDcgKzI2Miw3IEBAIG1hY3JvIGRvVk1FbnRy
eShtYWtlQ2FsbCkKICAgICBzdG9yZXAgc3AsIFZNOjp0b3BDYWxsRnJhbWVbdm1dCiAgICAgc3Rv
cmVwIGNmciwgVk06OnRvcEVudHJ5RnJhbWVbdm1dCiAKLSAgICBtYWtlQ2FsbChlbnRyeSwgdDMs
IHQ0KQorICAgIG1ha2VDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdDMsIHQ0KQogCiAgICAg
aWYgQVJNdjcKICAgICAgICAgdm1FbnRyeVJlY29yZChjZnIsIHQzKQpAQCAtMzE5LDcgKzMxOSw4
IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICByZXQKIGVuZAogCi1tYWNybyBtYWtl
SmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKKyMgYTAsIGEyLCB0MywgdDQKK21h
Y3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1w
MikKICAgICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgIGNoZWNrU3RhY2tQb2lu
dGVyQWxpZ25tZW50KHRlbXAsIDB4YmFkMGRjMDIpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9X
SU4KQEAgLTMzMSwyNCArMzMyLDI4IEBAIG1hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwg
dGVtcCwgdW51c2VkKQogICAgIHN1YnAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiBlbmQKIAot
bWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXAxLCB0ZW1wMikKKyMgYTAsIGEy
LCB0MywgdDQKK21hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFt
ZSwgdGVtcDEsIHRlbXAyKQogICAgIG1vdmUgZW50cnksIHRlbXAxCiAgICAgc3RvcmVwIGNmciwg
W3NwXQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgIG1vdmUgc3AsIGEwCisg
ICAgICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RbcHJvdG9DYWxsRnJhbWVd
LCBhMAorICAgICAgICBtb3ZlIHNwLCBhMQogICAgICAgICBzdG9yZXAgbHIsIFB0clNpemVbc3Bd
CiAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0ZW1wMQogICAgIGVsc2lmIFg4NiBvciBYODZfV0lO
Ci0gICAgICAgICMgUHV0IGNhbGxlZSBmcmFtZSBwb2ludGVyIG9uIHN0YWNrIGFzIGFyZzAsIGFs
c28gcHV0IGl0IGluIGVjeCBmb3IgImZhc3RjYWxsIiB0YXJnZXRzCisgICAgICAgICMgUHV0IGNh
bGxlZSBmcmFtZSBwb2ludGVyIG9uIHN0YWNrIGFzIGFyZzEsIGFsc28gcHV0IGl0IGluIGVjeCBm
b3IgImZhc3RjYWxsIiB0YXJnZXRzCiAgICAgICAgIG1vdmUgMCwgdGVtcDIKICAgICAgICAgbW92
ZSB0ZW1wMiwgNFtzcF0gIyBwdXQgMCBpbiBSZXR1cm5QQwotICAgICAgICBtb3ZlIHNwLCBhMCAj
IGEwIGlzIGVjeAotICAgICAgICBwdXNoIHRlbXAyICMgUHVzaCBkdW1teSBhcmcxCisgICAgICAg
IG1vdmUgc3AsIGExICMgYTEgaXMgZWR4CisgICAgICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjpn
bG9iYWxPYmplY3RbcHJvdG9DYWxsRnJhbWVdLCBhMAorICAgICAgICBwdXNoIGExCiAgICAgICAg
IHB1c2ggYTAKICAgICAgICAgY2FsbCB0ZW1wMQogICAgICAgICBhZGRwIDgsIHNwCiAgICAgZWxz
ZQotICAgICAgICBtb3ZlIHNwLCBhMAorICAgICAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xv
YmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICAgICAgbW92ZSBzcCwgYTEKICAgICAg
ICAgY2FsbCB0ZW1wMQogICAgIGVuZAogZW5kCkBAIC0xOTk3LDEyICsyMDAyLDEzIEBAIG1hY3Jv
IG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgICAg
ICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290
ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwgdDMKICAgICAgICAgc3Rv
cmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0M10KLSAgICAgICAgbW92ZSBjZnIsIGEwICAjIGEw
ID0gZWN4Ci0gICAgICAgIHN0b3JlcCBhMCwgW3NwXQotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0
YWJsZVt0MV0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMSAgIyBhMSA9IGVkeAorICAgICAgICBz
dG9yZXAgYTEsIFtzcF0KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJd
LCBhMAorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbYTBdLCBhMgorICAg
ICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAgICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQotICAgICAgICBjYWxsIGV4
ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZz
ZXRUb0Z1bmN0aW9uW2EyXQogICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBN
YXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0
MwpAQCAtMjAyMCwxNCArMjAyNiwxNSBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVj
dXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQx
CiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZv
b3Rlcjo6bV92bVt0MV0sIHQxCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVb
dDFdCi0gICAgICAgIG1vdmUgY2ZyLCBhMAotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0
MV0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMQorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIGEwCisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJs
ZVthMF0sIGEyCisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2EwXSwg
YTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCiAg
ICAgICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgICAgICBjbG9vcENhbGxOYXRp
dmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCisgICAgICAgICAgICBjbG9vcENhbGxO
YXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJdCiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCisgICAgICAgICAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXQogICAgICAgICBlbmQKICAgICAgICAg
bG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtl
ZEJsb2NrTWFzaywgdDMKQEAgLTIwNjUsMTEgKzIwNzIsMTIgQEAgbWFjcm8gaW50ZXJuYWxGdW5j
dGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2Vk
QmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1h
cmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MwogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6
dG9wQ2FsbEZyYW1lW3QzXQotICAgICAgICBtb3ZlIGNmciwgYTAgICMgYTAgPSBlY3gKLSAgICAg
ICAgc3RvcmVwIGEwLCBbc3BdCi0gICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDEKKyAgICAgICAgbW92ZSBjZnIsIGExICAjIGExID0gZWR4CisgICAgICAgIHN0b3Jl
cCBhMSwgW3NwXQorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEy
CisgICAgICAgIGxvYWRwIEludGVybmFsRnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2EyXSwgYTAK
ICAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCi0gICAg
ICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0KKyAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0
aW9uW2EyXQogICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAg
ICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9j
a0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwpAQCAtMjA4
MCwxMyArMjA4OCwxNCBAQCBtYWNybyBpbnRlcm5hbEZ1bmN0aW9uQ2FsbFRyYW1wb2xpbmUob2Zm
c2V0T2ZGdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQxCiAgICAgICAg
IGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92
bVt0MV0sIHQxCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVbdDFdCi0gICAg
ICAgIG1vdmUgY2ZyLCBhMAotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMQorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIGEyCisgICAgICAgIGxvYWRwIEludGVybmFsRnVuY3Rpb246Om1fZ2xv
YmFsT2JqZWN0W2EyXSwgYTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMs
IDB4ZGVhZDAwMDEpCiAgICAgICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgICAg
ICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblt0MV0KKyAgICAgICAgICAgIGNsb29w
Q2FsbE5hdGl2ZSBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgICAgICBjYWxsIG9mZnNldE9mRnVu
Y3Rpb25bYTJdCiAgICAgICAgIGVuZAogICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA3ZjRlYjgzN2Y3MWVhMWZiOTU3MDE5YWQzZTMyYWE3ZDcxYzNjM2FmLi4xZjhkYmZjNjNk
YTM2NzI0YjRhYTI2OGRlY2ZhMDNhNmEwZGI1M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjU1LDcgKzI1
NSw3IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KGV4dHJhVGVtcFJlZywgMHhiYWQwZGMwMikKIAotICAgIG1ha2VDYWxsKGVudHJ5
LCB0MywgdDQpCisgICAgbWFrZUNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0MywgdDQpCiAK
ICAgICAjIFdlIG1heSBoYXZlIGp1c3QgbWFkZSBhIGNhbGwgaW50byBhIEpTIGZ1bmN0aW9uLCBz
byB3ZSBjYW4ndCByZWx5IG9uIHNwCiAgICAgIyBmb3IgYW55dGhpbmcgYnV0IHRoZSBmYWN0IHRo
YXQgb3VyIG93biBsb2NhbHMgKGllIHRoZSBWTUVudHJ5UmVjb3JkKSBhcmUKQEAgLTI5Nyw3ICsy
OTcsOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiBlbmQKIAogCi1tYWNybyBtYWtlSmF2
YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKKyMgYTAsIGEyLCB0MywgdDQKK21hY3Jv
IG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikK
ICAgICBhZGRwIDE2LCBzcAogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNs
b29wQ2FsbEpTRnVuY3Rpb24gZW50cnkKQEAgLTMwNywyMCArMzA4LDIyIEBAIG1hY3JvIG1ha2VK
YXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVtcCwgdW51c2VkKQogICAgIHN1YnAgMTYsIHNwCiBlbmQK
IAotbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKLSAgICBt
b3ZlIGVudHJ5LCB0ZW1wCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSG9zdEZ1bmN0aW9u
Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKKyAgICBtb3ZlIGVudHJ5
LCB0ZW1wMQogICAgIHN0b3JlcCBjZnIsIFtzcF0KLSAgICBtb3ZlIHNwLCBhMAorICAgIGxvYWRw
IFByb3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RbcHJvdG9DYWxsRnJhbWVdLCBhMAorICAgIG1v
dmUgc3AsIGExCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgc3RvcmVwIGxy
LCA4W3NwXQotICAgICAgICBjbG9vcENhbGxOYXRpdmUgdGVtcAorICAgICAgICBjbG9vcENhbGxO
YXRpdmUgdGVtcDEKICAgICBlbHNpZiBYODZfNjRfV0lOCiAgICAgICAgICMgV2UgbmVlZCB0byBh
bGxvY2F0ZSAzMiBieXRlcyBvbiB0aGUgc3RhY2sgZm9yIHRoZSBzaGFkb3cgc3BhY2UuCiAgICAg
ICAgIHN1YnAgMzIsIHNwCi0gICAgICAgIGNhbGwgdGVtcCwgSlNFbnRyeVB0clRhZworICAgICAg
ICBjYWxsIHRlbXAxLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIGFkZHAgMzIsIHNwCiAgICAgZWxz
ZQotICAgICAgICBjYWxsIHRlbXAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgY2FsbCB0ZW1wMSwg
SlNFbnRyeVB0clRhZwogICAgIGVuZAogZW5kCiAKQEAgLTIxMjMsMTkgKzIxMjYsMjAgQEAgbWFj
cm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAg
aWYgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIHN0b3Jl
cCBsciwgUmV0dXJuUENbY2ZyXQogICAgIGVuZAotICAgIG1vdmUgY2ZyLCBhMAotICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0MQotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0s
IHQxCisgICAgbW92ZSBjZnIsIGExCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIGEwCisgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW2EwXSwgYTIKKyAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dDMsIDB4ZGVhZDAwMDEpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgY2xv
b3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICBjbG9v
cENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJdCiAgICAgZWxzZQogICAg
ICAgICBpZiBYODZfNjRfV0lOCiAgICAgICAgICAgICBzdWJwIDMyLCBzcAotICAgICAgICAgICAg
Y2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0sIEpTRW50cnlQdHJUYWcKKyAgICAg
ICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJdLCBKU0VudHJ5UHRyVGFn
CiAgICAgICAgICAgICBhZGRwIDMyLCBzcAogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxs
IGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSwgSlNFbnRyeVB0clRhZworICAgICAgICAg
ICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0sIEpTRW50cnlQdHJUYWcKICAg
ICAgICAgZW5kCiAgICAgZW5kCiAKQEAgLTIxNjMsMTggKzIxNjcsMTkgQEAgbWFjcm8gaW50ZXJu
YWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgaWYgQVJNNjQg
b3IgQVJNNjRFIG9yIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIHN0b3JlcCBsciwgUmV0
dXJuUENbY2ZyXQogICAgIGVuZAotICAgIG1vdmUgY2ZyLCBhMAotICAgIGxvYWRwIENhbGxlZVtj
ZnJdLCB0MQorICAgIG1vdmUgY2ZyLCBhMQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCBhMgorICAg
IGxvYWRwIEludGVybmFsRnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2EyXSwgYTAKICAgICBjaGVj
a1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAgICBpZiBDX0xPT1Agb3Ig
Q19MT09QX1dJTgotICAgICAgICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblt0MV0K
KyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9mZnNldE9mRnVuY3Rpb25bYTJdCiAgICAgZWxzZQog
ICAgICAgICBpZiBYODZfNjRfV0lOCiAgICAgICAgICAgICBzdWJwIDMyLCBzcAotICAgICAgICAg
ICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXSwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAg
Y2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAgICAgICAgYWRk
cCAzMiwgc3AKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9u
W3QxXSwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2Ey
XSwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQKICAgICBlbmQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCAzOWZlNmJiZmY1NjZi
OTE1OWJhNjM3MTkzYzY4M2EzYmNjMmRjMWVlLi5mODliZmVkY2UzZmFmZjYzNTc0YzQxNWJiZTkz
MDVhZTYwZTI5MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SlNBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xh
c3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuY3BwCmluZGV4IGI5MmE3NjJhNDAwNjI5OWViN2I0NTk4MDY0MDJjOThhMDRhMWI5
NTUuLjhkMDA5MDYyNDJlODlmZGU1MTMxM2M5MjlmNjE1MjlkMDExMzQ0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC01
MCw4ICs1MCw4IEBAIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luCiBAZW5kCiAqLwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhB
cnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEFycmF5Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhBcnJh
eUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEFycmF5Q29uc3Ry
dWN0b3I6OkFycmF5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEFycmF5Q29uc3RydWN0b3Is
IGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKQpAQCAtODQsMTEgKzg0LDggQEAgSlNBcnJh
eSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSogcHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdUYXJnZXQpKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmso
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkK
K3N0YXRpYyBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYg
YXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLQogICAgIC8vIGEgc2luZ2xl
IG51bWVyaWMgYXJndW1lbnQgZGVub3RlcyB0aGUgYXJyYXkgc2l6ZSAoISkKICAgICBpZiAoYXJn
cy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWly
ayhleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QsIGFyZ3MuYXQoMCksIG5ld1RhcmdldCk7CkBA
IC05NywxNiArOTQsMTYgQEAgc3RhdGljIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXMKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBuZXdUYXJnZXQp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRo
QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFy
Z3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoZXhlYywgYXJncywgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKKyAgICBBcmdMaXN0IGFy
Z3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZyYW1lLT5u
ZXdUYXJnZXQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhl
Yyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoZXhlYywgYXJncywgSlNWYWx1ZSgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmso
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEpTVmFsdWUoKSkpOwogfQogCiBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzQXJyYXlTbG93SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJv
eHlPYmplY3QqIHByb3h5KQpAQCAtMTQwLDEwICsxMzcsMTAgQEAgYm9vbCBpc0FycmF5U2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0KiBhcmd1bWVudCkKIAogLy8gRVM2IDcuMi4yCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25z
dHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8UHJv
eHlPYmplY3QqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGV4ZWMsIGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxQcm94eU9iamVjdCo+KGdsb2JhbE9i
amVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGNhbGxGcmFtZSwganNDYXN0PFBy
b3h5T2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCmluZGV4IDc1YWM0NTkyMTM2MTRhMzY1NWYwNmYyZDRlM2I0MmNjMzA3
MjYzNTAuLjc3MjMzYWRlN2IzOWFlZDVlZThmMTZjMDk4MDM4YjAxMThiMmJjNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKQEAgLTU4
LDcgKzU4LDcgQEAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKIAogSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNT
dGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
bGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3coRXhl
Y1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQ
cml2YXRlRnVuY0lzQXJyYXlTbG93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBib29s
IGlzQXJyYXlTbG93KEV4ZWNTdGF0ZSosIFByb3h5T2JqZWN0KiBhcmd1bWVudCk7CiAKIC8vIEVT
NiA3LjIuMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IGVkYjc2MTliNTEwYWM2M2M0MTc4ODY3MjIwNDJhOTIwNGIwZjI1MjEuLjc5
NDg0MjFhYTVlYzdlNTk4MmE3MGUwZGU5OGJiMjgxZDQwYzQ1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQ4LDE3ICs0OCwx
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1B1c2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIApAQCAtMjY3LDE0ICsyNjcsMTQgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpw
YWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc0NvbnN0cnUKICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9i
amVjdCwgbmV3T2JqZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgdWludDY0X3QgbGVuZ3RoID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmFzTnVtYmVy
KCkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKyAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5hc051bWJlcigpKTsKIAotICAgIHN0
ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQg
PSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhlYywgb2JqZWN0LCBsZW5ndGgpOworICAgIHN0ZDo6
cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBz
cGVjaWVzQ29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCBvYmplY3QsIGxlbmd0aCk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0
ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAgIGlmIChVTkxJS0VM
WShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlv
bikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yODIsMTEgKzI4MiwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3BlY2llc1Jlc3VsdC5zZWNv
bmQpOwogCiAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJheSBzaXpl
IGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcyk7CisgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFs
bCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsZW5ndGgpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbVN0YXJ0T3JFbmQoRXhlY1N0YXRlKiBleGVjLCBpbnQgYXJndW1lbnQsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSAwKQpAQCAtNTkzLDE5ICs1OTMs
MTkgQEAgaW5saW5lIGJvb2wgY2FuVXNlRGVmYXVsdEFycmF5Sm9pbkZvclRvU3RyaW5nKFZNJiB2
bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+aXNPcmln
aW5hbEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJp
Y3RNb2RlKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcg
VG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0
aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlz
VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmICghY2FuVXNlRGVmYXVsdEFycmF5Sm9pbkZv
clRvU3RyaW5nKHZtLCB0aGlzT2JqZWN0KSkgewogICAgICAgICAvLyAyLiBMZXQgZnVuYyBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIGFycmF5
IHdpdGggYXJndW1lbnQgImpvaW4iLgotICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gSlNWYWx1
ZSh0aGlzT2JqZWN0KS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+am9pbik7CisgICAgICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3QpLmdldChjYWxsRnJhbWUsIHZt
LnByb3BlcnR5TmFtZXMtPmpvaW4pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICAvLyAzLiBJZiBJc0NhbGxhYmxlKGZ1bmMp
IGlzIGZhbHNlLCB0aGVuIGxldCBmdW5jIGJlIHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2Qg
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAoMTUuMi40LjIpLgpAQCAtNjE4LDExICs2MTgsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0gdHJ1ZTsKIAogICAg
ICAgICBpZiAoVU5MSUtFTFkoY3VzdG9tSm9pbkNhc2UpKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0
aGlzT2JqZWN0LCB2bSksICJdIikpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAi
W29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2Jq
ZWN0LCB2bSksICJdIikpKTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJy
YXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgICAg
ICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SG9z
dCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2luKQotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlM
aXN0KSkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNP
YmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGlzSlNBcnJheSh0
aGlzVmFsdWUpKTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc0FycmF5LT5sZW5ndGgoKTsKIAotICAgIFN0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzQXJyYXkpOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNBcnJheSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwogICAgIGlm
IChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKQEAgLTY0
OSw3ICs2NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzYXdI
b2xlcyA9IGZhbHNlOwotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RKb2luKCpleGVjLCB0
aGlzQXJyYXksIHsgJmNvbW1hLCAxIH0sIGxlbmd0aCwgJnNhd0hvbGVzKTsKKyAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBmYXN0Sm9pbigqY2FsbEZyYW1lLCB0aGlzQXJyYXksIHsgJmNvbW1hLCAx
IH0sIGxlbmd0aCwgJnNhd0hvbGVzKTsKIAogICAgICAgICBpZiAoIXNhd0hvbGVzICYmIHJlc3Vs
dCAmJiBpc0pTU3RyaW5nKHJlc3VsdCkgJiYgaXNDb1cpIHsKICAgICAgICAgICAgIEFTU0VSVChK
U0ltbXV0YWJsZUJ1dHRlcmZseTo6ZnJvbUJ1dHRlcmZseSh0aGlzQXJyYXktPmJ1dHRlcmZseSgp
KSA9PSBpbW11dGFibGVCdXR0ZXJmbHkpOwpAQCAtNjU5LDY4ICs2NTksNjggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAotICAg
IEpTU3RyaW5nSm9pbmVyIGpvaW5lcigqZXhlYywgJywnLCBsZW5ndGgpOworICAgIEpTU3RyaW5n
Sm9pbmVyIGpvaW5lcigqY2FsbEZyYW1lLCAnLCcsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gdGhpc0Fy
cmF5LT50cnlHZXRJbmRleFF1aWNrbHkoaSk7CiAgICAgICAgIGlmICghZWxlbWVudCkgewotICAg
ICAgICAgICAgZWxlbWVudCA9IHRoaXNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
ZWxlbWVudCA9IHRoaXNBcnJheS0+Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQotICAg
ICAgICBqb2luZXIuYXBwZW5kKCpleGVjLCBlbGVtZW50KTsKKyAgICAgICAgam9pbmVyLmFwcGVu
ZCgqY2FsbEZyYW1lLCBlbGVtZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmV4ZWMpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmNhbGxGcmFtZSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogCi0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hl
Y2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBp
ZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKLSAg
ICBKU1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoKmV4ZWMsICcsJywgbGVuZ3RoKTsKKyAgICBK
U1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoKmNhbGxGcmFtZSwgJywnLCBsZW5ndGgpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAjaWYgRU5B
QkxFKElOVEwpCi0gICAgQXJnTGlzdCBhcmd1bWVudHMoZXhlYyk7CisgICAgQXJnTGlzdCBhcmd1
bWVudHMoY2FsbEZyYW1lKTsKICNlbmRpZgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gdGhpc09iamVjdC0+Z2V0
SW5kZXgoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgICAgICBlbGVtZW50ID0ganNFbXB0eVN0cmluZyh2bSk7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBlbGVtZW50Lmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZyk7CisgICAgICAgICAgICBK
U1ZhbHVlIGNvbnZlcnNpb25GdW5jdGlvbiA9IGVsZW1lbnQuZ2V0KGNhbGxGcmFtZSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9Mb2NhbGVTdHJpbmcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNv
bnZlcnNpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAgaWYgKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKSB7CiAjaWYgRU5BQkxFKElOVEwpCi0gICAgICAgICAgICAgICAgZWxl
bWVudCA9IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGVsZW1lbnQsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoY2Fs
bEZyYW1lLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwg
YXJndW1lbnRzKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoZXhlYywg
Y29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsICp2bS5lbXB0
eUxpc3QpOworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGNhbGxGcmFtZSwgY29udmVy
c2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsICp2bS5lbXB0eUxpc3Qp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc3RyaW5n
Sm9pbmVyLmFwcGVuZCgqZXhlYywgZWxlbWVudCk7CisgICAgICAgIHN0cmluZ0pvaW5lci5hcHBl
bmQoKmNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0pvaW5lci5qb2luKCpleGVjKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0pvaW5lci5qb2lu
KCpjYWxsRnJhbWUpKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIHNsb3dKb2luKEV4ZWNTdGF0ZSYg
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3RyaW5nKiBzZXBhcmF0b3IsIHVpbnQ2NF90
IGxlbmd0aCkKQEAgLTc3MSwyOCArNzcxLDI4IEBAIHN0YXRpYyBKU1ZhbHVlIHNsb3dKb2luKEV4
ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3RyaW5nKiBzZXBhcmF0CiAg
ICAgcmV0dXJuIHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2YWx1ZSkuCi0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hl
Y2tlcihleGVjLCB0aGlzT2JqZWN0KTsKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNr
ZXIoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFs
dWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCiAgICAgLy8gMi4g
TGV0IGxlbiBiZSA/IFRvTGVuZ3RoKD8gR2V0KE8sICJsZW5ndGgiKSkuCi0gICAgZG91YmxlIGxl
bmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIGRvdWJsZSBsZW5ndGggPSB0
b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gSWYgc2VwYXJhdG9yIGlzIHVu
ZGVmaW5lZCwgbGV0IHNlcGFyYXRvciBiZSB0aGUgc2luZ2xlLWVsZW1lbnQgU3RyaW5nICIsIi4K
LSAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHNl
cGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY29uc3QgTENoYXIgY29tbWEg
PSAnLCc7CiAKQEAgLTgwMiwxMTcgKzgwMiwxMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgSlNT
dHJpbmcqIGpzU2VwYXJhdG9yID0ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIGNvbW1hKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShzbG93Sm9pbigqZXhlYywgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xv
d0pvaW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgdW5zaWduZWRMZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGVuZ3RoKTsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4o
dW5zaWduZWRMZW5ndGgpID09IGxlbmd0aCk7CiAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZmFzdEpvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIHsgJmNv
bW1hLCAxIH0sIHVuc2lnbmVkTGVuZ3RoKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqY2FsbEZyYW1lLCB0aGlzT2JqZWN0LCB7
ICZjb21tYSwgMSB9LCB1bnNpZ25lZExlbmd0aCkpKTsKICAgICB9CiAKICAgICAvLyA0LiBMZXQg
c2VwIGJlID8gVG9TdHJpbmcoc2VwYXJhdG9yKS4KLSAgICBKU1N0cmluZyoganNTZXBhcmF0b3Ig
PSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyoganNTZXBhcmF0
b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKFVOTElLRUxZKGxl
bmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCAhY2FuVXNlRmFz
dEpvaW4odGhpc09iamVjdCkpKSB7CiAgICAgICAgIHVpbnQ2NF90IGxlbmd0aDY0ID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCk7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxkb3Vi
bGU+KGxlbmd0aDY0KSA9PSBsZW5ndGgpOwogCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0aGlzT2JqZWN0LCBqc1NlcGFy
YXRvciwgbGVuZ3RoNjQpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3QsIGpzU2VwYXJhdG9y
LCBsZW5ndGg2NCkpKTsKICAgICB9CiAKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0ganNTZXBh
cmF0b3ItPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRo
U3RyaW5nID0ganNTZXBhcmF0b3ItPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZmFzdEpvaW4oKmV4
ZWMsIHRoaXNPYmplY3QsIHZpZXdXaXRoU3RyaW5nLnZpZXcsIGxlbmd0aCkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqY2FsbEZyYW1l
LCB0aGlzT2JqZWN0LCB2aWV3V2l0aFN0cmluZy52aWV3LCBsZW5ndGgpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFt
ZSwgU3RyaWN0TW9kZSk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCi0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1Zh
bHVlKS0+cG9wKGV4ZWMpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGNhbGxGcmFtZSkpKTsKIAotICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGxlbmd0aCA9PSAwKSB7
CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcHV0TGVuZ3RoKGV4ZWMsIHZtLCB0
aGlzT2JqLCBqc051bWJlcihsZW5ndGgpKTsKKyAgICAgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwg
dm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gdGhp
c09iai0+Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdGhpc09i
ai0+Z2V0KGNhbGxGcmFtZSwgbGVuZ3RoIC0gMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYm9vbCBzdWNjZXNzID0gdGhpc09iai0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3Ro
IC0gMSk7CisgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgY2FsbEZyYW1lLCBsZW5ndGggLSAxKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5M
SUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBV
bmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHB1
dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOworICAgIHB1
dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1v
ZGUpOwogCi0gICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1
bWVudENvdW50KCkgPT0gMSkpIHsKKyAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUp
ICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIGFycmF5LT5wdXNoSW5saW5lKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKKyAgICAgICAgYXJyYXktPnB1c2hJbmxpbmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihhcnJheS0+bGVuZ3RoKCkpKTsKICAgICB9CiAgICAgCi0gICAgSlNPYmplY3QqIHRoaXNPYmog
PSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlz
VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRv
TGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNh
bGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgZXhlYy0+YXJndW1l
bnRDb3VudCgpOyBuKyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCk7IG4rKykgewogICAgICAgICAvLyBDaGVjayBmb3IgaW50ZWdlciBv
dmVyZmxvdzsgd2hlcmUgc2FmZSB3ZSBjYW4gZG8gYSBmYXN0IHB1dCBieSBpbmRleC4KICAgICAg
ICAgaWYgKGxlbmd0aCArIG4gPj0gbGVuZ3RoKQotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCArIG4sIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBjYWxsRnJhbWUsIGxlbmd0aCArIG4sIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU1ZhbHVlKHN0
YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9X
VEZTdHJpbmcoZXhlYykpOwotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5w
dXQodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChu
KSwgc2xvdCk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSAr
IHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhjYWxsRnJhbWUpKTsKKyAgICAg
ICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRoaXNPYmosIGNhbGxGcmFtZSwg
cHJvcGVydHlOYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKICAg
ICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBuZXdMZW5ndGgoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkpOworICAgIEpTVmFsdWUgbmV3TGVuZ3RoKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkg
KyBzdGF0aWNfY2FzdDxpbnQ2NF90PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIG5ld0xl
bmd0aCk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIG5ld0xlbmd0aCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdMZW5ndGgpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50
b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1l
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmpl
Y3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNv
ZGVkSlNWYWx1ZSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhp
c09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlz
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIHRoaXNPYmplY3QtPmVuc3VyZVdyaXRhYmxlKHZtKTsKQEAgLTk1Nyw0MiArOTU3
LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBtaWRkbGUgPSBsZW5ndGggLyAyOwogICAg
IGZvciAodW5zaWduZWQgbG93ZXIgPSAwOyBsb3dlciA8IG1pZGRsZTsgbG93ZXIrKykgewogICAg
ICAgICB1bnNpZ25lZCB1cHBlciA9IGxlbmd0aCAtIGxvd2VyIC0gMTsKLSAgICAgICAgYm9vbCBs
b3dlckV4aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGxvd2VyKTsKKyAgICAg
ICAgYm9vbCBsb3dlckV4aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwg
bG93ZXIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgSlNWYWx1ZSBsb3dlclZhbHVlOwogICAgICAgICBpZiAobG93ZXJFeGlz
dHMpIHsKLSAgICAgICAgICAgIGxvd2VyVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgbG93
ZXIpOworICAgICAgICAgICAgbG93ZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChjYWxsRnJhbWUs
IGxvd2VyKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCB1cHBlckV4aXN0cyA9IHRoaXNP
YmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHVwcGVyKTsKKyAgICAgICAgYm9vbCB1cHBlckV4aXN0
cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwgdXBwZXIpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgSlNW
YWx1ZSB1cHBlclZhbHVlOwogICAgICAgICBpZiAodXBwZXJFeGlzdHMpIHsKLSAgICAgICAgICAg
IHVwcGVyVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdXBwZXIpOworICAgICAgICAgICAg
dXBwZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChjYWxsRnJhbWUsIHVwcGVyKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHVwcGVyRXhpc3RzKSB7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGxvd2VyLCB1cHBlclZhbHVlLCB0cnVlKTsKKyAgICAg
ICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCBsb3dlciwgdXBw
ZXJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIGxvd2VyKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGNhbGxGcmFtZSwgbG93ZXIpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nl
c3MpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFVuYWJs
ZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIGlmIChsb3dlckV4aXN0cykgewotICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0QnlJbmRleElubGluZShleGVjLCB1cHBlciwgbG93ZXJWYWx1ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5saW5lKGNhbGxGcmFtZSwgdXBwZXIsIGxvd2Vy
VmFsdWUsIHRydWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCB1cHBlcik7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0
LCBjYWxsRnJhbWUsIHVwcGVyKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNz
KSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBVbmFibGVU
b0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTEwMDAsNjEgKzEwMDAsNjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc09iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTaGlmdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RN
b2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9M
ZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2Fs
bEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIGlmIChsZW5ndGggPT0gMCkgewogICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVu
Z3RoKSk7CisgICAgICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJl
cihsZW5ndGgpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdldEluZGV4KGV4ZWMs
IDApOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdGhpc09iai0+Z2V0SW5kZXgoY2FsbEZyYW1lLCAw
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGV4ZWMsIHRoaXNPYmosIDAsIDEs
IDAsIGxlbmd0aCk7CisgICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNoaWZ0PihjYWxs
RnJhbWUsIHRoaXNPYmosIDAsIDEsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHB1
dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOworICAgIHB1
dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhp
c09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
dG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgYmVnaW4gPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7CisgICAgdW5zaWduZWQgYmVnaW4gPSBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMCwgbGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIHVuc2lnbmVkIGVuZCA9IGFy
Z3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMSwgbGVuZ3RoLCBsZW5ndGgp
OworICAgIHVuc2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Y2FsbEZyYW1lLCAxLCBsZW5ndGgsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICBpZiAoZW5kIDwgYmVnaW4pCiAgICAgICAgIGVuZCA9IGJlZ2luOwog
Ci0gICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2ll
c1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlzT2JqLCBlbmQgLSBiZWdp
bik7CisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3Bl
Y2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHRoaXNPYmosIGVu
ZCAtIGJlZ2luKTsKICAgICAvLyBXZSBjYW4gb25seSBnZXQgYW4gZXhjZXB0aW9uIGlmIHdlIGNh
bGwgc29tZSB1c2VyIGZ1bmN0aW9uLgogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpFeGNlcHRpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBT
cGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2ll
c0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxlbmd0
aCA9PSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBib29sIG9rVG9Eb0Zhc3RQYXRoID0g
c3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCAm
JiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhp
c09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoTElL
RUxZKG9rVG9Eb0Zhc3RQYXRoKSkgewotICAgICAgICBpZiAoSlNBcnJheSogcmVzdWx0ID0gYXNB
cnJheSh0aGlzT2JqKS0+ZmFzdFNsaWNlKCpleGVjLCBiZWdpbiwgZW5kIC0gYmVnaW4pKQorICAg
ICAgICBpZiAoSlNBcnJheSogcmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+ZmFzdFNsaWNlKCpj
YWxsRnJhbWUsIGJlZ2luLCBlbmQgLSBiZWdpbikpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVj
KQogICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6
OkNyZWF0ZWRPYmplY3QpCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwog
ICAgIGVsc2UgewotICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIsIGVuZCAtIGJlZ2luKTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShjYWxsRnJhbWUsIG51bGxwdHIsIGVuZCAtIGJlZ2luKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAKQEAgLTEwNzIsMzQgKzEwNzIsMzQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIHVuc2lnbmVkIG4gPSAwOwogICAgIGZvciAodW5zaWduZWQgayA9IGJlZ2lu
OyBrIDwgZW5kOyBrKyssIG4rKykgewotICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShl
eGVjLCB0aGlzT2JqLCBrKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoY2FsbEZy
YW1lLCB0aGlzT2JqLCBrKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICAgICAgaWYgKHYpIHsKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
ZXhlYywgbiwgdiwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7CisgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgbiwgdiwgMCwgUHV0RGlyZWN0SW5kZXhT
aG91bGRUaHJvdyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgICAgICB9CiAgICAgfQogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBzZXRMZW5ndGgo
ZXhlYywgdm0sIHJlc3VsdCwgbik7CisgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHJlc3Vs
dCwgbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
Ly8gMTUuNC40LjEyCiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhl
eGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9P
YmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4
ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwg
dGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBzdGQ6OnBh
aXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3Bl
Y2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIDApOworICAgIGlmICghY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RS
ZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShj
YWxsRnJhbWUsIHRoaXNPYmosIDApOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzcGVjaWVzUmVzdWx0LmZp
cnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpCiAgICAgICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTExMDgsMjMgKzExMDgsMjMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1
bHQ6OkNyZWF0ZWRPYmplY3QpCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNl
Y29uZDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIG51bGxwdHIpOworICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzZXRM
ZW5ndGgoZXhlYywgdm0sIHJlc3VsdCwgMCk7CisgICAgICAgIHNldExlbmd0aChjYWxsRnJhbWUs
IHZtLCByZXN1bHQsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBzZXRMZW5n
dGgoZXhlYywgdm0sIHRoaXNPYmosIGxlbmd0aCk7CisgICAgICAgIHNldExlbmd0aChjYWxsRnJh
bWUsIHZtLCB0aGlzT2JqLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYWN0dWFsU3RhcnQgPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7CisgICAgdW5zaWduZWQg
YWN0dWFsU3RhcnQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFt
ZSwgMCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIGFjdHVhbERlbGV0ZUNvdW50ID0gbGVuZ3RoIC0gYWN0
dWFsU3RhcnQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKLSAgICAgICAg
ZG91YmxlIGRlbGV0ZUNvdW50ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2Vy
KGV4ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAg
ICAgZG91YmxlIGRlbGV0ZUNvdW50ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50
b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChkZWxldGVDb3VudCA8IDApCiAgICAgICAg
ICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7CkBAIC0xMTM0LDgzICsxMTM0LDgzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVsZXRlQ291bnQpOwogICAgIH0KIAotICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0
UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXko
ZXhlYywgdGhpc09iaiwgYWN0dWFsRGVsZXRlQ291bnQpOworICAgIHN0ZDo6cGFpcjxTcGVjaWVz
Q29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3Ry
dWN0QXJyYXkoY2FsbEZyYW1lLCB0aGlzT2JqLCBhY3R1YWxEZWxldGVDb3VudCk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0
ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAgIGlmIChzcGVjaWVz
UmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBudWxscHRyOwotICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVzUmVz
dWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNBcnJh
eSh0aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgYm9v
bCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVj
dFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxlbmd0aCA9PSB0b0xl
bmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChMSUtFTFkob2tUb0RvRmFzdFBhdGgpKQotICAg
ICAgICByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmV4ZWMsIGFjdHVhbFN0
YXJ0LCBhY3R1YWxEZWxldGVDb3VudCk7CisgICAgICAgIHJlc3VsdCA9IGFzQXJyYXkodGhpc09i
aiktPmZhc3RTbGljZSgqY2FsbEZyYW1lLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQp
OwogCiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgaWYgKHNwZWNpZXNSZXN1bHQuZmlyc3Qg
PT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9iamVjdCkKICAgICAgICAgICAgIHJl
c3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoVW5kZWNpZGVkKSwgYWN0dWFsRGVsZXRlQ291bnQpOworICAgICAgICAgICAgcmVzdWx0ID0g
SlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBhY3R1YWxEZWxl
dGVDb3VudCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYWN0dWFsRGVsZXRlQ291bnQ7ICsraykg
ewotICAgICAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayAr
IGFjdHVhbFN0YXJ0KTsKKyAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGNhbGxG
cmFtZSwgdGhpc09iaiwgayArIGFjdHVhbFN0YXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCF2KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaywgdiwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7
CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgaywgdiwgMCwg
UHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHVu
c2lnbmVkIGl0ZW1Db3VudCA9IHN0ZDo6bWF4PGludD4oZXhlYy0+YXJndW1lbnRDb3VudCgpIC0g
MiwgMCk7CisgICAgdW5zaWduZWQgaXRlbUNvdW50ID0gc3RkOjptYXg8aW50PihjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOwogICAgIGlmIChpdGVtQ291bnQgPCBhY3R1YWxEZWxl
dGVDb3VudCkgewotICAgICAgICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU3BsaWNlPihl
eGVjLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQsIGl0ZW1Db3VudCwg
bGVuZ3RoKTsKKyAgICAgICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oY2Fs
bEZyYW1lLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQsIGl0ZW1Db3Vu
dCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChpdGVtQ291bnQgPiBhY3R1YWxEZWxldGVDb3VudCkg
ewotICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxpY2U+KGV4ZWMsIHRo
aXNPYmosIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgp
OworICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxpY2U+KGNhbGxGcmFt
ZSwgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFjdHVhbERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxl
bmd0aCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgaXRlbUNvdW50OyArK2sp
IHsKLSAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElubGluZShleGVjLCBrICsgYWN0dWFsU3Rh
cnQsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAyKSwgdHJ1ZSk7CisgICAgICAgIHRoaXNP
YmotPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCBrICsgYWN0dWFsU3RhcnQsIGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIAogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICBzZXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGxlbmd0aCAtIGFj
dHVhbERlbGV0ZUNvdW50ICsgaXRlbUNvdW50KTsKKyAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2
bSwgdGhpc09iaiwgbGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVtQ291bnQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAg
SlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxG
cmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKLSAgICBkb3VibGUgZG91YmxlTGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhp
c09iaik7CisgICAgZG91YmxlIGRvdWJsZUxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhp
c09iaik7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZG91YmxlTGVuZ3RoOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgdW5zaWduZWQgbnJB
cmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIG5yQXJncyA9IGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChuckFyZ3MpIHsKICAgICAgICAgaWYgKFVO
TElLRUxZKGRvdWJsZUxlbmd0aCArIHN0YXRpY19jYXN0PGRvdWJsZT4obnJBcmdzKSA+IG1heFNh
ZmVJbnRlZ2VyKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJDYW5ub3Qgc2hpZnQgdG8gb2Zmc2V0IGdyZWF0ZXIgdGhhbiAoMiAqKiA1MykgLSAx
Il9zKTsKLSAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGV4ZWMs
IHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc2hpZnQgdG8gb2Zmc2V0IGdy
ZWF0ZXIgdGhhbiAoMiAqKiA1MykgLSAxIl9zKTsKKyAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpT
aGlmdENvdW50Rm9yU2hpZnQ+KGNhbGxGcmFtZSwgdGhpc09iaiwgMCwgMCwgbnJBcmdzLCBsZW5n
dGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJnczsgKytrKSB7Ci0g
ICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgaywgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0aGlzT2JqLT5wdXRCeUluZGV4SW5saW5lKGNh
bGxGcmFtZSwgaywgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKSwgdHJ1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlbmd0aCArIG5yQXJncyk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwgcmVzdWx0KTsK
KyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgcmVzdWx0KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTEzMTUsMzYgKzEzMTUsMzYgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGZhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZt
LCBKU0FycmF5KiBhcnJheSwgdW5zaWcKICAgICB9CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmlj
dE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChj
YWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICB1bnNpZ25lZCBp
bmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMSwgbGVuZ3Ro
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JF
bmQoY2FsbEZyYW1lLCAxLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7Ci0gICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAogICAg
IGlmIChpc0pTQXJyYXkodGhpc09iamVjdCkpIHsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBm
YXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9uOjpGb3J3YXJkPihleGVjLCB2bSwgYXNBcnJheSh0
aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRleCk7CisgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6Rm9yd2FyZD4oY2FsbEZy
YW1lLCB2bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRl
eCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlm
IChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAg
ICAgfQogCiAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7Ci0gICAgICAgIEpT
VmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmplY3QsIGluZGV4KTsKKyAgICAgICAg
SlNWYWx1ZSBlID0gZ2V0UHJvcGVydHkoY2FsbEZyYW1lLCB0aGlzT2JqZWN0LCBpbmRleCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICghZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpz
dHJpY3RFcXVhbChleGVjLCBzZWFyY2hFbGVtZW50LCBlKTsKKyAgICAgICAgYm9vbCBpc0VxdWFs
ID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoY2FsbEZyYW1lLCBzZWFyY2hFbGVtZW50LCBlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKGlzRXF1
YWwpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7
CkBAIC0xMzUzLDI0ICsxMzUzLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE1Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNh
bGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0
aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1
cm4geyB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3Qp
OworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCAhbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAgICB1bnNpZ25lZCBp
bmRleCA9IGxlbmd0aCAtIDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7
Ci0gICAgICAgIEpTVmFsdWUgZnJvbVZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7
Ci0gICAgICAgIGRvdWJsZSBmcm9tRG91YmxlID0gZnJvbVZhbHVlLnRvSW50ZWdlcihleGVjKTsK
KyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgeworICAgICAgICBKU1Zh
bHVlIGZyb21WYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgICAg
IGRvdWJsZSBmcm9tRG91YmxlID0gZnJvbVZhbHVlLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoZnJvbURv
dWJsZSA8IDApIHsKICAgICAgICAgICAgIGZyb21Eb3VibGUgKz0gbGVuZ3RoOwpAQCAtMTM4MSwx
MCArMTM4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
TGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZnJvbURvdWJsZSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSBzZWFyY2hF
bGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc09iamVjdCkp
IHsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBmYXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9u
OjpCYWNrd2FyZD4oZXhlYywgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0aCwgc2VhcmNo
RWxlbWVudCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPElu
ZGV4T2ZEaXJlY3Rpb246OkJhY2t3YXJkPihjYWxsRnJhbWUsIHZtLCBhc0FycmF5KHRoaXNPYmpl
Y3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzOTIsMTEgKzEzOTIsMTEgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIGRvIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKTsK
LSAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iamVjdCwgaW5kZXgp
OworICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmplY3Qs
IGluZGV4KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAg
ICAgaWYgKCFlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGJvb2wgaXNFcXVhbCA9
IEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIHNlYXJjaEVsZW1lbnQsIGUpOworICAgICAgICBi
b29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIHNlYXJjaEVsZW1l
bnQsIGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICBpZiAoaXNFcXVhbCkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoaW5kZXgpKTsKQEAgLTE1MDAsMTMgKzE1MDAsMTMgQEAgQUxXQVlTX0lOTElORSB2b2lkIGNv
cHlFbGVtZW50cyhUKiBidWZmZXIsIHVuc2lnbmVkIG9mZnNldCwgdm9pZCogc291cmNlLCB1bnNp
Z24KICAgICAgICAgY2xlYXJFbGVtZW50PFQ+KGJ1ZmZlcltpICsgb2Zmc2V0XSk7CiB9OwogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1l
bWNweShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID09IDIpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0Fy
cmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgSlNBcnJheSogZmlyc3RBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgCiAgICAgLy8gVGhpcyBjb2RlIGFzc3Vt
ZXMgdGhhdCBuZWl0aGVyIGFycmF5IGhhcyBzZXQgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZS4g
SWYgdGhlIGZpcnN0IGFycmF5CiAgICAgLy8gaGFzIGluZGV4ZWQgYWNjZXNzb3JzIHRoZW4gb25l
IG9mIHRob3NlIGFjY2Vzc29ycyBtaWdodCBjaGFuZ2UgdGhlIHZhbHVlIG9mIFN5bWJvbC5pc0Nv
bmNhdFNwcmVhZGFibGUKQEAgLTE1MTUsMTQgKzE1MTUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIC8v
IFdlIG5lZWQgdG8gY2hlY2sgdGhlIHNwZWNpZXMgY29uc3RydWN0b3IgaGVyZSBzaW5jZSBjaGVj
a2luZyBpdCBpbiB0aGUgSlMgd3JhcHBlciBpcyB0b28gZXhwZW5zaXZlIGZvciB0aGUgbm9uLW9w
dGltaXppbmcgdGllcnMuCi0gICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1Zh
bGlkKGV4ZWMsIGZpcnN0QXJyYXkpOworICAgIGJvb2wgaXNWYWxpZCA9IHNwZWNpZXNXYXRjaHBv
aW50SXNWYWxpZChjYWxsRnJhbWUsIGZpcnN0QXJyYXkpOwogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CiAgICAgaWYgKFVOTElLRUxZKCFpc1ZhbGlkKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBKU1ZhbHVlIHNlY29uZCA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgc2Vjb25kID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKICAgICBpZiAoIWlzSlNBcnJheShzZWNvbmQpKQotICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbmNhdEFwcGVuZE9uZShleGVjLCB2bSwgZmlyc3RB
cnJheSwgc2Vjb25kKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uY2F0
QXBwZW5kT25lKGNhbGxGcmFtZSwgdm0sIGZpcnN0QXJyYXksIHNlY29uZCkpOwogCiAgICAgSlNB
cnJheSogc2Vjb25kQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KHNlY29uZCk7CiAgICAgCkBAIC0x
NTM2LDcgKzE1MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Q
cml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgY2hlY2tlZFJlc3Vs
dFNpemUgKz0gc2Vjb25kQXJyYXlTaXplOwogCiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRSZXN1
bHRTaXplLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTE1
NDUsMTQgKzE1NDUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
UHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAgIEluZGV4aW5nVHlw
ZSBzZWNvbmRUeXBlID0gc2Vjb25kQXJyYXktPmluZGV4aW5nVHlwZSgpOwogICAgIEluZGV4aW5n
VHlwZSB0eXBlID0gZmlyc3RBcnJheS0+bWVyZ2VJbmRleGluZ1R5cGVGb3JDb3B5aW5nKHNlY29u
ZFR5cGUpOwogICAgIGlmICh0eXBlID09IE5vbkFycmF5IHx8ICFmaXJzdEFycmF5LT5jYW5GYXN0
Q29weSh2bSwgc2Vjb25kQXJyYXkpIHx8IHJlc3VsdFNpemUgPj0gTUlOX1NQQVJTRV9BUlJBWV9J
TkRFWCkgewotICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIG51bGxwdHIsIHJlc3VsdFNpemUpOworICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgcmVzdWx0U2l6ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAg
IGJvb2wgc3VjY2VzcyA9IG1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0LCAwLCBmaXJzdEFy
cmF5LCBmaXJzdEFycmF5U2l6ZSk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IG1vdmVFbGVtZW50
cyhjYWxsRnJhbWUsIHZtLCByZXN1bHQsIDAsIGZpcnN0QXJyYXksIGZpcnN0QXJyYXlTaXplKTsK
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgPT0gc3VjY2Vzcyk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpCiAgICAgICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKLSAgICAgICAgc3VjY2VzcyA9IG1vdmVFbGVtZW50cyhleGVjLCB2bSwg
cmVzdWx0LCBmaXJzdEFycmF5U2l6ZSwgc2Vjb25kQXJyYXksIHNlY29uZEFycmF5U2l6ZSk7Cisg
ICAgICAgIHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCBmaXJz
dEFycmF5U2l6ZSwgc2Vjb25kQXJyYXksIHNlY29uZEFycmF5U2l6ZSk7CiAgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoIXN1Y2Nlc3MpKQogICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CkBAIC0xNTYwLDE2ICsxNTYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwot
ICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOworICAgIFN0
cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24odHlwZSk7CiAgICAgaWYgKFVOTElLRUxZKGhh
c0FueUFycmF5U3RvcmFnZShyZXN1bHRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0gICAgQVNTRVJUKCFsZXhp
Y2FsR2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpOworICAgIEFTU0VSVCghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpOwogICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUgaW5pdGlhbGl6YXRpb25TY29wZSh2bSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoaW5pdGlhbGl6YXRpb25TY29wZSwg
cmVzdWx0U3RydWN0dXJlLCByZXN1bHRTaXplKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
IHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTE1ODgsMjQgKzE1ODcsMjQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHko
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBl
bmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA9PSAzKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0g
Myk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNBcnJheSogcmVzdWx0QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKLSAgICBKU0FycmF5KiBvdGhlckFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNBcnJheSogcmVzdWx0QXJyYXkgPSBqc0Nh
c3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTQXJy
YXkqIG90aGVyQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkpOworICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMik7CiAgICAgQVNTRVJUKHN0YXJ0VmFsdWUuaXNVSW50MzJBc0FueUludCgpKTsK
ICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gc3RhcnRWYWx1ZS5hc1VJbnQzMkFzQW55SW50KCk7
Ci0gICAgYm9vbCBzdWNjZXNzID0gcmVzdWx0QXJyYXktPmFwcGVuZE1lbWNweShleGVjLCB2bSwg
c3RhcnRJbmRleCwgb3RoZXJBcnJheSk7CisgICAgYm9vbCBzdWNjZXNzID0gcmVzdWx0QXJyYXkt
PmFwcGVuZE1lbWNweShjYWxsRnJhbWUsIHZtLCBzdGFydEluZGV4LCBvdGhlckFycmF5KTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CiAgICAg
aWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIG1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0QXJy
YXksIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXksIG90aGVyQXJyYXktPmxlbmd0aCgpKTsKKyAgICBt
b3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwgcmVzdWx0QXJyYXksIHN0YXJ0SW5kZXgsIG90aGVy
QXJyYXksIG90aGVyQXJyYXktPmxlbmd0aCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuaAppbmRleCA3NWFjOWQyYWQ0YWRhNmUzODNhZmQ5NDgwNTU0ZTRmODQ2
NmU4NGZiLi42YjJkZjYzYWViZDFiMTYwNzI4YjU1YjgwNGQxOGY2Njc1OWM3YmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKQEAgLTUwLDEw
ICs1MCwxMCBAQCBjbGFzcyBBcnJheVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0FycmF5IHsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1ZhbHVlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhl
Y1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3Bl
Y2llc0NyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFs
dWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJp
dmF0ZUZ1bmNBcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBjNzc4YTAwYzg5MGE5OGFj
NDJlZDBhYjA4MGQ5ZjY0NzExOTNhN2MwLi43YjhmYWFiZDAzYzllY2RjYjUxNjNjZTYzNWE0MTZi
NGVhOWJiZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQCBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkp
LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7CisgICAgQXJnTGlzdCBh
cmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5j
dGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpBc3luYykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKIH0KIAog
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDlhMzkzODc2ZThlMzUzMWViMjk3YjJhNGM1NDI2YjUwODdiMDg1MmQuLjhmN2E4
MmQxZDIwNTk0MzdjMmJhNjFhNjEyYTE2YmZlNGMxYjE3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OwogCiBjb25zdCBDbGFzc0luZm8gQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxB
c3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2Fs
bEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFz
eW5jR2VuZXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkp
LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJhdG9yKSk7CisgICAg
QXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOwogfQogCiBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCAzNjhlYThmYTZjY2I5NzZlMWM1MWQ4ZTBiNDc2NTZm
ZjI1OWQzMjA2Li5hNmQwOTc0NTdlOTQzOTMyMzIyMDA0NzY5YTkyYjk1MTRhNTljMWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAt
NTIsNyArNTIsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQXRv
bWljc09iamVjdCk7CiAgICAgbWFjcm8oeG9yLCBYb3IsIDMpCiAKICNkZWZpbmUgREVDTEFSRV9G
VU5DX1BST1RPKGxvd2VyTmFtZSwgdXBwZXJOYW1lLCBjb3VudCkgICAgICAgICAgICAgICAgIFwK
LSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jICMjIHVwcGVyTmFt
ZShFeGVjU3RhdGUqKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NG
dW5jICMjIHVwcGVyTmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogRk9SX0VBQ0hf
QVRPTUlDU19GVU5DKERFQ0xBUkVfRlVOQ19QUk9UTykKICN1bmRlZiBERUNMQVJFX0ZVTkNfUFJP
VE8KIApAQCAtMTg2LDEyICsxODYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgYXRvbWljT3BlcmF0aW9u
V2l0aEFyZ3MoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTVmFsdWUqIGEKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLUVuY29kZWRKU1ZhbHVlIGF0b21pY09wZXJhdGlvbldp
dGhBcmdzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRnVuYyYgZnVuYykKK0VuY29kZWRKU1ZhbHVl
IGF0b21pY09wZXJhdGlvbldpdGhBcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEpTVmFsdWUgYXJn
c1syICsgRnVuYzo6bnVtRXh0cmFBcmdzXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAyICsgRnVu
Yzo6bnVtRXh0cmFBcmdzOyBpLS07KQotICAgICAgICBhcmdzW2ldID0gZXhlYy0+YXJndW1lbnQo
aSk7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMtPnZtKCksIGV4ZWMs
IGFyZ3MsIGZ1bmMpOworICAgICAgICBhcmdzW2ldID0gY2FsbEZyYW1lLT5hcmd1bWVudChpKTsK
KyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZ2xvYmFsT2JqZWN0LT52bSgpLCBj
YWxsRnJhbWUsIGFyZ3MsIGZ1bmMpOwogfQogCiBzdHJ1Y3QgQWRkRnVuYyB7CkBAIC0zMTMsODAg
KzMxMyw4MCBAQCBFbmNvZGVkSlNWYWx1ZSBpc0xvY2tGcmVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBhcmcpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQWRkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlv
bldpdGhBcmdzKGV4ZWMsIEFkZEZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldp
dGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBBZGRGdW5jKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQW5kKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNBbmQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21p
Y09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIEFuZEZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09w
ZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBBbmRGdW5jKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQ29tcGFyZUV4Y2hhbmdl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1
bmNDb21wYXJlRXhjaGFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMs
IENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhB
cmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBDb21wYXJlRXhjaGFuZ2VGdW5jKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jRXhjaGFuZ2UoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0V4Y2hh
bmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBFeGNoYW5nZUZ1bmMo
KSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCBFeGNoYW5nZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXRvbWljc0Z1bmNJc0xvY2tGcmVlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNJc0xvY2tGcmVlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGlzTG9ja0ZyZWUoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpOworICAgIHJldHVybiBpc0xvY2tGcmVlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWlj
c0Z1bmNMb2FkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXRvbWljc0Z1bmNMb2FkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBM
b2FkRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIExvYWRGdW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGF0b21pY3NGdW5jT3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhdG9taWNzRnVuY09yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJn
cyhleGVjLCBPckZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBPckZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmNTdG9yZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3RvcmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJh
dGlvbldpdGhBcmdzKGV4ZWMsIFN0b3JlRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0
aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIFN0b3JlRnVuYygpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1N1YihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3ViKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBTdWJGdW5jKCkpOworICAgIHJldHVybiBh
dG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgU3ViRnVuYygp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dhaXQoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dh
aXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAg
IEpTSW50MzJBcnJheSogdHlwZWRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4o
dm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU0ludDMyQXJyYXkqIHR5cGVkQXJyYXkgPSBq
c0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIXR5cGVkQXJyYXkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVHlwZWQgYXJyYXkg
Zm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCF0
eXBlZEFycmF5LT5pc1NoYXJlZCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1
ZmZlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVHlw
ZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3Mp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
IAotICAgIHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRhdGVkQWNjZXNzSW5kZXgodm0sIGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCB0eXBlZEFycmF5KTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NJ
bmRleCA9IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZtLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSksIHR5cGVkQXJyYXkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCiAgICAgaW50MzJfdCogcHRyID0g
dHlwZWRBcnJheS0+dHlwZWRWZWN0b3IoKSArIGFjY2Vzc0luZGV4OwogICAgIAotICAgIGludDMy
X3QgZXhwZWN0ZWRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIoZXhlYyk7CisgICAg
aW50MzJfdCBleHBlY3RlZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKS50b0ludDMyKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKTsKICAgICAKLSAgICBkb3VibGUgdGltZW91dEluTWlsbGlzZWNvbmRz
ID0gZXhlYy0+YXJndW1lbnQoMykudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIHRpbWVvdXRJ
bk1pbGxpc2Vjb25kcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMykudG9OdW1iZXIoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpOwogICAgIAogICAgIGlmICghdm0ubV90eXBlZEFycmF5Q29udHJvbGxlci0+aXNB
dG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQoKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgIkF0b21pY3Mud2FpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20gdGhl
IGN1cnJlbnQgdGhyZWFkLiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJBdG9taWNzLndhaXQgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRoZSBjdXJyZW50IHRo
cmVhZC4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIH0KICAgICAKQEAgLTM5OCw3ICszOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gICAgIGEuIExl
dCBxIGJlID8gVG9OdW1iZXIodGltZW91dCkuCiAgICAgLy8gICAgIGIuIElmIHEgaXMgTmFOIHRo
ZW4gbGV0IHQgYmUgK2luZiwgb3RoZXJ3aXNlIGxldCB0IGJlIG1heCgwLCBxKS4KICAgICAvLwot
ICAgIC8vIGV4ZWMtPmFyZ3VtZW50KDMpIHJldHVybnMgdW5kZWZpbmVkIGlmIGl0J3Mgbm90IHBy
b3ZpZGVkIGFuZCBUb051bWJlcih1bmRlZmluZWQpIHJldHVybnMgTmFOLAorICAgIC8vIGNhbGxG
cmFtZS0+YXJndW1lbnQoMykgcmV0dXJucyB1bmRlZmluZWQgaWYgaXQncyBub3QgcHJvdmlkZWQg
YW5kIFRvTnVtYmVyKHVuZGVmaW5lZCkgcmV0dXJucyBOYU4sCiAgICAgLy8gc28gTmFOIGlzIHRo
ZSBvbmx5IHNwZWNpYWwgY2FzZS4KICAgICBpZiAoIXN0ZDo6aXNuYW4odGltZW91dCkpCiAgICAg
ICAgIHRpbWVvdXQgPSBzdGQ6Om1heCgwX3MsIHRpbWVvdXQpOwpAQCAtNDI4LDMxICs0MjgsMzEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dhaXQoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdFN0
cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2Fr
ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NG
dW5jV2FrZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
Ci0gICAgSlNJbnQzMkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0ludDMyQXJy
YXkqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJh
eSA9IGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmICghdHlwZWRBcnJheSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCBiZSBhbiBJbnQzMkFycmF5
LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUeXBlZCBh
cnJheSBmb3Igd2FpdC93YWtlIG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3MpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKICAgICBp
ZiAoIXR5cGVkQXJyYXktPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJlZEFy
cmF5QnVmZmVyLiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVy
LiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogCi0gICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRBY2Nlc3NJbmRleCh2
bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIHR5cGVkQXJyYXkpOworICAgIHVuc2lnbmVkIGFj
Y2Vzc0luZGV4ID0gdmFsaWRhdGVkQWNjZXNzSW5kZXgodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgdHlwZWRBcnJheSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAgICBpbnQzMl90KiBw
dHIgPSB0eXBlZEFycmF5LT50eXBlZFZlY3RvcigpICsgYWNjZXNzSW5kZXg7CiAgICAgCi0gICAg
SlNWYWx1ZSBjb3VudFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBjb3Vu
dFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICB1bnNpZ25lZCBjb3VudCA9IFVJ
TlRfTUFYOwogICAgIGlmICghY291bnRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlu
dDMyX3QgY291bnRJbnQgPSBjb3VudFZhbHVlLnRvSW50MzIoZXhlYyk7CisgICAgICAgIGludDMy
X3QgY291bnRJbnQgPSBjb3VudFZhbHVlLnRvSW50MzIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsK
ICAgICAgICAgY291bnQgPSBzdGQ6Om1heCgwLCBjb3VudEludCk7CiAgICAgfQpAQCAtNDYwLDkg
KzQ2MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWtlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFBhcmtp
bmdMb3Q6OnVucGFya0NvdW50KHB0ciwgY291bnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmNYb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1hvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9u
V2l0aEFyZ3MoZXhlYywgWG9yRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0
aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIFhvckZ1bmMoKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0FkZChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGluZGV4LCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
Q29uc3RydWN0b3IuY3BwCmluZGV4IDE5YTMyNWUyYjRjYTM3NWIxMWMzYjUxZmY5NThhMTYwMWVk
YTkyMmMuLjlhYTY1ODdhMTE3NmE3ODc2ZGE2MzY3NzdlNjBkNzIyNWQzYzQ2YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3Rv
ckZ1bmNBc0ludE4oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1
Y3RvckZ1bmNBc0ludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKQEAgLTU3LDcgKzU3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEJpZ0ludENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZiaWdJbnQKIEBl
bmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBCaWdJbnRDb25zdHJ1Y3Rvcjo6QmlnSW50Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEJp
Z0ludENvbnN0cnVjdG9yLCBudWxscHRyKQpAQCAtMTEwLDE4ICsxMTAsMTggQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIHRvQmlnSW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYXJndW1lbnQp
CiAgICAgfSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
QmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0
ZS0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2
ZShzdGF0ZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KHByaW1pdGl2ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghaXNTYWZlSW50ZWdlcihwcmlt
aXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Y2FsbEZyYW1lLCAiTm90IHNhZmUgaW50ZWdlciJfcykpOwogICAgICAgICAKICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgICAgICBpZiAocHJpbWl0aXZlLmlzSW50MzIoKSkKQEAgLTEzMywx
MiArMTMzLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJ
bnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihwcmlt
aXRpdmUuYXNEb3VibGUoKSkpKTsKICAgICB9CiAgICAgCi0gICAgRW5jb2RlZEpTVmFsdWUgcmVz
dWx0ID0gdG9CaWdJbnQoKnN0YXRlLCBwcmltaXRpdmUpOworICAgIEVuY29kZWRKU1ZhbHVlIHJl
c3VsdCA9IHRvQmlnSW50KCpjYWxsRnJhbWUsIHByaW1pdGl2ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1Vp
bnROKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0
cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIC8v
IEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJ
bnQuYXNVaW50TgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODExNDQKQEAgLTE0Niw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oRXhlY1N0YXRlKikKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopCiB7CiAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gSW1wbGVt
ZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggNGYxZTI1YTcwN2MyZWI2
ODExZGZhYzhhOWM3YTlhYjRmYmM0NGYyMC4uYmEwY2U3MzkxNzAwMzZmNWM5MWIzMTVlZTMzNDg0
OGE1NmFkYTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwCkBAIC00MSw5ICs0MSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0lu
dFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50
UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAg
LTkwLDQyICs5MCw0NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU0JpZ0ludCogdG9UaGlzQmln
SW50VmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJp
bmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2bSwgc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQg
b3IgQmlnSW50T2JqZWN0Il9zKTsKLSAgICAKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJ
bnRPYmplY3QiX3MpOworCiAgICAgQVNTRVJUKHZhbHVlKTsKIAotICAgIGludDMyX3QgcmFkaXgg
PSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IHNjb3BlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVudChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHNjb3BlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHZhbHVlLT50
b1N0cmluZyhzdGF0ZSwgcmFkaXgpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSB2YWx1ZS0+dG9TdHJp
bmcoY2FsbEZyYW1lLCByYWRpeCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKHJlc3VsdFN0cmluZy5sZW5ndGgoKSA9
PSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy5zaW5n
bGVDaGFyYWN0ZXJTdHJpbmcocmVzdWx0U3RyaW5nWzBdKSk7CisgICAgICAgIHJldHVybiB2bS5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHJlc3VsdFN0cmluZ1swXSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcmVzdWx0U3Ry
aW5nKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcmVzdWx0U3RyaW5nKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZyhzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1
bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgaWYg
KEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBzdGF0ZS0+dGhpc1ZhbHVl
KCkpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoSlNCaWdJbnQq
IHZhbHVlID0gdG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50
T2JqZWN0Il9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ZWI5NjAwNzcwYzY0YzQyMmYxMWU0
MTViZWQ4ZDg4Zjk4ODVmOTgyLi41OTliODg1NGU4ZjVhOWE1MTA4YWVlYzAzMDZmYWI0NDhkMDZi
NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDE4ICszMiwxOCBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBC
b29sZWFuQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCb29sZWFuQ29uc3RydWN0b3Ip
IH07CiAKIC8vIEVDTUEgMTUuNi4xCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsQm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihleGVjLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvQm9v
bGVhbihjYWxsRnJhbWUpKSk7CiB9CiAKIC8vIEVDTUEgMTUuNi4yCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgYm9vbGVhbiA9IGpzQm9vbGVhbihleGVjLT5hcmd1bWVu
dCgwKS50b0Jvb2xlYW4oZXhlYykpOwotICAgIFN0cnVjdHVyZSogYm9vbGVhblN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5l
d1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3Qodm0pLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOworICAgIEpTVmFsdWUg
Ym9vbGVhbiA9IGpzQm9vbGVhbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihjYWxs
RnJhbWUpKTsKKyAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCksIGdsb2JhbE9iamVjdC0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBCb29sZWFuT2Jq
ZWN0KiBvYmogPSBCb29sZWFuT2JqZWN0OjpjcmVhdGUodm0sIGJvb2xlYW5TdHJ1Y3R1cmUpOwog
ICAgIG9iai0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwgYm9vbGVhbik7CkBAIC02Miw5ICs2Miw5IEBA
IHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJvb2xlYW5Q
cm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLUpTT2Jq
ZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGltbWVkaWF0ZUJvb2xlYW5W
YWx1ZSkKK0pTT2JqZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpbW1lZGlhdGVC
b29sZWFuVmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gQm9vbGVhbk9iamVj
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSk7CiAg
ICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKHZtLCBpbW1lZGlhdGVCb29sZWFuVmFsdWUpOwogICAg
IHJldHVybiBvYmo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCmluZGV4IDA2ZjlmZDMwYWQ1Mjc4OTgwYTUzMTI4NDdkMzZhZjA1NmMx
Mjc5YzYuLjNmOWI1ZGZkYmZkODU0ZDQ0MWQ3YjY5MjEwNGFjMzc4NDk2MzQwYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCkBA
IC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVP
ZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02NSwxMSArNjUsMTEgQEAgdm9p
ZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7CiAKQEAgLTc4
LDcgKzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8Qm9vbGVhbk9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxz
ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJpbmdzLmZhbHNl
U3RyaW5nKCkpOwpAQCAtODcsMTcgKzg3LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1Zh
bHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNCb29sZWFu
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJvb2xlYW5PYmplY3QqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlz
T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhbGxEYXRhLmgKaW5kZXggMDhmNzlkZjRkNjc4MDEzNDQ0YTZhNjM5YWI0ZmZhNDlhZTcxYjVh
MC4uZTk3MTQ4ODUyZDBiOGU2NzQ1NDc4ZWZmOTIwNTMzYTRjNWIzYWY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCkBAIC0zMywxMiArMzMsMTMgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEFyZ0xpc3Q7CiBjbGFzcyBF
eGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBKU09iamVjdDsKIGNsYXNzIEpTU2NvcGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiAKIGVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZCB7CiAgICAgTm9uZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggZDVk
NmY3ZTI0MDBkYjdjOTBlZDFmMzY5ZWJmODMyNzgyNmQ5NGExYi4uMWY3NWNiNTA5ZWE2MzVhYmUy
Mzc1NTEwNzVhMmExNTQyNTJlM2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTMwNiw3ICszMDYsOCBAQCBpbmxpbmUgSlNBcnJh
eSogYWxsb2NhdGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0ltbXV0YWJsZQogCiB9IC8vIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMKIAotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
c3RydWN0IEluc3RydWN0aW9uOwogCiAjZGVmaW5lIFNMT1dfUEFUSApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IGIxZThlMjliNTAyYzc3MzBiMTNiNjMw
YmMzOTdiZjkxMTYzZWIzOGEuLjIxNmQ2NmRjNzE4Y2IyZmE5NTM2ZDk5ZWI2OTgyZTM4YjZjNmU0
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTMx
LDE0ICszMSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVDYWNoZUVycm9y
OwogY2xhc3MgQ2FjaGVkQnl0ZWNvZGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBFeGNlcHRp
b247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFBhcnNlckVycm9y
OwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFN5bWJvbDsKIGNsYXNzIFZNOwogY2xhc3MgSlNJ
bnRlcm5hbFByb21pc2U7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2Vy
RXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oCmluZGV4IDE5OGVmZjNhMzZmMjBj
MTc3MTU3MzU4MjE0NjJmMTM4MGU3NTUxMTUuLjk4MzhkOTUyODNkMDgzN2Y1MTY3ZmU5MmIzY2Ux
NGUzZWE2YWY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xl
Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDggQEAgY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBDb25zb2xlQ2xpZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKaW5k
ZXggN2Y0Y2Y3ZTQ2M2ZlYzliM2Q1NTYxNzZjYzM1M2NiOGFiMDIwZDhiNi4uNmE3MjEzMWY2MjY5
Nzc2ZWIyZWFlOTY4Y2JkYWM2MGFhZjA3M2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKQEAgLTQ4LDMyICs0OCwzMiBAQCBzdGF0aWMg
U3RyaW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ29uc29sZU9iamVjdCk7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNFcnJvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNXYXJuKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFibGUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jVHJhY2UoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Nv
dW50UmVzZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rh
a2VIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rp
bWVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29s
bGFwc2VkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmRF
bmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jU2NyZWVuc2hvdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jSW5mbyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rh
YmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNBc3NlcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1RpbWVFbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXAoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNHcm91cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFw
c2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIGNvbnN0IENsYXNzSW5mbyBDb25zb2xlT2JqZWN0OjpzX2luZm8gPSB7ICJDb25zb2xl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
b25zb2xlT2JqZWN0KSB9OwogCkBAIC0xMjYsMzA5ICsxMjYsMzA5IEBAIHN0YXRpYyBTdHJpbmcg
dmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsCiAgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChFeGVjU3RhdGUqIGV4ZWMsIE1l
c3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25zb2xlTG9nV2l0aExl
dmVsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVu
dCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGll
bnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAg
ICBjbGllbnQtPmxvZ1dpdGhMZXZlbChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhleGVjLCAwKSwgbGV2ZWwpOworICAgIGNsaWVudC0+bG9nV2l0aExldmVsKGNhbGxGcmFt
ZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSwgbGV2ZWwp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jRGVidWcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2Fn
ZUxldmVsOjpEZWJ1Zyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6RGVidWcpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IpOworICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkVycm9yKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0xvZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6TG9nKTsKKyAgICBy
ZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTWVzc2Fn
ZUxldmVsOjpMb2cpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jSW5mbyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxv
Z1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkluZm8pOworICAgIHJldHVybiBjb25zb2xl
TG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkluZm8p
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jV2FybihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChl
eGVjLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcpOworICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExl
dmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xl
YXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAg
Y2xpZW50LT5jbGVhcihleGVjKTsKKyAgICBjbGllbnQtPmNsZWFyKGNhbGxGcmFtZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
RGlyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9i
amVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5kaXIoZXhlYywg
SW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+
ZGlyKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1l
LCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhN
TChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jRGlyWE1MKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAg
Y2xpZW50LT5kaXJYTUwoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhl
YywgMCkpOworICAgIGNsaWVudC0+ZGlyWE1MKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQo
KTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGll
bnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+dGFibGUoZXhlYywgSW5zcGVjdG9yOjpjcmVh
dGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dGFibGUoY2FsbEZyYW1l
LCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1RyYWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2Jh
bE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT50cmFjZShl
eGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xp
ZW50LT50cmFjZShjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNh
bGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNBc3NlcnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xp
ZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBib29s
IGNvbmRpdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihleGVjKTsKKyAgICBib29s
IGNvbmRpdGlvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICBpZiAoY29uZGl0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgY2xpZW50LT5hc3NlcnRpb24oZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOworICAgIGNsaWVudC0+YXNzZXJ0aW9uKGNhbGxGcmFt
ZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAxKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
LSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmpl
Y3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVu
dCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGNsaWVudC0+Y291bnQoZXhlYywgbGFiZWwpOworICAgIGNsaWVudC0+Y291bnQo
Y2FsbEZyYW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0NvdW50UmVzZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBj
bGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1
dG8gbGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFi
ZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPmNvdW50
UmVzZXQoZXhlYywgbGFiZWwpOworICAgIGNsaWVudC0+Y291bnRSZXNldChjYWxsRnJhbWUsIGxh
YmVsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmls
ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0g
Z2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBzaXplX3QgYXJn
c0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoIWFyZ3NDb3VudCkgewotICAgICAg
ICBjbGllbnQtPnByb2ZpbGUoZXhlYywgU3RyaW5nKCkpOworICAgICAgICBjbGllbnQtPnByb2Zp
bGUoY2FsbEZyYW1lLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRv
U3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7
CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xpZW50LT5wcm9m
aWxlKGV4ZWMsIHRpdGxlKTsKKyAgICBjbGllbnQtPnByb2ZpbGUoY2FsbEZyYW1lLCB0aXRsZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGVFbmQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1Byb2ZpbGVFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9
IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgc2l6ZV90IGFy
Z3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3QgYXJnc0NvdW50ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKCFhcmdzQ291bnQpIHsKLSAgICAg
ICAgY2xpZW50LT5wcm9maWxlRW5kKGV4ZWMsIFN0cmluZygpKTsKKyAgICAgICAgY2xpZW50LT5w
cm9maWxlRW5kKGNhbGxGcmFtZSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUo
dmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVu
dC0+cHJvZmlsZUVuZChleGVjLCB0aXRsZSk7CisgICAgY2xpZW50LT5wcm9maWxlRW5kKGNhbGxG
cmFtZSwgdGl0bGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNUYWtlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDb25zb2xlQ2xpZW50KiBj
bGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAg
ICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsK
ICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7
CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAg
IGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChleGVj
LCBTdHJpbmcoKSk7CisgICAgICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChjYWxsRnJhbWUs
IFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBjb25zdCBT
dHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRha2VIZWFwU25hcHNob3Qo
ZXhlYywgdGl0bGUpOworICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChjYWxsRnJhbWUsIHRp
dGxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVj
LT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29u
c29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0
TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxT
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGltZShleGVjLCBsYWJlbCk7CisgICAgY2xpZW50
LT50aW1lKGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNUaW1lTG9nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8qIGNsaWVudCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgYXV0byog
Y2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBh
dXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsKKyAgICBhdXRvIGxh
YmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xpZW50LT50aW1l
TG9nKGV4ZWMsIGxhYmVsLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAx
KSk7CisgICAgY2xpZW50LT50aW1lTG9nKGNhbGxGcmFtZSwgbGFiZWwsIEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8qIGNs
aWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsKKyAg
ICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xp
ZW50LT50aW1lRW5kKGV4ZWMsIGxhYmVsKTsKKyAgICBjbGllbnQtPnRpbWVFbmQoY2FsbEZyYW1l
LCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rp
bWVTdGFtcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNv
bGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCi0gICAgY2xpZW50LT50aW1lU3RhbXAoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRB
cmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dGltZVN0YW1wKGNhbGxGcmFtZSwgSW5z
cGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmpl
Y3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Z3JvdXAoZXhlYywg
SW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+
Z3JvdXAoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJh
bWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3Jv
dXBDb2xsYXBzZWQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwor
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgp
OwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cENvbGxhcHNlZChleGVjLCBJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5ncm91cENvbGxh
cHNlZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFt
ZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91
cEVuZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNs
aWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFj
bGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
LSAgICBjbGllbnQtPmdyb3VwRW5kKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1l
bnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwRW5kKGNhbGxGcmFtZSwgSW5zcGVjdG9y
OjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29u
c29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+
Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5yZWNvcmQoZXhlYywgSW5z
cGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+cmVj
b3JkKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1l
LCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29y
ZEVuZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVD
bGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICgh
Y2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgY2xpZW50LT5yZWNvcmRFbmQoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1
bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+cmVjb3JkRW5kKGNhbGxGcmFtZSwgSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1NjcmVlbnNob3QoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Nj
cmVlbnNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnNjcmVl
bnNob3QoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwor
ICAgIGNsaWVudC0+c2NyZWVuc2hvdChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0
cnVjdERhdGEuaAppbmRleCA1OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNjMWFkMjU5M2Y5MzEwODBk
Li45NjczNTg1MTRiMWQ4MzA0ZTkyYmRjNjkwM2E0ZGMwZmI1ZWU0MzE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCkBAIC0zNSwxMCArMzUsMTEg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcmdMaXN0OwotY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNPYmpl
Y3Q7CiBjbGFzcyBKU1Njb3BlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBlbnVt
IGNsYXNzIENvbnN0cnVjdFR5cGUgOiB1bnNpZ25lZCB7CiAgICAgTm9uZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IGY2Yjhm
ZWUwNmE3YmNlMjAwNTVhMzQ5Nzc4NGRhZjI3OWJmMGRlY2YuLmYwYzViMjA5OTlkYzRlMTFiNWEw
NmVhMjg0YjQ1MjBlMWUzYzVlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNDUsOCArNDUsOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVO
b3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02OCw4ICs2OSw4IEBA
IGNvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb246OnNfaW5mCiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRShEYXRlQ29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsRGF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsRGF0ZSwg
Y29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcikKQEAgLTE1MCwzOCArMTUxLDQzIEBAIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBuCiAgICAgcmV0dXJuIERhdGVJbnN0YW5jZTo6Y3JlYXRlKHZtLCBk
YXRlU3RydWN0dXJlLCB2YWx1ZSk7CiB9CiAgICAgCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RGF0ZShleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGV4ZWMtPm5ld1RhcmdldCgpLCBh
cmdzKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3REYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
Pm5ld1RhcmdldCgpLCBhcmdzKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4yCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHRzOwog
ICAgIG1zVG9HcmVnb3JpYW5EYXRlVGltZSh2bSwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCkubWlsbGlzZWNvbmRzKCksIFdURjo6TG9jYWxUaW1lLCB0cyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZvcm1hdERhdGVUaW1lKHRz
LCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBmYWxzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIFN0cmluZyBkYXRlU3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGRhdGVTdHIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGV4ZWMsIHZtLCBkYXRlU3RyKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJz
ZURhdGUoY2FsbEZyYW1lLCB2bSwgZGF0ZVN0cikpKSk7Cit9CisKK0pTVmFsdWUgZGF0ZU5vd0lt
cGwoKQoreworICAgIHJldHVybiBqc051bWJlcihqc0N1cnJlbnRUaW1lKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKikKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc0N1cnJlbnRUaW1lKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSogZXhl
YykgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBkb3VibGUgbXMgPSBtaWxsaXNlY29uZHNG
cm9tQ29tcG9uZW50cyhleGVjLCBBcmdMaXN0KGV4ZWMpLCBXVEY6OlVUQ1RpbWUpOworICAgIGRv
dWJsZSBtcyA9IG1pbGxpc2Vjb25kc0Zyb21Db21wb25lbnRzKGNhbGxGcmFtZSwgQXJnTGlzdChj
YWxsRnJhbWUpLCBXVEY6OlVUQ1RpbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodGltZUNsaXAobXMpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggYzE2MjUwZDM5OTcyMTMxZDMyOTMwY2Q5YjRm
MDMxNmQzZDM1MDdmNC4uYmVjNDBhNWMzMDhmODI5OTQ3YjI2NWRmODQ3NDMxMmEzOTUyMjg5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgK
QEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRGF0ZUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG5ld1RhcmdldCwgY29uc3QgQXJnTGlzdCYpOwot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CitKU1Zh
bHVlIGRhdGVOb3dJbXBsKCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCAxODUyMmQxMDA0NGRl
MTNhNTAyOWM2NTc2MzQ5MjA1M2M5YWJjOTczLi45MTc3MTZkMWUxNjgwODg5NzI1ZTM1NWEyMzdm
NTFlZjA2OWRiZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcApAQCAtNzEsNTAgKzcxLDUwIEBAIG5hbWVzcGFjZSBKU0MgewogCiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RGF5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRIb3VycyhFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1p
bnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENE
YXkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRl
cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFVUQ01vbnRoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3Vy
cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
RGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaW51
dGVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDTW9udGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0YXRl
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXREYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0U2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY0dldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWludXRlcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0TW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dFRpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0Z1
bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
TWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXRVVENNb250aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0WWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0xvY2FsZURhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3lt
Ym9sKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvSlNPTihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9
CiAKQEAgLTUyNSwzMSArNTI1LDMxIEBAIHZvaWQgRGF0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAvLyBGdW5jdGlvbnMK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBj
b25zdCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBmb3JtYXRlRGF0ZUlu
c3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRDVmFyaWFudCk7Cisg
ICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRlVGltZUZvcm1hdERh
dGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50
ID0gdHJ1ZTsKLSAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZv
cm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUlu
c3RhbmNlKGNhbGxGcmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jVG9JU09TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRo
aXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKICAgICAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIERhdGUiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGNhbGxGcmFtZSwgIkludmFsaWQgRGF0ZSJfcykpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
VVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGlt
ZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlm
ICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykpKTsKICAgICAvLyBN
YXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAobWF4LiBkaWdpdHMg
aW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRoLCBkYXksIGhvdXIs
IG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlzZWNvbmRzKQpAQCAt
NTczLDMwNiArNTczLDMwNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZyhidWZmZXIsIGNoYXJhY3RlcnNXcml0
dGVuKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0RhdGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKLSAgICBy
ZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGUsIGFzVVRD
VmFyaWFudCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRl
VGltZUZvcm1hdERhdGUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBjb25zdCBib29sIGFzVVRD
VmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERh
dGVUaW1lRm9ybWF0VGltZSwgYXNVVENWYXJpYW50KTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJ
bnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0VGltZSwgYXNVVENWYXJpYW50KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRo
aXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9j
YWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCks
IExvY2FsZURhdGVBbmRUaW1lKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRM
b2NhbGVEYXRlKGNhbGxGcmFtZSwgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51
bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhp
c0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGNhbGxGcmFtZSwgdGhp
c0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGlt
ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Zm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFs
TnVtYmVyKCksIExvY2FsZVRpbWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1h
dExvY2FsZURhdGUoY2FsbEZyYW1lLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFs
TnVtYmVyKCksIExvY2FsZVRpbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2woRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2woSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVb
U3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0ZS5w
cm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2Jq
ZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhp
c1ZhbHVlKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50
b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAgICBpZiAoIWNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBl
Y3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwogCi0gICAgSlNWYWx1ZSBoaW50VmFsdWUgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHR5cGUg
PSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoZXhlYywgaGludFZhbHVlKTsKKyAgICBKU1ZhbHVl
IGhpbnRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGNhbGxGcmFt
ZSwgaGludFZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIGlmICh0eXBlID09IE5vUHJlZmVyZW5jZSkKICAgICAgICAgdHlwZSA9
IFByZWZlclN0cmluZzsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNPYmplY3QtPm9yZGluYXJ5VG9QcmltaXRpdmUoZXhlYywgdHlwZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5v
cmRpbmFyeVRvUHJpbWl0aXZlKGNhbGxGcmFtZSwgdHlwZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1
bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0
aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAg
Y29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmot
PmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGlt
ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFll
YXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRo
aXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3Jp
YW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAg
ICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9i
ai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRh
dGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250
aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRNb250aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVP
YmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVU
aW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGgoKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRV
VENNb250aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGgoKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWlj
Q2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2Fs
bEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8
RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0
ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNh
bGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5z
dGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPndlZWtEYXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRp
bWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVU
aW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAg
aWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRh
dGVUaW1lLT53ZWVrRGF5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShl
eGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdv
cmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPmhv
dXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMp
OworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29y
aWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+aG91
cigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dE1pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
dGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdv
cmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlu
dXRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0
aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7Cisg
ICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVP
YmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5taW51dGUo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRT
ZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRo
aXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3Jp
YW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1l
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29u
ZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhp
c0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlh
bkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0
ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWls
bGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKHN0ZDo6aXNuYW4obWlsbGkpKQpAQCAtODgz
LDE0ICs4ODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKG1zKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRl
T2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIGRv
dWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwogICAgIGlmIChzdGQ6
OmlzbmFuKG1pbGxpKSkKQEAgLTkwMSwzMSArOTAxLDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtcykpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRUaW1lem9uZU9mZnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0Rh
dGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRh
dGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVn
b3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcigtZ3JlZ29yaWFuRGF0ZVRpbWUtPnV0Y09mZnNldCgpIC8gbWlu
dXRlc1BlckhvdXIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0VGltZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
KiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBkb3VibGUgbWlsbGkgPSB0aW1lQ2xpcChleGVj
LT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CisgICAgZG91YmxlIG1pbGxpID0gdGltZUNs
aXAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aGlzRGF0ZU9i
ai0+c2V0SW50ZXJuYWxOdW1iZXIobWlsbGkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIobWlsbGkpKTsKQEAgLTEwMTQsODYgKzEwMTQsODYgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51bUFy
Z3NUb1VzZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDEsIFdU
Rjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZy
YW1lLCAxLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0
TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMSwgV1RGOjpVVENUaW1lKTsKKyAgICByZXR1cm4g
c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAxLCBXVEY6OlVUQ1RpbWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRTZWNvbmRzKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMiwgV1RGOjpMb2NhbFRpbWUp
OworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6
TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4
ZWMsIDIsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdz
KGNhbGxGcmFtZSwgMiwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaW51dGVzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJv
bVRpbWVBcmdzKGV4ZWMsIDMsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFs
dWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0
VVRDTWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAzLCBXVEY6OlVUQ1RpbWUpOwor
ICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDMsIFdURjo6VVRD
VGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dEhvdXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldEhvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDQsIFdURjo6TG9j
YWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCA0
LCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdz
KGV4ZWMsIDQsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVB
cmdzKGNhbGxGcmFtZSwgNCwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURh
dGVBcmdzKGV4ZWMsIDEsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAxLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRGF0
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAxLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVy
biBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDEsIFdURjo6VVRDVGltZSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1vbnRoKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldE1vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDIsIFdURjo6TG9jYWxUaW1lKTsK
KyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAyLCBXVEY6Okxv
Y2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldFVUQ01vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDIs
IFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNhbGxG
cmFtZSwgMiwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0
ZUFyZ3MoZXhlYywgMywgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21EYXRlQXJncyhjYWxsRnJhbWUsIDMsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFllYXIoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
RnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMywgV1RGOjpVVENUaW1lKTsKKyAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6OlVUQ1Rp
bWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZ
ZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1NldFllYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRl
T2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7IAorICAgIGlm
ICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsgCiAgICAgICAgIHRoaXNEYXRlT2JqLT5z
ZXRJbnRlcm5hbE51bWJlcihQTmFOKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05hTigpKTsKICAgICB9CkBAIC0xMTA5LDExICsxMTA5LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRlKiBleGVjKQogICAgIGVs
c2UgewogICAgICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQZXJTZWNvbmQpOwog
ICAgICAgICBtcyA9IG1pbGxpIC0gc2VjcyAqIG1zUGVyU2Vjb25kOwotICAgICAgICBpZiAoY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUqIG90aGVyID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVU
aW1lKGV4ZWMpKQorICAgICAgICBpZiAoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIG90aGVyID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSkpCiAgICAgICAgICAgICBn
cmVnb3JpYW5EYXRlVGltZS5jb3B5RnJvbSgqb3RoZXIpOwogICAgIH0KIAotICAgIGRvdWJsZSB5
ZWFyID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAg
ZG91YmxlIHllYXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlclByZXNlcnZlTmFO
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHllYXIpKSB7CiAgICAgICAgIHRoaXNEYXRl
T2JqLT5zZXRJbnRlcm5hbE51bWJlcihQTmFOKTsKQEAgLTExMjcsMTYgKzExMjcsMTYgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpz
RHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFu
RGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVU
aW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKIApAQCAtMTE0NCwyOCArMTE0NCwyOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRh
dGVUaW1lLT55ZWFyKCkgLSAxOTAwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgSlNP
YmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSB0
aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlck51bWJlcik7CisgICAg
SlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGNhbGxGcmFtZSwgUHJlZmVy
TnVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBpZiAodGltZVZhbHVlLmlzTnVtYmVyKCkgJiYgIXN0ZDo6aXNmaW5pdGUodGltZVZh
bHVlLmFzTnVtYmVyKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKIAotICAgIEpTVmFsdWUgdG9JU09WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPnRvSVNPU3RyaW5nKTsKKyAgICBKU1ZhbHVlIHRvSVNPVmFsdWUgPSBvYmplY3Qt
PmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnRvSVNPU3RyaW5nKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRvSVNP
VmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9JU09TdHJpbmcg
aXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iX3MpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxs
VHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBjYWxsKGNhbGxGcmFtZSwgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxs
RGF0YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgK
aW5kZXggMDBiZTI2NmY1YzM4YTYzNTUyNmViNDYxOTM5YjY1MGFmN2JmOWQ3My4uY2FjNWFiNWVk
YjZjMjQ0N2QxMzVjYmE3YmY3YTY0NjE0Y2ExMWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaApAQCAtNTIsNiArNTIsNiBAQCBjbGFzcyBEYXRl
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZShFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuY3BwCmluZGV4IGIzMDQ2NjA1OWFlNjU1M2Q3ZGY1YmJmMTk3ZWNlYjA2MmVlMmMy
YTAuLjVjZmJmYmZjYmRmNjBlYjdlNmQ3MWZlYTY4ZWQ1ZTIzZmM5OGMyODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRT
cGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLmlzQ29uc3RydWN0b3IoZXhlYy0+dm0oKSk7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNDb25zdHJ1
Y3RvcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgKaW5kZXggODA4ZDdmODgz
YmZmNDliNThjZmRiZTVkNzJjMTQ2MTE1M2I3YjJmYy4uYjZhMWNlYzdjYjEzYTJhYjY5ZGQ4ZDMy
OGYzYjE4ODM2NWQyMzMxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaApAQCAtMjks
NiArMjksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKaW5kZXggYzA0YmM1NWNlM2NhNTRhYjkzZGY5OTQzYjM2ZTY0MjFmZTIyZjI2NC4uN2I4ZDUy
MWMyYjkxMTZmZjIwZjBhYjhlMDExMTUzYWNhM2Y1NjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCkBAIC0zMywxMiArMzMsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwogY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBT
dHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIEV4ZWNTdGF0ZSB3
cmFwcGVycy4KIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
LCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGRhNjkxMTZiNDY0NjY1
N2M4ODdjYjVkMjg5YzU0MmU4NzgyZjBiZWUuLjNlYzYzNzc2YzkwOTAwNTJkNjk2YWNkYTk2OWUx
OTAwMTU2NzY0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShFcnJvckNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZv
IEVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckNvbnN0cnVjdG9yKSB9
OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
RXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBFcnJvckNv
bnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxFcnJvckNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKQpAQCAtNDcsMjYgKzQ3LDI2IEBAIHZvaWQg
RXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFcnJvclByb3RvdHlwZSog
ZXJyb3JQcm90b3R5cGUpCiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgZXJyb3JQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051bWJlcihnbG9iYWxPYmplY3Qo
dm0pLT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZU9yKE9wdGlvbnM6OmRlZmF1bHRFcnJvclN0YWNr
VHJhY2VMaW1pdCgpKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
Tm9uZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCgpLT5zdGFja1RyYWNl
TGltaXQoKS52YWx1ZU9yKE9wdGlvbnM6OmRlZmF1bHRFcnJvclN0YWNrVHJhY2VMaW1pdCgpKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogfQogCiAv
LyBFQ01BIDE1LjkuMwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEVy
cm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPmVycm9y
U3RydWN0dXJlKCkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwg
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1
cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUo
Y2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcs
IGZhbHNlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxFcnJvckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQo
MCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+ZXJyb3JT
dHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcs
IGZhbHNlKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVj
dHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpOwogfQogCiBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNzksOSArNzksOSBAQCBib29sIEVycm9yQ29u
c3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TgogICAgICAgICAgICAgZG91YmxlIGVmZmVjdGl2ZUxpbWl0ID0gdmFsdWUuYXNO
dW1iZXIoKTsKICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3RkOjptYXgoMC4sIGVmZmVj
dGl2ZUxpbWl0KTsKICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3RkOjptaW4oZWZmZWN0
aXZlTGltaXQsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5z
ZXRTdGFja1RyYWNlTGltaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVmZmVjdGl2ZUxpbWl0KSk7
CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxp
bWl0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihlZmZlY3RpdmVMaW1pdCkpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPnNldFN0YWNrVHJh
Y2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgRXJyb3JD
b25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7
CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VM
aW1pdCkKLSAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+c2V0U3RhY2tUcmFj
ZUxpbWl0KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKIAogICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDky
MmNmNGMzNmNiNmFiNTkwYzk4ZTlmNzAxODBhZDM2NTA4OTZhZmIuLjYxYzRmNDFhMGZhMzgwM2Mx
NGQwZmM0ZmNhZDFmMDAwNzkxMjBmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShFcnJvclByb3Rv
dHlwZSk7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0KIApAQCAtNzEsMjcgKzcxLDI3IEBAIHZvaWQgRXJyb3JQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBuYW1lKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8g
RUNNQS0yNjIgNS4xLCAxNS4xMS40LjQKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhlIHRoaXMgdmFsdWUu
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBl
KE8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAo
IXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAog
ICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9uIQotICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNo
ZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFs
dWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCiAgICAgLy8gMy4g
TGV0IG5hbWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldF1dIGludGVybmFsIG1l
dGhvZCBvZiBPIHdpdGggYXJndW1lbnQgIm5hbWUiLgotICAgIEpTVmFsdWUgbmFtZSA9IHRoaXNP
YmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKKyAgICBKU1ZhbHVlIG5hbWUg
PSB0aGlzT2JqLT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDQu
IElmIG5hbWUgaXMgdW5kZWZpbmVkLCB0aGVuIGxldCBuYW1lIGJlICJFcnJvciI7IGVsc2UgbGV0
IG5hbWUgYmUgVG9TdHJpbmcobmFtZSkuCkBAIC05OSwxMiArOTksMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9y
Il9zOwogICAgIGVsc2UgewotICAgICAgICBuYW1lU3RyaW5nID0gbmFtZS50b1dURlN0cmluZyhl
eGVjKTsKKyAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgfQogCiAgICAgLy8gNS4gTGV0IG1zZyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudCAibWVzc2FnZSIuCi0gICAg
SlNWYWx1ZSBtZXNzYWdlID0gdGhpc09iai0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPm1l
c3NhZ2UpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IHRoaXNPYmotPmdldChjYWxsRnJhbWUsIHZt
LnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gKHNpYykKQEAgLTExNCw3ICsxMTQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNz
YWdlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZS5pc1N0cmluZygp
ID8gbmFtZSA6IGpzU3RyaW5nKHZtLCBuYW1lU3RyaW5nKSk7CiAKICAgICAvLyAxMC4gUmV0dXJu
IHRoZSByZXN1bHQgb2YgY29uY2F0ZW5hdGluZyBuYW1lLCAiOiIsIGEgc2luZ2xlIHNwYWNlIGNo
YXJhY3RlciwgYW5kIG1zZy4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIG5hbWVTdHJpbmcsICI6ICIsIG1l
c3NhZ2VTdHJpbmcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsIG5hbWVTdHJpbmcsICI6ICIs
IG1lc3NhZ2VTdHJpbmcpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCmluZGV4IGM2OTRiNTc2NmM0MGUx
MjA5Yjc0NjcwNmZiNzI2MjhiNzc0ZTIxYjAuLmQxOGY5YTc0NTQ2NzRjZjdlMTA0NWZlMzQ2MDk2
OTdhNDdlZTE3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkZ1enouaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25GdXp6LmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFRocm93U2NvcGU7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIENhbGwgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHRoYXQg
ZXhjZXB0aW9uIGZ1enppbmcgaXMgZW5hYmxlZC4KIHZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4
ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBjaGFyKiB3aGVyZSwgY29uc3Qgdm9pZCogcmV0
dXJuUEMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAppbmRleCBkOGJjY2NkYThiZWQ2OTcwM2VmMjAwZmFkZjVjYjZkYmUw
MGM1Njc2Li42Y2ZjNGJlZTMwNDZmZjg5MWUzNjcxNGQ5ZGI3MjcyZjA0OTRlY2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcApAQCAtMzgsMTcgKzM4LDE3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9u
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkNvbnN0cnVjdG9yKSB9Owog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFy
Z3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihl
eGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rp
b24sIGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQogCiAvLyBFQ01BIDE1LjMuMSBUaGUgRnVuY3Rpb24g
Q29uc3RydWN0b3IgQ2FsbGVkIGFzIGEgRnVuY3Rpb24KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvbkNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxs
ZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncykpOworICAgIEFyZ0xpc3QgYXJn
cyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rp
b24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MpKTsKIH0KIAogRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpA
QCAtMTg5LDcgKzE4OSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjaygKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3Rvcgog
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywg
dm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3VzLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSwg
U3RyaW5nKCksIFRleHRQb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1Rh
cmdldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAppbmRleCA5NjE5YzAwZjEyMjQ5OGQwMTZiYmRkZTA5OTczYmVjNWFh
NDM1ZWIyLi4yNTI2MGQ5OTM2OWI5NDUyMDk4ZjAzMDAzYzRkNWQ2YTY0NWZjNDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC0zNywxMCArMzcsMTAgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKEZ1bmN0aW9uUHJvdG90eXBlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5cGUpIH07CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIC8vIEVDTUEg
MTUuMy40Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Q
cm90b3R5cGUoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTc2LDE2ICs3
NiwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjppbml0UmVzdHJpY3RlZFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNj
ZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLCBl
cnJvckdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkFjY2Vzc29yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKSkgewog
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1Zh
bHVlKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQot
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUodm0p
LCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOworICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhj
YWxsRnJhbWUsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSh2bSksICIoKSB7XG4gICAgW25h
dGl2ZSBjb2RlXVxufSIpKSk7CiAKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBpZiAoZXhlY3V0YWJsZS0+
aXNDbGFzcygpKQpAQCAtMTM0LDIxICsxMzQsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
U3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRS
YW5nZSgKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAog
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRh
YmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25I
ZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgc291cmNlKSkpOworICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNh
bGxGcmFtZSwgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgc291cmNlKSkpOwog
ICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SW50ZXJuYWxGdW5jdGlvbj4odm0p
KSB7CiAgICAgICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFs
RnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAi
LCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlz
VmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkKLSAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NO
YW1lLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOworICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhjYWxsRnJhbWUsICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFt
ZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAppbmRleCBmM2ZlY2IzZGUzNGJhMzk5NjA0MGQyYjQ4ODM0NDViYjVh
MmVlMDQ4Li42NDYyODZkNjQzYzM2MTI5ZGMzMWRlYTAyOTBkNTAzOGQ1ODI5YmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsK
IAogY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3Mo
ZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVj
LCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9y
KSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVj
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpz
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChl
eGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IsIGV4
ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IsIGNhbGxGcmFt
ZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDlhZDEyMGNk
ZjQ3OWM5ODNlOTNiZGNkMjQwZmI1NzA2NDk4ZDY3ZjcuLjAyYTNiNWI4Nzg4MjQ3OTJmMmZkYTQw
OTZlNmM5YjExZTVmYWJkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogQUxXQVlTX0lOTElORSBib29sIGlzSW5kZXgodWludDMyX3QgaW5kZXgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcAppbmRleCA2NWU5YTE3NzE5OWM5MTk0ZDAwZDBlNDI5MmNi
NDQxOTg0NjRlNWNiLi41ZTI0OTljOTNlYzk1MDBjMTMzZTc2ZDdhNTc0MDc5MzRmNzYxYTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RMb2coSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmRpc2FibGUoVk0mIHZtKQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1dURlN0cmluZyhleGVjKTsKKyAg
ICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RyaW5nIHZh
bHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZGF0YUxvZyh2YWx1ZSwgIlxuIik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjM4
ZTU0MzMzZWFkY2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYzODliMS4uMDA5ODIwYzJkNzM5ODY5Zjgy
NjAzYzljOTQ0MGViOGM3N2IzYTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgSW50ZXJuYWxG
dW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBO
YXRpdmVGdW5jdGlvbgogICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fZnVuY3Rpb25Gb3JDYWxsKGZ1bmN0aW9uRm9yQ2FsbCkKICAgICAsIG1fZnVuY3Rp
b25Gb3JDb25zdHJ1Y3QoZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgPyBmdW5jdGlvbkZvckNvbnN0cnVj
dCA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKQorICAgICwgbV9nbG9iYWxPYmplY3Qo
dm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiB7CiAgICAgLy8gZXhlYy0+dm0o
KSB3YW50cyBjYWxsZWVzIHRvIG5vdCBiZSBsYXJnZSBhbGxvY2F0aW9ucy4KICAgICBSRUxFQVNF
X0FTU0VSVCghaXNMYXJnZUFsbG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggYWJmMDFjY2IyN2IyNmJhN2Y2M2I0
ZTNiOThlMjY5YmIzNjk2ZjgyMC4uYWEyZTk1YThjMjM5ZmY5MzJiYjZiMGJlZDA2MTMxNTY2NGYw
NTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaApAQCAtNzYsNiArNzYsMTMgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SW50ZXJuYWxGdW5jdGlvbiwgbV9mdW5jdGlvbkZvckNvbnN0cnVjdCk7CiAgICAgfQogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbE9iamVjdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZ2xvYmFsT2JqZWN0KTsK
KyAgICB9CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEludGVybmFsRnVuY3Rpb24oVk0mLCBTdHJ1Y3R1cmUqLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbkZvckNhbGwsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ29uc3RydWN0KTsKIApA
QCAtOTEsNiArOTgsNyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ2Fs
bDsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0OwogICAg
IFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9vcmlnaW5hbE5hbWU7CisgICAgV3JpdGVCYXJyaWVy
PEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIEFMV0FZU19JTkxJTkUgU3Ry
dWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0LCBTdHJ1Y3R1cmUqIGJhc2VDbGFzcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcAppbmRleCA0M2Y0NzhlMTk4NGNkZGViZmZkOGJhOTJjODViZWNlNzMwMDAxYTdl
Li45MDU5ZTZiMzdhNWEzMTJmMjIzNzE3NDAwYmIwNzJhNjFhNDk3N2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yQ29uc3RydWN0b3IpOwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2Nh
bGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC00OSw4ICs0OSw4
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxh
dG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAm
Y29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKSB9OwogCkBAIC04NSwzMyArODUsMzMgQEAgdm9pZCBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsQ29sbGF0b3JQ
cm90b3R5cGUqIGNvbGwKICAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihFeGVj
U3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkg
KEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQg
bmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJn
ZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFyeUNyZWF0
ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgogICAgIC8v
IDMuIFJldHVybklmQWJydXB0KGNvbGxhdG9yKS4KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+
bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0Nh
bGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsQ29sbGF0
b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
QVNTRVJUKGNvbGxhdG9yKTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplQ29sbGF0b3Io
Y29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBj
b2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBz
dGF0ZS0+YXJndW1lbnQoMSkpOworICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKmNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0
ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEt
NDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFy
Z2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUg
TmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2Fs
bGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIC8vIEZJWE1F
OiBDb2xsYXRvciBkb2VzIG5vdCBnZXQgdGhlIHdvcmthcm91bmQgZm9yIEVDTUEtNDAyIDEuMCBj
b21wYXRpYmlsaXR5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTM2NzkKQEAgLTEyMiwyNSArMTIyLDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBBU1NF
UlQoY29sbGF0b3IpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xs
YXRvciwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRv
cigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBj
b2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29sbGF0b3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YobG9j
YWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEuIExldCByZXF1ZXN0
ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2Fs
ZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOwogCiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQocmVxdWVzdGVkTG9jYWxlcykuCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAv
LyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyglQ29sbGF0b3IlLltbYXZhaWxhYmxlTG9jYWxl
c11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygq
c3RhdGUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpLCByZXF1
ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QtPmludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKSwgcmVxdWVzdGVkTG9j
YWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuaAppbmRleCA3MGYxMWFlMjEzYTdmZjk1ODNlM2I3MWJlNTM3OGMzOWUxNTQ4
YmIwLi4zZWQ5YmViODczMzFkY2Y3NDk4ZDE1MGUwNzMyZDc3NTM4YmI0YTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xv
YmFsT2JqZWN0KHZtKS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSogY29s
bGF0b3JTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+Y29sbGF0
b3JTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEludGxDb2xsYXRvclByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKaW5kZXggY2RmNDg2YjU4
NTQ1MDk3OTViMDM3ODI2NjZkMTI1YmZlNzFmNWZkNS4uNWE1NGNhNTg0Njg1ZTJiNjBjMTQ0MmNj
MzZjNzI5YmRmNTMwODQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
Q29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRv
clByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogfQogCkBAIC03OCw0NSArNzgsNDUgQEAgdm9pZCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiT2Jq
ZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEwLjMuNCBDb2xsYXRvciBDb21w
YXJlIEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0
aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVj
dCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNs
b3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganND
YXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKIAogICAgIC8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQu
CiAgICAgLy8gNC4gSWYgeSBpcyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVuZGVmaW5lZC4KICAg
ICAvLyA1LiBMZXQgWCBiZSBUb1N0cmluZyh4KS4KLSAgICBKU1N0cmluZyogeCA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSk7CisgICAgSlNTdHJpbmcqIHggPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgLy8gNi4gUmV0dXJuSWZBYnJ1
cHQoWCkuCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KLSAgICBKU1N0cmluZyogeSA9IHN0
YXRlLT5hcmd1bWVudCgxKS50b1N0cmluZyhzdGF0ZSk7CisgICAgSlNTdHJpbmcqIHkgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgLy8gOC4gUmV0dXJu
SWZBYnJ1cHQoWSkuCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAvLyA5LiBSZXR1cm4gQ29tcGFyZVN0cmluZ3MoY29sbGF0b3IsIFgsIFkp
LgotICAgIGF1dG8geFZpZXdXaXRoU3RyaW5nID0geC0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5n
KHN0YXRlKTsKKyAgICBhdXRvIHhWaWV3V2l0aFN0cmluZyA9IHgtPnZpZXdXaXRoVW5kZXJseWlu
Z1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8geVZpZXdXaXRoU3RyaW5nID0geS0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKHN0YXRlKTsKKyAgICBhdXRvIHlWaWV3V2l0aFN0cmluZyA9IHktPnZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqc3RhdGUsIHhWaWV3V2l0
aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoKmNh
bGxGcmFtZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0cmluZy52aWV3KSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdl
dHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3Ig
YmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCi0gICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAg
SW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghY29sbGF0b3IpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBj
b2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKQEAgLTEyNyw3ICsxMjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmpl
Y3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgImNvbXBhcmUiX3Ms
IEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CiAKICAgICAgICAgLy8gYy4g
TGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAg
ICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2Jh
bE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgImNvbXBhcmUiX3Mp
OworICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51bGxwdHIsIDIs
ICJjb21wYXJlIl9zKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1d
IHRvIGJjLgogICAgICAgICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBh
cmUpOwpAQCAtMTM2LDE3ICsxMzYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMC4zLjUgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsQ29sbGF0b3IqIGNv
bGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29s
bGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiX3MpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9z
KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xs
YXRvci0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRPcHRpb25zKCpjYWxsRnJh
bWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IGI1NGVjYjBjYjBlY2NhNjRjM2FmYjhhNmUyMmRiNTQ2YWEzMzViOTEuLjdhNGIw
NzcwZTQ4MTMyOTJlNjJhZTQ2ZmM5MWE0ZWVjNDdlOTkzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB9CiAKQEAgLTY5LDggKzY5LDggQEAgU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QKICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlLCBjYWxsSW50bERhdGVUaW1lRm9ybWF0LCBjb25zdHJ1Y3RJbnRsRGF0ZVRp
bWVGb3JtYXQpCkBAIC04NSw2MyArODUsNjIgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm8KICAg
ICBkYXRlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUq
IHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50
bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlv
bnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVk
LCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBu
ZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBP
cmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSUpLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUodm0pKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQo
KSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIHN0cnVjdHVy
ZSk7CiAgICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkp
OworICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdCk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRl
KiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBu
ZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rhcmdl
dCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hl
biBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0
ZS0+anNDYWxsZWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxl
ZSA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGli
aWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2Fj
eUludGxDb25zdHJ1Y3RvcjxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCpzdGF0ZSwgc3RhdGUtPnRoaXNW
YWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1
Y3RvcjxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCksIGNhbGxlZSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9y
bWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1l
Rm9ybWF0KS4KICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IElu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUtPmRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKHZtKSk7CiAgICAgICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CiAKICAgICAgICAgLy8g
NC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxl
cywgb3B0aW9ucykuCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7Cisg
ICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAg
ICAgIHJldHVybiBkYXRlVGltZUZvcm1hdDsKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEyLjIuMiBJ
bnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJURh
dGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
Y29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmlu
dGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAogICAgIC8vIDIuIExldCByZXF1
ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExv
Y2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3RhdGUsIGF2YWlsYWJsZUxv
Y2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVudCgxKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpj
YWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmgKaW5kZXggYzJhOGY1YTJkZmY3NDUzODE1N2NjYzIwMTRmNmI4ZmEyNTM0Mzk5YS4u
MDdlMDc4MDBlYWRlNjJlMTgwNjQwZTJiNjAzNmMxMmNjMmIxNDVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFS
RV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZShWTSYgdm0p
IGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKFZNJikgY29uc3Qg
eyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDcxNTg1N2I4YTU5
ODM5ZjQ2OGZiNGI3NjQxYzYwZmI2MzIwZTdmZjkuLjNhOGYwMWQwMjlhODVhNGVkMGE2ZjE3YjA3
ZmQyMzVlNGZhZTViNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtNDEsMTEgKzQx
LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNp
ZiBKU0NfSUNVX0hBU19VRklFTERQT1NJVEVSCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAjZW5kaWYKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IH0KIApAQCAtOTIsNDggKzkyLDQ4IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEyLjEuNyBEYXRlVGltZSBGb3JtYXQgRnVu
Y3Rpb25zIChFQ01BLTQwMikKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1mb3JtYXRkYXRldGltZQogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBq
c0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgZGF0ZSA9IHN0YXRlLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGRv
dWJsZSB2YWx1ZTsKIAogICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coc3RhdGUpKS50b051bWJlcihzdGF0ZSk7CisgICAg
ICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIGVsc2Ug
ewotICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihzdGF0ZSkpOwor
ICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihjYWxsRnJhbWUpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9y
bWF0LT5mb3JtYXQoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdCgqY2FsbEZyYW1lLCB2YWx1ZSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjMgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8g
MS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAgICBJbnRsRGF0ZVRp
bWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHN0
YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFt
aWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
IAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRo
IEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0ZikgewotICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkp
OworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2Fs
bEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZh
bHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGlt
ZUZvcm1hdCo+KHZtLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQo
ZHRmKS4KICAgICBpZiAoIWR0ZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJv
dW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDMuIElmIHRoZSBbW2JvdW5k
Rm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCBpcyB1
bmRlZmluZWQsCkBAIC0xNDMsNyArMTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKgogICAg
ICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3Rl
OiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBK
U0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgMSwgImZvcm1hdCJfcywgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1l
LCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3Jl
YXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYs
IG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOworICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0
LCBkdGYsIG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IGR0Zi5bW2Jv
dW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5k
Rm9ybWF0KTsKQEAgLTE1Myw1MiArMTUzLDUyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSoKIH0K
IAogI2lmIEpTQ19JQ1VfSEFTX1VGSUVMRFBPU0lURVIKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0VG9QYXJ0cyAoRUNNQS00MDIgNC4wKQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTQwMi8jc2VjLUludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dFRvUGFydHMKIAotICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5
bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PElu
dGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWRhdGVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCi0gICAgSlNWYWx1ZSBk
YXRlID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgZG91YmxlIHZhbHVlOwogCiAgICAgaWYgKGRhdGUuaXNVbmRlZmlu
ZWQoKSkKLSAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZGF0ZU5vdyhzdGF0ZSkpLnRv
TnVtYmVyKHN0YXRlKTsKKyAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGNh
bGxGcmFtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRl
LnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRv
TnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqc3RhdGUsIHZh
bHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRh
dGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQogI2Vu
ZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWlj
Q2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAK
ICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBF
Q01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkg
ewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZh
dGVOYW1lKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vi
c3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAgICB9CiAKICAgICBp
ZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5y
ZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKmNhbGxGcmFt
ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApp
bmRleCA4NWNkNjQzZDVlNjM5ODAxMjk5MGI5YWI4ZTQ0YTFkN2QwNWY2ZTcxLi45ZGU4ZDVlZThm
YmZhMjcxY2JiYWZjY2ExMmFiZGYwZDUyZDg2MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBv
cnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY5
LDggKzY5LDggQEAgU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVu
Y3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZv
cm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRsTnVtYmVy
Rm9ybWF0LCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KQpAQCAtODUsNjMgKzg1LDYyIEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5CiAgICAgbnVtYmVyRm9ybWF0UHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRo
aXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51
bWJlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAo
W2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gMi4gTGV0IG51
bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVO
dW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJG
b3JtYXQpLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKS0+bnVtYmVyRm9y
bWF0U3RydWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3
VGFyZ2V0KCksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7
CiAgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CiAKICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6
ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgbnVtYmVy
Rm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyRm9ybWF0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTEuMS4yIEludGwuTnVtYmVy
Rm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4g
SWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1
bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyBO
ZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgog
Ci0gICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBs
eSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJbnRsSW5zdGFu
Y2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0
Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2bSkgeworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91
bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oKmNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2bSkgewogICAgICAgICAv
LyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChudW1iZXJGb3JtYXQpLgogICAgICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJG
b3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZS0+bnVtYmVyRm9ybWF0
U3RydWN0dXJlKHZtKSk7CiAgICAgICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOwogCiAgICAgICAg
IC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxl
cywgb3B0aW9ucykuCi0gICAgICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1h
dCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICAg
ICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgICAgICByZXR1
cm4gbnVtYmVyRm9ybWF0OwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMS4yLjIgSW50bC5OdW1iZXJGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjAp
CiAKICAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlTnVtYmVyRm9ybWF0JS5bW2F2
YWlsYWJsZUxvY2FsZXNdXS4KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJp
bmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxOdW1iZXJGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCk7CiAKICAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5v
bmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3Rl
ZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJl
dHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IG9wdGlvbnMpLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2Nh
bGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBhdmFpbGFibGVM
b2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKaW5kZXggYTQ5OWQzZmU2
YTcxNTRjYzYzYmZjNWZjNDMxOGZiMjFiNmQwMWIzMC4uMDNhYmViYWVjNDIxYWQ3YTc4MGI5ZDNl
ODJmZmZmYTFkZTk5YmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBudW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0p
LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0
U3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPm51bWJlckZvcm1h
dFN0cnVjdHVyZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRl
eCA1NzA5YzkyMmI4NWE3ZTM4MjdkYjc1NzI1ZGVhNzlmOTZiNGFmOWI5Li41ZDFmODQ0ZThjZDI5
ZjUyZmI3MDYwMjVhZGUzYjY1YjQxYTI5MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAt
MzksMTEgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogI2lmIEhBVkUoSUNVX0ZPUk1BVF9ET1VCTEVfRk9SX0ZJRUxEUykKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
VG9QYXJ0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogI2VuZGlmCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIH0KIApAQCAtODksNDQgKzg5LDQ0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3Ry
aW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJl
cihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJlciBGdW5jdGlv
bnMgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCiAg
ICAgLy8gMi4gQXNzZXJ0OiBUeXBlKG5mKSBpcyBPYmplY3QgYW5kIG5mIGhhcyBhbiBbW2luaXRp
YWxpemVkTnVtYmVyRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSAgdHJ1ZS4KLSAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0Nhc3Q8SW50bE51bWJlckZvcm1h
dCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9y
bWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
IAogICAgIC8vIDMuIElmIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVlIGJlIHVuZGVm
aW5lZC4KICAgICAvLyA0LiBMZXQgeCBiZSBUb051bWJlcih2YWx1ZSkuCi0gICAgZG91YmxlIG51
bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAgZG91YmxlIG51
bWJlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAv
LyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgp
LgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZv
cm1hdC0+Zm9ybWF0TnVtYmVyKCpzdGF0ZSwgbnVtYmVyKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpj
YWxsRnJhbWUsIG51bWJlcikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0
ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQw
MiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KLSAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+
KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghbmYpIHsKLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgp
KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNh
bGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVW
YWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGlmICghbmYpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKICAgICAKICAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8g
Mi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKQEAgLTEzNiw3ICsxMzYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVH
ZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdAogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKA
mXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVj
dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiZm9ybWF0Il9zLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICAv
LyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0g
ICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBn
bG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgbmYsIG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOwor
ICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgbnVsbHB0ciwgMSwgImZvcm1hdCJf
cyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBu
Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKQEAgLTE0Niw0NSArMTQ2LDQ1IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdChFeGVjU3RhdGUqIHN0CiB9CiAKICNpZiBIQVZFKElDVV9GT1JNQVRfRE9VQkxF
X0ZPUl9GSUVMRFMpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIChFQ01BLTQwMikK
ICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0dG9wYXJ0cwogCi0gICAgSW50bE51bWJlckZvcm1hdCogbnVt
YmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHN0YXRlLT50
aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0ganNEeW5h
bWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKIAotICAgIGRvdWJsZSB2YWx1
ZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAgZG91YmxlIHZhbHVl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1Bh
cnRzKCpzdGF0ZSwgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpjYWxsRnJhbWUsIHZhbHVl
KSkpOwogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFudW1iZXJGb3JtYXQpIHsKLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgp
KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNh
bGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVW
YWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJ
bnRsTnVtYmVyRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAgICB9CiAKICAgICBpZiAoIW51bWJlckZv
cm1hdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJl
ckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZv
cm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCA4MDEyOTRhOGI3Yjg1YmVlZTY5ZGNhNDIwNzUxMTA3ZWQxNGNjMzI3Li40ZThkZDNjODQ0Yjkw
OWZkMmUzYWE3OWZmYzFlNjU5MzllM2UwYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxPYmplY3QpOwog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENh
bm9uaWNhbExvY2FsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogc3RhdGljIEpTVmFsdWUgY3JlYXRlQ29sbGF0b3JDb25zdHJ1Y3Rv
cihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CkBAIC05MTcsMjcgKzkxNywyNiBAQCBWZWN0
b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxl
KQogICAgIHJldHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9u
aWNhbExvY2FsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKGxvY2FsZXMpCiAgICAg
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5nZXRjYW5vbmljYWxs
b2NhbGVzCiAKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgVmVjdG9yPFN0cmluZz4gbG9jYWxlTGlzdCA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3Qo
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsZUxp
c3QgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gbGVuZ3RoID0gbG9jYWxlTGlzdC5zaXplKCk7CiAKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgSlNBcnJheSogbG9jYWxlQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpLCBsZW5ndGgpOwogICAgIGlmICghbG9jYWxlQXJyYXkpIHsKLSAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSk7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBsb2NhbGVBcnJheS0+cHV0RGlyZWN0SW5kZXgoc3RhdGUsIGksIGpz
U3RyaW5nKHZtLCBsb2NhbGVMaXN0W2ldKSk7CisgICAgICAgIGxvY2FsZUFycmF5LT5wdXREaXJl
Y3RJbmRleChjYWxsRnJhbWUsIGksIGpzU3RyaW5nKHZtLCBsb2NhbGVMaXN0W2ldKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZUFycmF5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVj
dG9yLmNwcAppbmRleCBiMDIyMjUwY2FmMTFhZjNjMzk1MGExZWYxMDEzOWRkNDhjMzg5ZWUyLi4z
N2FjYzg5ZTE2NjFhMzA4YTQ5MTRiZTIxMDY5OGMyNGFiYTBlMGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Ip
OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBA
IC02Nyw4ICs2Nyw4IEBAIFN0cnVjdHVyZSogSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJu
YWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQbHVy
YWxSdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rv
cjo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxQbHVyYWxS
dWxlcywgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKQpAQCAtODMsNDcgKzgzLDQ2IEBAIHZvaWQg
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlCiAgICAgcGx1cmFsUnVsZXNQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFs
UnVsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuMi4xIEludGwuUGx1cmFsUnVsZXMgKFsgbG9j
YWxlcyBbICwgb3B0aW9ucyBdIF0pCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
NDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdU
YXJnZXQoKSwganNDYXN0PEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSh2bSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSh2bSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIElu
dGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBJbnRsUGx1cmFsUnVsZXM6OmNyZWF0ZSh2bSwg
c3RydWN0dXJlKTsKICAgICBBU1NFUlQocGx1cmFsUnVsZXMpOwogCiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHBsdXJhbFJ1bGVzLT5pbml0aWFsaXplUGx1cmFsUnVsZXMoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgcGx1cmFsUnVsZXMtPmlu
aXRpYWxpemVQbHVyYWxSdWxlcygqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsdXJh
bFJ1bGVzKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbElu
dGxQbHVyYWxSdWxlcyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuMi4xIEludGwuUGx1cmFsUnVsZXMgKFsg
bG9jYWxlcyBbICwgb3B0aW9ucyBdIF0pCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsICJQbHVyYWxSdWxlcyIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlBsdXJhbFJ1bGVzIikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEzLjMuMiBJbnRsLlBsdXJhbFJ1bGVzLnN1
cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5zdXBwb3J0ZWRsb2Nh
bGVzb2YKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVl
KCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJs
ZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKmNhbGxGcmFtZSwg
YXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaAppbmRleCA3
OTg4OWJmYzI0NDliMDY2MjViZWU5NzdhMmQ2NGYwM2M1YThmY2FiLi5kODNlYTFjMmMzZjMxNGNj
MjM5YzJmMmVjODJiN2FiYzQ1MDU0ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBTdHJ1Y3R1cmUq
IHBsdXJhbFJ1bGVzU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0
KHZtKS0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSogcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+cGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKaW5kZXgg
ZDk5M2RmNWQwMTcyYmNkYzE0OGVmYTdlNjhhMGI4ZmVhMDcxODViNi4uMWJmY2Q0M2RkMmU5Y2E1
ZjIxZjI2YWEyZTcwMDA3NTJhMjk3MzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCkBAIC0zNiw4
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC03OCwzNyArNzgsMzcgQEAgdm9pZCBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KikKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiT2JqZWN0IiksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVj
dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMy40LjMgSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5
cGUuc2VsZWN0ICh2YWx1ZSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3QKLSAgICBJbnRsUGx1cmFsUnVs
ZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNE
eW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBl
LnNlbGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBQbHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlw
ZS5zZWxlY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKIAotICAgIGRvdWJsZSB2YWx1ZSA9IHN0YXRlLT5hcmd1
bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgqc3RhdGUsIHZhbHVlKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVz
LT5zZWxlY3QoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMy40LjQgSW50bC5QbHVyYWxSdWxlcy5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCi0g
ICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJh
bFJ1bGVzKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bFBsdXJhbFJ1bGVzKiBw
bHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKCFwbHVyYWxSdWxlcykKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLlBsdXJh
bFJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
SW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKSk7
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxS
dWxlcy0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+cmVzb2x2ZWRPcHRpb25zKCpjYWxs
RnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNTc1YzU3YzFlMjI5ZDBkZWJjZTc4M2FhOTVhZTI5NGE1NWQzZGUxYy4uMDQ5YjYwY2U2NzY3
OGEyN2NjMDRmZGYwYjlkZWNjNDE0MmE0Nzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCkBAIC0z
Nyw4ICszNyw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1Zp
ZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB0ZW1wbGF0ZTw+CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7CkBAIC02NywyNiArNjcsMjYgQEAgdm9pZCBKU0dlbmVyaWNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0FycmEK
ICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAKICAgICBpZiAoc2hhcmluZ01vZGUgPT0gQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6RGVmYXVsdCkgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc1ZpZXcsIGFycmF5
QnVmZmVyRnVuY0lzVmlldywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDEpOwogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1ZpZXdQcml2YXRlTmFt
ZSgpLCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICB9CiB9CiAKIHRlbXBsYXRlPEFycmF5QnVm
ZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGU+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+Ojpjb25zdHJ1Y3RB
cnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+Ojpjb25zdHJ1Y3RB
cnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGpzQ2Fz
dDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSk7Cisg
ICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBqc0Nhc3Q8
SlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7
CiAKLSAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0
cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9k
ZSkpOworICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUo
c2hhcmluZ01vZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkpIHsKLSAg
ICAgICAgbGVuZ3RoID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9JbmRleChleGVjLCAi
bGVuZ3RoIik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAg
IGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9JbmRleChjYWxsRnJh
bWUsICJsZW5ndGgiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQWx0aG91Z2ggdGhlIGRvY3Vt
ZW50YXRpb24gZG9lc24ndCBzYXkgc28sIGl0IGlzIGluIGZhY3QgY29ycmVjdCB0byBzYXkKQEAg
LTk3LDcgKzk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0dlbmVyaWNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3QKIAogICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIDEpOwogICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1v
cnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAgICAgCiAgICAgaWYgKHNoYXJpbmdNb2RlID09
IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCkKICAgICAgICAgYnVmZmVyLT5tYWtlU2hh
cmVkKCk7CkBAIC0xMTksMTkgKzExOSwxOSBAQCBjb25zdCBDbGFzc0luZm8qIEpTR2VuZXJpY0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+OjppbmZvKCkKICAgICByZXR1cm4gJkpT
R2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+OjpzX2luZm87CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJy
YXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFycmF5QnVmZmVyIikpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAyNC4xLjMuMQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGV4
ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihnbG9iYWxPYmpl
Y3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKIC8vIEluc3RhbnRpYXRl
IEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAppbmRleCA0
MmYxNjNmZTM4YWNjNGY3Y2NjYzkzZTg3YmUxNjk2MmM5Y2NiMzRiLi44YWFjYTVkZTdjZjY0YTVl
NDQ1NTRmMjE1YWY1MWZhOGQ2MTNhN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogICAgIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNBcnJheUJ1
ZmZlclByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7CiAKLSAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBcnJheUJ1ZmZlcihFeGVj
U3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBwcm90b3R5cGUs
IEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKaW5kZXggYzk3ODI0
MjQxZWRhMGI1MmRkZDFhNjhlMDFmY2U1ZWVjYjQxNjgzMy4uYjExMDE2MGYzMTZlMGYzODAzNjRj
ZTg5OTJhMzM5OGI4ZjRiNDI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTM1LDMwICszNSwyOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRnVuY3Rpb24q
IGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgCi0g
ICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QgfHwgdGhpc09iamVjdC0+aW1wbCgpLT5pc1NoYXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2Vp
dmVyIG9mIHNsaWNlIG11c3QgYmUgYW4gQXJyYXlCdWZmZXIuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIG9mIHNsaWNlIG11
c3QgYmUgYW4gQXJyYXlCdWZmZXIuIl9zKTsKIAotICAgIGRvdWJsZSBiZWdpbiA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgYmVnaW4gPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGRvdWJsZSBlbmQ7Ci0gICAg
aWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVuZCA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKKyAgICBpZiAoIWNhbGxG
cmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBlbmQgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCiAg
ICAgYXV0byBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQp
OwogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qo
dm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVy
ZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1
ZmZlcikpOwogICAgIApAQCAtNjYsMzcgKzY0LDM3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQog
fQogCiAvLyBodHRwOi8vdGMzOS5naXRodWIuaW8vZWNtYXNjcmlwdF9zaGFyZWRtZW0vc2htZW0u
aHRtbCNzZWMtZ2V0LWFycmF5YnVmZmVyLnByb3RvdHlwZS5ieXRlbGVuZ3RoCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBi
dWZmZXIgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBi
dWZmZXIgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUg
YW4gYXJyYXkgYnVmZmVyIl9zKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNTaGFyZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgbm90IGJlIGEgc2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgbm90IGJlIGEg
c2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgo
KSkpKTsKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFzY3JpcHRfc2hhcmVkbWVt
L3NobWVtLmh0bWwjU3RydWN0dXJlZERhdGEuU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLmdl
dF9ieXRlTGVuZ3RoCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzaGFyZWRB
cnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dl
dHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJy
YXlCdWZmZXIqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJl
IGFuIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIl9zKTsK
ICAgICBpZiAoIXRoaXNPYmplY3QtPmlzU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgc2hhcmVkIGFycmF5
IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRo
aXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggN2Q2NTlkYmMzNDQ4
MzgyZThjNDg1N2Q4YWU4MTk5NWQ0ZDRiMGJiNy4uNjYwZWQ2ZTczNGNiZTA5NjdhMGZlMjY3ZjZj
MTg5ZDkwZWZjOGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNvbnN0IENsYXNzSW5mbyBKU0JvdW5kRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Jv
dW5kRnVuY3Rpb24pIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1
bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChp
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYm91bmRG
dW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CkBAIC01MSwxNiArNTEsMTYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxsLCBN
dXN0Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZXhlYy0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVj
dC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVj
LCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3Vu
ZFRoaXMoKSwgYXJncykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJh
bWUsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJv
dW5kVGhpcygpLCBhcmdzKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpT
Qm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOwogCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRB
cmdzKCk7CiAKQEAgLTY5LDEwICs2OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKICAgICB9Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBh
cmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgICAgIGFy
Z3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGlmIChVTkxJ
S0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAg
LTgwLDMwICs4MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rp
b25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0YXJnZXRGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNh
bGxGcmFtZSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlv
bi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0
aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBlbmQoZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOwogICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGV4ZWMtPnZtKCksIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1
Y3REYXRhKTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3RE
YXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwog
ICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25z
dHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgYXJncykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rp
b24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNC
b3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBib3VuZEZ1
bmN0aW9uLT5ib3VuZEFyZ3MoKTsKIApAQCAtMTEyLDEwICsxMTIsMTAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkp
KTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChp
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpOwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKICAgICB9CiAKQEAgLTEyMywyMCArMTIzLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Q29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0
VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRh
KTsKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhl
YywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
KGNhbGxGcmFtZSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEs
IGFyZ3MpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNCb3Vu
ZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShzdGF0aWNfY2FzdDxi
b29sPihqc0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPnZtKCksIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoc3RhdGljX2Nhc3Q8Ym9vbD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihnbG9i
YWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRPYmplY3QgPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRh
cmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJvdW5kT2JqZWN0LT50YXJnZXRGdW5jdGlvbigpLT5o
YXNJbnN0YW5jZShjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBn
ZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCkBAIC0yMTAs
NyArMjEwLDcgQEAgSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCh2bSkpOworICAgIEpTQXJy
YXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2Jq
ZWN0KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAg
ICAgICByZXN1bHQtPnB1c2goZXhlYywgbV9ib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmlu
ZGV4IDhiYjRiNzdhYzU3ODdkNjFmMmRlMzY5ZDBjODViMGRlY2JhZmFlOTIuLjIyNWFjYjBiZThk
NTNiNGJhNDYyNjY2ZWYzZDc1MGU5YzZkMzBlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9B
cmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0
aW9uKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc0JvdW5kRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9u
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApp
bmRleCAyYzY0OWUxNjAyMGZkMGJhNDk4NmIwZjEzNzA2N2MyYTgxNzU0MmQ4Li5hZTgzMTUxYmRl
MWE2YTZiZWVjYjNkODljYTdhZGVlNTkyMDdhMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiBjbGFzcyBKU0JpZ0ludDsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTVmFsdWVTb3VyY2U7
CiBjbGFzcyBWTTsKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lOwogY2xhc3Mg
UHJvcGVydHlTbG90OwogY2xhc3MgUHV0UHJvcGVydHlTbG90OwogY2xhc3MgU3RydWN0dXJlOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogI2lmIEVOQUJMRShERkdfSklUKQogbmFtZXNw
YWNlIERGRyB7CiBjbGFzcyBKSVRDb21waWxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKaW5kZXggNTQ2MTI3NGViZDc3ZGZmM2YwNWYxMmRjMTA3MjlhZmUxNDY4ZjIwMS4u
ZTk1ZDUxMmEzOGU2ODJkYmZkYTM2NGQyODBiMWU4ZDc3YWRiYTdiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29tcGxldGVTdWJzcGFjZTsKIGNsYXNz
IENvcHlWaXNpdG9yOwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7Ci1jbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBKU0Rl
c3RydWN0aWJsZU9iamVjdDsKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgUHJvcGVydHlOYW1lOwog
Y2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBKU0NlbGxM
b2NrOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBlbnVtIGNsYXNzIEdDRGVmZXJy
YWxDb250ZXh0QXJnUHJlc2Vuc2UgewogICAgIEhhc0FyZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5jcHAKaW5kZXggNWM3MTJjMDNiOWY0YWRkODQ3ZTI3NDQxYjEzMDI2Mzk5NTcxMDE4ZC4uNTVj
NTBlNGYxNDRlMDBiNmNiZDBjNDlkNTI0Njc1NjEzZTBjZmY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5jcHAKQEAgLTM1LDI5ICszNSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
biA9IGpzQ2FzdDxKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSk7CisgICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbio+KGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSk7CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0
ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+Y3VzdG9tR2V0dGVyU2V0dGVyKCk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICBpZiAoY3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24tPmlzU2V0dGVyKCkpIHsKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpDdXN0b21TZXR0ZXIgc2V0dGVyID0gY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0ZXIoKTsKICAg
ICAgICAgQVNTRVJUKHNldHRlcik7Ci0gICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgc2V0
dGVyLCB0cnVlLCB0aGlzVmFsdWUsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgY2FsbEN1
c3RvbVNldHRlcihjYWxsRnJhbWUsIHNldHRlciwgdHJ1ZSwgdGhpc1ZhbHVlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAKICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5pbmhlcml0czxET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtKSkgewogICAgICAgICBhdXRvIGRvbUF0dHJpYnV0ZSA9
IGpzQ2FzdDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5k
b21BdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0
dHJpYnV0ZS5jbGFzc0luZm8pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1ET01BdHRyaWJ1
dGVHZXR0ZXJUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGRvbUF0dHJpYnV0ZS5jbGFzc0luZm8sIGN1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJv
cGVydHlOYW1lKCkpOwogICAgIH0KIAotICAgIHJldHVybiBjdXN0b21HZXR0ZXJTZXR0ZXItPmdl
dHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOworICAgIHJldHVybiBjdXN0b21HZXR0ZXJTZXR0
ZXItPmdldHRlcigpKGNhbGxGcmFtZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIGN1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7CiB9CiAKIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
VHlwZSB0eXBlLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24uaAppbmRleCA4MGEyYzgxYmJmOGY4YTNjMzE1YjUzMGY5OTA3Mjg3Njk2ZmE3NWVl
Li40ZmVkMGVkNDZiOWZiZTZhOWZjMjVjY2ZlZjRlMjgwZTdiMDA0NzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVHlwZSwgY29u
c3QgUHJvcGVydHlOYW1lJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4
ZWN1dGFibGUqLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGN1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uQ2FsbChFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9nZXR0ZXJTZXR0ZXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlNldHRlcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRl
eCA3YTJlYzc0Mjc2YzU3MDQ2NDQ4ZWRmZDM5ZDhmZTE0OTk1ZTg0YWIzLi5jMmMyZjc5OTQ4Nzk0
NjI0ZWMzODBhNTIxNWJjMGRlNTE2ZTE2ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtNjEsMjUgKzYxLDI1
IEBAIG5hbWVzcGFjZSBKU0MgewogQGVuZAogKi8KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0VWludDgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZs
b2F0NjQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jU2V0SW50OChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRVaW50MTYoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jU2V0VWludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ1
ZmZlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0dldHRlckJ5dGVMZW5ndGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDgoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQxNihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDMyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDMy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50
MTYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRG
bG9hdDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0
dGVyQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJv
dG9HZXR0ZXJCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApA
QCAtMTIwLDkgKzEyMCw5IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotRW5jb2RlZEpTVmFs
dWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0RhdGFWaWV3KiBkYXRh
VmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7
CkBAIC0xNjMsOSArMTYzLDkgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1FbmNvZGVkSlNWYWx1ZSBzZXRE
YXRhKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0g
anNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTIx
MCwxMjAgKzIxMCwxMjAgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMp
CiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90b3R5cGVzIikKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0dldHRlckJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0s
IGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2Fz
dDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdmll
dykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmll
dy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJE
YXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcg
b2JqZWN0Iik7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZpZXctPnBvc3NpYmx5U2hh
cmVkSlNCdWZmZXIoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmlldy0+cG9z
c2libHlTaGFyZWRKU0J1ZmZlcihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVu
Z3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
RGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZp
ZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlw
ZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFWaWV3LnBy
b3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+bGVuZ3RoKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0
ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcg
PSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBE
YXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8g
YmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBn
ZXREYXRhPEludDhBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxJbnQ4QWRhcHRv
cj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBnZXREYXRhPEludDE2QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8SW50MTZB
ZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIGdldERhdGE8SW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxJ
bnQzMkFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50
OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gZ2V0RGF0YTxVaW50OEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXRE
YXRhPFVpbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDE2QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0
dXJuIGdldERhdGE8VWludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMy
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNHZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDMyQWRhcHRvcj4oZXhlYyk7
CisgICAgcmV0dXJuIGdldERhdGE8VWludDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxGbG9hdDMyQWRh
cHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8RmxvYXQzMkFkYXB0b3I+KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY0dldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERh
dGE8RmxvYXQ2NEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPEZsb2F0NjRBZGFw
dG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBzZXREYXRhPEludDhBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxJbnQ4QWRh
cHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDE2KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBzZXREYXRhPEludDE2QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8SW50
MTZBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIHNldERhdGE8SW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0
YTxJbnQzMkFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRV
aW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gc2V0RGF0YTxVaW50OEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBz
ZXREYXRhPFVpbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1
bmNTZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDE2QWRhcHRvcj4oZXhlYyk7CisgICAg
cmV0dXJuIHNldERhdGE8VWludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWlu
dDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNTZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDMyQWRhcHRvcj4oZXhl
Yyk7CisgICAgcmV0dXJuIHNldERhdGE8VWludDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxGbG9hdDMy
QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8RmxvYXQzMkFkYXB0b3I+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNl
dERhdGE8RmxvYXQ2NEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPEZsb2F0NjRB
ZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
ZU1hdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaAppbmRl
eCA5ZDQ5NzU4N2FhMjEyOWFjOTJlNmMwYjYyZTdjYTVjYTVjMjkwZjkzLi42MDQxZDVlZWUwZWQw
NjAyMDMxZDM5ZDM0OTFmNDVmZjJmM2NlMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRlTWF0aC5oCkBAIC00Nyw4ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtc1RvR3JlZ29y
aWFuRGF0ZVRpbWUoVk0mLCBkb3VibGUsIFdURjo6VGltZVR5cGUgb3V0cHV0VGltZVR5cGUsIEdy
ZWdvcmlhbkRhdGVUaW1lJik7CiBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgZ3JlZ29yaWFuRGF0
ZVRpbWVUb01TKFZNJiwgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBkb3VibGUsIFdURjo6VGlt
ZVR5cGUgaW5wdXRUaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDJjYWU0NGRhNzFiZDE3ZWJjMzhhMDlkOTZiMTc4ZGRlYmIyYWFl
MzMuLmVhYWRkZDU5MjBkMGQ5ZjcxMjE5N2FiZDc2ZmMyZjJlMjdkNjU0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01MiwxMSArNTIsMTEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+anND
YWxsZWUoKSkpOworICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
KTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0Z1bmN0aW9uKSB9OwpAQCAtMTE1LDYgKzExNSw3IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246
OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoVk0mIHZtLCBKU0dsb2Jh
CiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZSgpCisgICAgLCBtX2dsb2JhbE9iamVjdCh2
bSwgdGhpcywgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKIHsKICAgICBhc3NlcnRUeXBlSW5m
b0ZsYWdJbnZhcmlhbnRzKCk7CiB9CkBAIC0xNjMsNyArMTY0LDcgQEAgSlNPYmplY3QqIEpTRnVu
Y3Rpb246OnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBpZiAoTElLRUxZKHByb3RvdHlwZS5pc09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIGFz
T2JqZWN0KHByb3RvdHlwZSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
dGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFpc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpKSB7CiAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdl
bmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1ydW50aW1lLXNlbWFudGljcy1ldmFsdWF0ZWJv
ZHkKICAgICAgICAgaWYgKGlzR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShqc0V4ZWN1dGFibGUo
KS0+cGFyc2VNb2RlKCkpKQpAQCAtMTgzLDcgKzE4NCw3IEBAIEZ1bmN0aW9uUmFyZURhdGEqIEpT
RnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywg
c2l6CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0g
cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKICAgICBGdW5jdGlvblJhcmVEYXRh
KiByYXJlRGF0YSA9IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZSh2bSwgdGhpcyk7Ci0gICAgcmFy
ZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0
KHZtKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwgdGhpcyk7CisgICAgcmFyZURhdGEtPmlu
aXRpYWxpemVPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KCksIHByb3Rv
dHlwZSwgaW5saW5lQ2FwYWNpdHksIHRoaXMpOwogCiAgICAgLy8gQSBERkcgY29tcGlsYXRpb24g
dGhyZWFkIG1heSBiZSB0cnlpbmcgdG8gcmVhZCB0aGUgcmFyZSBkYXRhCiAgICAgLy8gV2Ugd2Fu
dCB0byBlbnN1cmUgdGhhdCBpdCBzZWVzIGl0IHByb3Blcmx5IGFsbG9jYXRlZApAQCAtMTk5LDcg
KzIwMCw3IEBAIEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0
YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDCiAgICAgQVNTRVJUKGNhblVzZUFsbG9j
YXRpb25Qcm9maWxlKCkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7Ci0gICAgbV9y
YXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmpl
Y3Qodm0pLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKKyAgICBtX3JhcmVEYXRh
LT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUodm0sIGdsb2JhbE9iamVjdCgpLCBw
cm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKICAgICByZXR1cm4gbV9yYXJlRGF0YS5n
ZXQoKTsKIH0KIApAQCAtNDM3LDkgKzQzOCw5IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAg
ICAgICAgICAgICAgICAgLy8gVW5saWtlIGZ1bmN0aW9uIGluc3RhbmNlcywgdGhlIG9iamVjdCB0
aGF0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgYSBHZW5lcmF0b3JGdW5jdGlvbidzIHByb3RvdHlwZQog
ICAgICAgICAgICAgICAgIC8vIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBjb25zdHJ1Y3RvciBw
cm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyB0aGUgR2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2UuCiAg
ICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2Vu
ZXJhdG9yZnVuY3Rpb24taW5zdGFuY2VzLXByb3RvdHlwZQotICAgICAgICAgICAgICAgIHByb3Rv
dHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCh2bSktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
Z2VuZXJhdG9yUHJvdG90eXBlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FzeW5jR2Vu
ZXJhdG9yV3JhcHBlclBhcnNlTW9kZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VN
b2RlKCkpKQotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPmFzeW5jR2VuZXJhdG9yUHJvdG90
eXBlKCkpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hc3luY0dlbmVyYXRvclByb3RvdHlw
ZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDE4ZDljZmJmMTU4OGFj
NjQ5YmY2ODQ4NWI1ZDIzNDFlOWE5OWQwNGMuLjNmZWY5MmQ0NDVlYzRjMDdlNGYzMTI2MGNjODNj
ZDNkMmQ0ZmU0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2lnbmF0dXJlOwogfQogCiAKLUpTX0VYUE9SVF9Q
UklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDYWxjdWxhdGVk
RGlzcGxheU5hbWUoVk0mLCBKU09iamVjdCopOwogCkBAIC0xMjQsNiArMTI0LDExIEBAIGNsYXNz
IEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTRnVuY3Rpb24sIG1fcmFyZURhdGEpOwogICAgIH0KIAorICAgIHN0YXRpYyBpbmxp
bmUgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9nbG9iYWxPYmplY3QpOworICAgIH0KKwog
ICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghbV9yYXJlRGF0YSkpCkBAIC0xNDQsNiArMTQ5LDggQEAgY2xhc3MgSlNGdW5j
dGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9
CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3QuZ2V0KCk7IH0KKwogICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSBjb25zdDsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0Fub255bW91c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OwpAQCAtMjI0LDYgKzIzMSw3IEBAIGNs
YXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogCiAgICAgV3JpdGVCYXJyaWVyPEV4
ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUmFy
ZURhdGE+IG1fcmFyZURhdGE7CisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2ds
b2JhbE9iamVjdDsKIH07CiAKIGNsYXNzIEpTU3RyaWN0RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMg
SlNGdW5jdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaAppbmRleCAxODcyNjg0ZGE0MGNlYWM0ZWI5OGFkMmQwMzg1NGJjZDk4NGM0
YWM0Li4zZTA0NzVjODQ0ODYyZGY5NjJmNWQ3NTQ3ZWUxMjFkZmMyNGJjMDgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQy
LDYgKzQyLDcgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHMKICAgICA6IEJhc2Uodm0sIHNjb3Bl
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUpCiAg
ICAgLCBtX3JhcmVEYXRhKCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpKQogewogICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmlu
ZGV4IGQ4MjNhYzUzNzRkMjE2YTQyMjFkZTUxODk5YWQyZWEwODFhOGRjM2UuLjdmZTkxYzUwYmY0
NjFjZmVkMjUwN2NiYWFjYTgxMGEwNjM1YmM5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMzgsMTAgKzM4LDEwIEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJh
eVZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
Vmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yPFZpZXdDbGFzcz46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIwNiw1NiArMjA2LDU2IEBA
IGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBTdHJ1Y3R1cmUqIHBh
cmVudFN0cnVjdHVyZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5U3Ry
dWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4
ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1Y3R1cmUpOworICAgIEludGVybmFsRnVu
Y3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOworICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24tPmds
b2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0
b3JhZ2VUeXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQo
KSwgcGFyZW50U3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNpemVfdCBhcmdDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsKKyAgICBzaXplX3QgYXJnQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsK
IAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CiAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCAw
KSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShW
aWV3Q2xhc3M6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgMCkpKTsKICAgICB9CiAKLSAg
ICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IFdU
Rjo6bnVsbG9wdDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZp
cnN0VmFsdWUpICYmIGFyZ0NvdW50ID4gMSkgewotICAgICAgICBvZmZzZXQgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGV4ZWMsICJieXRlT2Zmc2V0Iik7CisgICAgICAgIG9m
ZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChjYWxsRnJhbWUs
ICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChhcmdDb3VudCA+IDIpIHsKICAgICAgICAgICAg
IGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpIHsK
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgRGF0YVZpZXcgYnl0ZUxlbmd0aCBpcyBwcmVzZW50
IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCi0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBieXRlTGVuZ3RoVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGJ5dGVMZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMik7CiAgICAgICAgICAgICAgICAgaWYgKCFieXRlTGVuZ3RoVmFsdWUuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlTGVuZ3RoVmFsdWUu
dG9JbmRleChleGVjLCAiYnl0ZUxlbmd0aCIpOworICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
PSBieXRlTGVuZ3RoVmFsdWUudG9JbmRleChjYWxsRnJhbWUsICJieXRlTGVuZ3RoIik7CiAgICAg
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbGVuZ3RoID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikudG9JbmRleChleGVjLCAi
bGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgyKS50b0luZGV4KGNhbGxGcmFtZSwgImxlbmd0aCIpOwogICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxWaWV3Q2xhc3M+KGV4ZWMsIHN0cnVjdHVyZSwgSlNWYWx1ZTo6ZW5jb2RlKGZpcnN0VmFsdWUp
LCBvZmZzZXQsIGxlbmd0aCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPFZp
ZXdDbGFzcz4oY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIEpTVmFsdWU6OmVuY29kZShmaXJzdFZhbHVl
KSwgb2Zmc2V0LCBsZW5ndGgpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4K
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJh
eVZpZXcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBWaWV3Q2xh
c3M6OmluZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApp
bmRleCBhZGIzMjc5M2I5MmM3ZDc3NzlmNzllMDE4Mjk1OTBlMDhhOWVhMTZlLi4wYTRiMTM0MjEx
MTI0Mjg5YWU2YTdjMzkwZTEyMDQ3M2NjNWIwYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKQEAgLTQ1Myw3ICs0NTMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZN
JiB2bSwgRXhlY1N0YQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAg
SlNBcnJheUJ1ZmZlclZpZXcqIHJlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3QoZXhlYywgdGhpc09i
amVjdCwgYXJncywgWyZdKCkgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxl
ZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVk
QXJyYXlTdG9yYWdlVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVl
LT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJy
YXlTdG9yYWdlVHlwZSk7CiAgICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoZXhlYywgc3RydWN0dXJlLCBsZW5ndGgpOwogICAgIH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNTQ5LDEwICs1NDksMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1N1YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgIHVuc2lnbmVkIG5ld0J5dGVPZmZzZXQgPSB0
aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3Q2xhc3M6OmVsZW1lbnRTaXpl
OwogCi0gICAgSlNPYmplY3QqIGRlZmF1bHRDb25zdHJ1Y3RvciA9IGNhbGxlZS0+Z2xvYmFsT2Jq
ZWN0KHZtKS0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlKTsKKyAgICBKU09iamVjdCogZGVmYXVsdENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9i
YWxPYmplY3QoKS0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0
b3JhZ2VUeXBlKTsKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgyKTsKICAgICBpZiAoc3BlY2llcyA9PSBkZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJy
YXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlT
dHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogCiAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRl
KAogICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKGFycmF5QnVmZmVyKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCBhMjBiMTYzODRmZDQ5Yzk3NDlmOTc2MjQ0NzU3ZThjYzdjY2E5ZWQ4Li5kOTU2OTc5M2Q4Mjkx
ZjNlMTM4MTc5NWMyZGVlZmQ4YWNkY2QxNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yNjgsNDYgKzI2OCw0NCBAQCBzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVDb25zb2xlUHJvcGVydHkoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0
KQogICAgIHJldHVybiBDb25zb2xlT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbCwgQ29uc29sZU9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWwsIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGds
b2JhbC0+Z2xvYmFsRXhlYygpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYWtlQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgSlNPYmplY3QqIHRh
cmdldCA9IGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICBKU1ZhbHVl
IGJvdW5kVGhpcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIEpTVmFsdWUgYm91
bmRBcmdzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMik7Ci0gICAgSlNWYWx1ZSBsZW5ndGhW
YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDMpOwotICAgIEpTU3RyaW5nKiBuYW1lU3Ry
aW5nID0gYXNTdHJpbmcoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoNCkpOworICAgIEpTT2JqZWN0
KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAg
ICBKU1ZhbHVlIGJvdW5kVGhpcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Cisg
ICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwor
ICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDMp
OworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCg0KSk7CiAKICAgICBBU1NFUlQobGVuZ3RoVmFsdWUuaXNJbnQzMkFzQW55SW50
KCkpOwogICAgIGludDMyX3QgbGVuZ3RoID0gbGVuZ3RoVmFsdWUuYXNJbnQzMkFzQW55SW50KCk7
CiAKLSAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBuYW1lID0gbmFtZVN0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMsIGdsb2JhbE9iamVj
dCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0FycmF5
Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0aCwgV1RGTW92ZShuYW1lKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBi
b3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRy
LCBsZW5ndGgsIFdURk1vdmUobmFtZSkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCkpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIHRh
cmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoY2Fs
bEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2Vy
dENhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBSRUxF
QVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgwKS5pc0Jvb2xlYW4oKSk7Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50KDApLmFzQm9vbGVhbigpKQorICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkuaXNCb29sZWFuKCkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LmFzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCiAgICAgYm9vbCBpdGVyYXRlZE9uY2UgPSBmYWxzZTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgbGluZTsKLSAgICBleGVjLT5pdGVyYXRl
KFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKFsm
XSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7CiAgICAgICAgIGlmICghaXRlcmF0ZWRPbmNlKSB7
CiAgICAgICAgICAgICBpdGVyYXRlZE9uY2UgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6Q29udGludWU7CkBAIC0zOTYsMTUgKzM5NCwxNCBAQCBjb25zdCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVu
cXVldWVKb2IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgSlNWYWx1ZSBqb2IgPSBleGVjLT5hcmd1
bWVudCgwKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAg
IEpTVmFsdWUgYXJndW1lbnQxID0gZXhlYy0+YXJndW1lbnQoMik7Ci0gICAgSlNWYWx1ZSBhcmd1
bWVudDIgPSBleGVjLT5hcmd1bWVudCgzKTsKKyAgICBKU1ZhbHVlIGpvYiA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAg
ICBKU1ZhbHVlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMyk7CiAKICAgICBnbG9i
YWxPYmplY3QtPnF1ZXVlTWljcm90YXNrKGNyZWF0ZUpTTWljcm90YXNrKHZtLCBqb2IsIGFyZ3Vt
ZW50MCwgYXJndW1lbnQxLCBhcmd1bWVudDIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGY0
ZGI3YTQzZGE2NTA2ZDI2NTQyNmViNGY4NTk0NGRiZWQzMGJmZTkuLjI4YjRjNmI1M2IxZDczMGI0
NTk5ZTQ4MDI3YTFhM2RmYmYzNzE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ3OCw1MCAr
NDc4LDQ4IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChTdHJpbmdWaWV3IHMpCiAgICAgcmV0
dXJuIGpzU3RyRGVjaW1hbExpdGVyYWwoZGF0YSwgZW5kKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgeCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF4Lmlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoeCk7CiAKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7Ci0gICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5l
dmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHMgPSBhc1N0cmluZyh4KS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBhc1N0cmluZyh4KS0+dmFsdWUoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIEpTVmFsdWUgcGFyc2VkT2JqZWN0OwogICAgIGlmIChzLmlzOEJpdCgpKSB7Ci0gICAgICAg
IExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihleGVjLCBzLmNoYXJhY3RlcnM4KCksIHMu
bGVuZ3RoKCksIE5vblN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBw
cmVwYXJzZXIoY2FsbEZyYW1lLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmlj
dEpTT04pOwogICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNl
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2Vy
KGV4ZWMsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04pOworICAg
ICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoY2FsbEZyYW1lLCBzLmNoYXJhY3Rl
cnMxNigpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAgcGFyc2VkT2JqZWN0
ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAocGFyc2VkT2JqZWN0KQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKLSAgICBTb3Vy
Y2VPcmlnaW4gc291cmNlT3JpZ2luID0gZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCk7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmds
b2JhbE9iamVjdCh2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxz
ZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsKKyAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4oKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgZmFs
c2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9u
ZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsK
ICAgICBpZiAoIWV2YWwpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCi0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodm0uaW50ZXJwcmV0ZXIt
PmV4ZWN1dGUoZXZhbCwgZXhlYywgY2FsbGVlR2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCksIGNh
bGxlZUdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1BhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUg
cmFkaXhWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcmFkaXhWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMSk7CiAKICAgICAvLyBPcHRpbWl6ZWQgaGFuZGxpbmcgZm9yIG51bWJlcnM6CiAg
ICAgLy8gSWYgdGhlIGFyZ3VtZW50IGlzIDAgb3IgYSBudW1iZXIgaW4gcmFuZ2UgMTBeLTYgPD0g
biA8IElOVF9NQVgrMSwgdGhlbiBwYXJzZUludApAQCAtNTQxLDMzICs1MzksMzMgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIElmIFRvU3RyaW5nIHRocm93cywgd2Ugc2hvdWxkbid0IGNhbGwg
VG9JbnQzMi4KLSAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGV4ZWMsIHZhbHVlLCBbJl0gKFN0cmlu
Z1ZpZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBh
cnNlSW50KHZpZXcsIHJhZGl4VmFsdWUudG9JbnQzMihleGVjKSkpKTsKKyAgICByZXR1cm4gdG9T
dHJpbmdWaWV3KGNhbGxGcmFtZSwgdmFsdWUsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VJbnQodmlldywgcmFkaXhW
YWx1ZS50b0ludDMyKGNhbGxGcmFtZSkpKSk7CiAgICAgfSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VGbG9hdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3Ry
aW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJh
bWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VGbG9hdCh2aWV3
V2l0aFN0cmluZy52aWV3KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNEZWNvZGVVUkkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90VW5lc2NhcGVXaGVuRGVj
b2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiIyQmKywvOjs9P0AiCiAg
ICAgKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGV4ZWMsIGRvTm90VW5l
c2NhcGVXaGVuRGVjb2RpbmdVUkksIHRydWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRlY29kZShjYWxsRnJhbWUsIGRvTm90VW5lc2NhcGVXaGVuRGVjb2RpbmdVUkksIHRydWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29t
cG9uZW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBlbXB0eUJpdG1hcDsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlY29kZShleGVjLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGNhbGxGcmFtZSwgZW1wdHlCaXRtYXAsIHRy
dWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2Rl
VVJJKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0VuY29kZVVSSShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSSA9IG1ha2VD
aGFyYWN0ZXJCaXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKQEAg
LTU3NiwxMCArNTc0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y0VuY29kZVVSSShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIhIyQmJygpKissLS4vOjs9P0Bf
fiIKICAgICApOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlbmNvZGUoZXhlYywgZG9O
b3RFc2NhcGVXaGVuRW5jb2RpbmdVUkkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVu
Y29kZShjYWxsRnJhbWUsIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNv
ZGVVUklDb21wb25lbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUklDb21wb25l
bnQgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RV
VldYWVoiCkBAIC01ODgsMTAgKzU4NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAi
IScoKSotLl9+IgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShl
eGVjLCBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZW5jb2RlKGNhbGxGcmFtZSwgZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdV
UklDb21wb25lbnQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0VzY2FwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGUgPSBtYWtl
Q2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCkBA
IC02MDAsOCArNTk4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiorLS4vQF8iCiAgICAgKTsKIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7CiAgICAgICAgICAgICBjb25zdCBMQ2hhciog
YyA9IHZpZXcuY2hhcmFjdGVyczgoKTsKQEAgLTYzNiw5ICs2MzQsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogICAgIH0p
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
VW5lc2NhcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b1N0cmluZ1ZpZXcoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b1N0cmluZ1ZpZXcoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICAvLyBXZSB1c2UgaW50IGZvciBrIGFu
ZCBsZW5ndGggaW50ZW50aW9uYWxseSBzaW5jZSB3ZSB3b3VsZCBsaWtlIHRvIGV2YWx1YXRlCiAg
ICAgICAgIC8vIHRoZSBjb25kaXRpb24gYGsgPD0gbGVuZ3RoIC02YCBldmVuIGlmIGxlbmd0aCBp
cyBsZXNzIHRoYW4gNi4KICAgICAgICAgaW50IGsgPSAwOwpAQCAtNjg4LDYyICs2ODYsNjEgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMtPnZtKCksIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBqc1N0
cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBj
YW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIpOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAn
Y2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvcik7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIGV4
ZWMtPmFyZ3VtZW50KDApLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9y
U3RydWN0dXJlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBudWxscHRyLCBUeXBlTm90aGluZywg
ZmFsc2UpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCB0aGlzVmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5z
eW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0g
dGhpc1ZhbHVlLnN5bnRoZXNpemVQcm90b3R5cGUoY2FsbEZyYW1lKTsKICAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm90b3R5cGUpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvdG90eXBl
KTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZt
LCBjYWxsRnJhbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKICAgICBp
ZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVk
RXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCi0gICAgSlNWYWx1
ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAKQEAgLTc1NywzMSArNzU0LDMwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYykKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBib29sIHNob3VsZFRocm93SWZD
YW50U2V0ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHZh
bHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CisgICAgdGhpc09iamVjdC0+c2V0UHJvdG90eXBl
KHZtLCBjYWxsRnJhbWUsIHZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9t
aXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1By
b21pc2UqIHByb21pc2UgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+YXJndW1lbnQoMCkpOwor
ICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGpzQ2FzdDxKU1Byb21pc2UqPihjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKIAogICAgIC8vIEludGVybmFsUHJvbWlzZXMgc2hvdWxkIG5vdCBiZSBleHBv
c2VkIHRvIHVzZXIgc2NyaXB0cy4KICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0ludGVybmFsUHJv
bWlzZSo+KHZtLCBwcm9taXNlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIAotICAgIEpTVmFsdWUgb3BlcmF0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgxKTsKKyAgICBKU1ZhbHVlIG9wZXJhdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKIAogICAgIEFTU0VSVChvcGVyYXRpb25WYWx1ZS5pc051bWJlcigpKTsKLSAgICBhdXRvIG9w
ZXJhdGlvbiA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbj4ob3BlcmF0
aW9uVmFsdWUudG9VSW50MzIoZXhlYykpOworICAgIGF1dG8gb3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8SlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uPihvcGVyYXRpb25WYWx1ZS50b1VJbnQzMihj
YWxsRnJhbWUpKTsKICAgICBBU1NFUlQob3BlcmF0aW9uID09IEpTUHJvbWlzZVJlamVjdGlvbk9w
ZXJhdGlvbjo6UmVqZWN0IHx8IG9wZXJhdGlvbiA9PSBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRp
b246OkhhbmRsZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgIGlmIChn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21pc2VSZWplY3Rpb25U
cmFja2VyKQotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCkt
PnByb21pc2VSZWplY3Rpb25UcmFja2VyKGdsb2JhbE9iamVjdCwgZXhlYywgcHJvbWlzZSwgb3Bl
cmF0aW9uKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgcHJvbWlz
ZSwgb3BlcmF0aW9uKTsKICAgICBlbHNlIHsKICAgICAgICAgc3dpdGNoIChvcGVyYXRpb24pIHsK
ICAgICAgICAgY2FzZSBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb246OlJlamVjdDoKQEAgLTc5
Nyw5MSArNzkzLDg4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hv
c3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihFeGVjU3RhdGUqIGV4CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxvZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZGF0YUxvZyhleGVjLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhleGVjKSwgIlxuIik7CisgICAgZGF0YUxvZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSksICJcbiIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0J1aWx0aW5EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCB0b1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0o
KSwgdG9TdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLQotICAgIGF1dG8q
IHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCk7CisgICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlamVjdCA9IFsmXSAoSlNWYWx1ZSByZWplY3Rpb25S
ZWFzb24pIHsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICBw
cm9taXNlLT5yZWplY3QoZXhlYywgcmVqZWN0aW9uUmVhc29uKTsKKyAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KGNhbGxGcmFtZSwgcmVqZWN0aW9uUmVhc29uKTsKICAgICAgICAgY2F0Y2hTY29wZS5j
bGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2Ut
PnByb21pc2UoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZXhlYy0+Y2Fs
bGVyU291cmNlT3JpZ2luKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID09IDEpOwotICAgIGF1dG8qIHNwZWNpZmllciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5j
YWxsZXJTb3VyY2VPcmlnaW4oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA9PSAxKTsKKyAgICBhdXRvKiBzcGVjaWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgaWYgKEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlamVj
dChleGNlcHRpb24tPnZhbHVlKCkpOwogCiAgICAgLy8gV2UgYWx3YXlzIHNwZWNpZnkgcGFyYW1l
dGVycyBhcyB1bmRlZmluZWQuIE9uY2UgZHluYW1pYyBpbXBvcnQoKSBzdGFydHMgYWNjZXB0aW5n
IGZldGNoaW5nIHBhcmFtZXRlcnMsCiAgICAgLy8gd2Ugc2hvdWxkIHJldHJpZXZlIHRoaXMgZnJv
bSB0aGUgYXJndW1lbnRzLgogICAgIEpTVmFsdWUgcGFyYW1ldGVycyA9IGpzVW5kZWZpbmVkKCk7
Ci0gICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIo
KS0+aW1wb3J0TW9kdWxlKGV4ZWMsIHNwZWNpZmllciwgcGFyYW1ldGVycywgc291cmNlT3JpZ2lu
KTsKKyAgICBhdXRvKiBpbnRlcm5hbFByb21pc2UgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRl
cigpLT5pbXBvcnRNb2R1bGUoY2FsbEZyYW1lLCBzcGVjaWZpZXIsIHBhcmFtZXRlcnMsIHNvdXJj
ZU9yaWdpbik7CiAgICAgaWYgKEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRpb24tPnZhbHVlKCkpOwotICAg
IHByb21pc2UtPnJlc29sdmUoZXhlYywgaW50ZXJuYWxQcm9taXNlKTsKKyAgICBwcm9taXNlLT5y
ZXNvbHZlKGNhbGxGcmFtZSwgaW50ZXJuYWxQcm9taXNlKTsKIAogICAgIGNhdGNoU2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21p
c2UoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3Bl
cnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA9PSAyKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBQ
cm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBib29sIGVudW1lcmFibGUgPSBvYmpl
Y3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOworICAgIGJvb2wgZW51bWVyYWJsZSA9IG9i
amVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihlbnVtZXJhYmxlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVy
dHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAog
I2lmIEVOQUJMRShJTlRMKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVU
aW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7Ci0gICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdCgqZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50
KDEpKTsKKyAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGRv
dWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJs
ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMikudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9y
bWF0KCpleGVjLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0KCpjYWxsRnJhbWUsIHZhbHVlKSkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDk0OGQ2N2VjMThmOTVlMWY2MmU5OGQxOGY2
YjY4MmY0MjI2YWNmNzYuLjIxMTMwZjliNjBjOWU5ZGVkMTdkNGFlMTVjMDM1MjA4NWE5NDVlMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaApAQCAtMjksMzUgKzI5LDM2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQXJnTGlzdDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IEpTT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBGSVhNRTogVGhl
c2UgZnVuY3Rpb25zIHNob3VsZCByZWFsbHkgYmUgaW4gSlNHbG9iYWxPYmplY3QuY3BwLCBidXQg
cHV0dGluZyB0aGVtIHRoZXJlCiAvLyBpcyBhIDAuNSUgcmVkdWN0aW9uLgogCiBleHRlcm4gY29u
c3QgQVNDSUlMaXRlcmFsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcjsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VGbG9h
dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0Rl
Y29kZVVSSShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0RlY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3IoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRl
cihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1By
b3RvU2V0dGVyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxvZyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZShFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1v
ZHVsZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0VuY29kZVVSSUNvbXBvbmVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNV
bmVzY2FwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlw
ZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxv
ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNPd25LZXlzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBkb3VibGUganNUb051bWJlcihTdHJpbmdWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suaAppbmRleCAzOTkzNGE2YjEwOWE1M2Y0ZTc2MGQ2NDlkZjM4MTg1OWY5ZTYy
OGIxLi45N2JiOTdkN2QyMzdkNjY3ZThhMGYxYzBiN2U3NmFiMjJhZmY0MjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtNDksOSArNDksMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAvLyBEcm9wQWxsTG9ja3Mgb2JqZWN0IHRha2VzIGNhcmUgdG8gcmVsZWFzZSB0aGUg
SlNMb2NrIG9ubHkgaWYgeW91cgogLy8gdGhyZWFkIGFjcXVpcmVkIGl0IHRvIGJlZ2luIHdpdGgu
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwogY2xhc3Mg
SlNMb2NrOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBUaGlzIGNsYXNzIGlz
IHVzZWQgdG8gcHJvdGVjdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxlZ2FjeSBzaW5nbGUg
CiAvLyBzaGFyZWQgVk0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5jcHAKaW5kZXggZTg4NzgwYjVkMTAzNGJmZGYxMjYyNzhmMmIwMWFlNDg0YTQ2
NmFiOC4uMGU1YTk3ZThjMzEwMjA3YTUzYmQ5MTYyOGNlM2NlMzk2MmI1NmQxOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtNTAs
MTQgKzUwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVs
ZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJFdmFsdWF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clJlc29sdmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJSZXNvbHZlU3luYyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNoKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFtZXNw
YWNlT2JqZWN0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlcXVlc3Rl
ZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5jKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtMzg3LDMzICszODcs
MzMgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlTG9hZGVyOjpnZXRNb2R1bGVO
YW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKiBleGUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFy
c2VNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOworICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgYXV0byBy
ZWplY3QgPSBbJl0gKEpTVmFsdWUgcmVqZWN0aW9uUmVhc29uKSB7CiAgICAgICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVq
ZWN0KGV4ZWMsIHJlamVjdGlvblJlYXNvbik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJy
ZWQtPnJlamVjdChjYWxsRnJhbWUsIHJlamVjdGlvblJlYXNvbik7CiAgICAgICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogICAgIH07CiAKLSAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgY29uc3QgSWRlbnRpZmllciBtb2R1
bGVLZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsK
ICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biByZWplY3QoY2F0Y2hTY29wZS5leGNlcHRpb24oKSk7CiAKLSAgICBKU1ZhbHVlIHNvdXJjZSA9
IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgc291cmNlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKICAgICBhdXRvKiBqc1NvdXJjZUNvZGUgPSBqc0Nhc3Q8SlNTb3VyY2VDb2RlKj4o
c291cmNlKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBqc1NvdXJjZUNvZGUtPnNvdXJj
ZUNvZGUoKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoc291cmNlQ29kZS5w
cm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJB
c3NlbWJseSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Ojpp
bnN0YW50aWF0ZShleGVjLCBkZWZlcnJlZCwgbW9kdWxlS2V5LCBqc1NvdXJjZUNvZGUpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5OjppbnN0YW50aWF0ZShj
YWxsRnJhbWUsIGRlZmVycmVkLCBtb2R1bGVLZXksIGpzU291cmNlQ29kZSkpOwogI2VuZGlmCiAK
ICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlQ29kZSk7CkBAIC00MjMsNDggKzQyMyw0
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAg
IGlmIChlcnJvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IudG9FcnJv
ck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAg
ICAgcmV0dXJuIHJlamVjdChlcnJvci50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNl
Q29kZSkpOwogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CiAKLSAgICBNb2R1bGVBbmFs
eXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIG1vZHVsZVBy
b2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxW
YXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoY2FsbEZyYW1l
LCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlv
bnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgaWYgKFVO
TElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGNh
dGNoU2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVz
b2x2ZShleGVjLCBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoY2FsbEZyYW1lLCBtb2R1bGVBbmFs
eXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpOwogICAgIGNhdGNoU2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clJlcXVlc3RlZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1
bGVSZWNvcmQqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8qIG1vZHVsZVJlY29y
ZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpIAotICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IG51bGxwdHIpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyKSkpOwogCi0gICAg
SlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBtb2R1
bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBtb2R1bGVSZWNvcmQt
PnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKGF1dG8m
IGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpKSB7Ci0gICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSsrLCBqc1N0cmluZyh2bSwga2V5LmdldCgpKSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBpKyssIGpzU3RyaW5nKHZt
LCBrZXkuZ2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIG1vZHVs
ZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgZXhlYy0+
YXJndW1lbnQoMCkpOworICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJz
dHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAg
ICAgICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCks
ICJcbiIpOwogCi0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEp
KTsKKyAgICBtb2R1bGVSZWNvcmQtPmxpbmsoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NzIsNzEg
KzQ3Miw3MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVs
ZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVjU3RhdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJl
c29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnJlc29sdmUuCiAgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCiAgICAgLy8gVGFrZSB0
aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBy
ZXNvdXJjZSBsb2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIg
YW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCi0gICAgSlNNb2R1bGVMb2FkZXIq
IGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9k
dWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVy
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNvbHZlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZl
U3luYyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlclJlc29sdmVTeW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9k
dWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01vZHVsZUxvYWRlciog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGxvYWRlci0+cmVzb2x2ZVN5
bmMoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1
bWVudCgyKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2FkZXItPnJlc29sdmVTeW5jKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpZGVudGlmaWVyVG9KU1Zh
bHVlKHZtLCByZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5mZXRjaAog
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItZmV0Y2gKICAg
ICAvLyBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1YWxseS4KICAgICAv
LyBGb3IgZXhhbXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwgY2FuIHByb3ZpZGUgdGhlIGhvb2sg
ZmV0Y2hpbmcgdGhlIHJlc291cmNlCiAgICAgLy8gZnJvbSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0u
Ci0gICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2Fk
ZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3VtZW50
KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9i
amVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBh
dXRvKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9h
ZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8qIG1v
ZHVsZU5hbWVzcGFjZU9iamVjdCA9IGxvYWRlci0+Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvKiBtb2R1bGVOYW1lc3BhY2VPYmplY3Qg
PSBsb2FkZXItPmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9kdWxlTmFtZXNwYWNlT2JqZWN0
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRpdGlvbmFsIEhvb2sgRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVG8gaW5zdHJ1bWVudCBh
bmQgcmV0cmlldmUgdGhlIGVycm9ycyByYWlzZWQgZnJvbSB0aGUgbW9kdWxlIGV4ZWN1dGlvbiwK
ICAgICAvLyB3ZSBpbnNlcnRlZCB0aGUgaG9vayBwb2ludCBoZXJlLgogCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxK
U01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3VtZW50KDIpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgyKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKaW5kZXggOGM1
MTA5ODk2YTA4MzVmMTE3N2E3MmYyZDJmMzhlOWFmMjUwNWEyZC4uYzk1MWJlZTQyYjk2YzNkZDc1
NzFlYzAwNDY1OTM4MmY5MjA3NTllOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKQEAgLTU3LDExICs1NywxMSBAQCB2
b2lkIEpTTmF0aXZlU3RkRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgaQogICAgIG1fZnVuY3Rpb25DZWxsLnNldCh2bSwgdGhpcywg
ZnVuY3Rpb25DZWxsKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cnVuU3RkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNDYXN0PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihzdGF0ZS0+anNDYWxsZWUoKSk7Cisg
ICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNOYXRpdmVTdGRGdW5j
dGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigpKHN0
YXRlKTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5j
dGlvbigpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAogSlNOYXRpdmVTdGRGdW5jdGlv
biogSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5j
dGlvbiYmIG5hdGl2ZVN0ZEZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaAppbmRleCBmYWI5ZDZlMzU3ZTc5NzE3NWNmMDRk
MTVlYWUxNzQyOTY4Yzc0MDliLi5mNmM3M2IzODBhNmQ3MzFjZmQxODMwM2I4NDcyNWY3YjkxYzJj
YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVT
dGRGdW5jdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CiBjbGFzcyBOYXRpdmVTdGRGdW5jdGlvbkNlbGw7CiAKLXVzaW5nIE5hdGl2
ZVN0ZEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZShFeGVjU3RhdGUqKT47
Cit1c2luZyBOYXRpdmVTdGRGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248RW5jb2RlZEpTVmFsdWUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKT47CiAKIGNsYXNzIEpTTmF0aXZlU3RkRnVuY3Rp
b24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDgyNDg5OGFkM2IxZGExNTM4MTNm
NTg0NDRjYTc2ZjQ3OGQwOWI4NGIuLjc3NGM1YzJmZGIxMmI1YzE3ODZmMmRmNDc5ZWU4ZTMxYTk4
OTJmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSlNPTk9iamVjdCk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVu
Y1N0cmluZ2lmeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTc5Nyw1
NSArNzk3LDU1IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVu
ZmlsdGVyZWQpCiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEyLjIKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhl
eGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIFN0cmluZ1ZpZXcgdmll
dyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAKICAgICBKU1ZhbHVlIHVuZmlsdGVyZWQ7CiAgICAg
aWYgKHZpZXcuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4ganNvblBh
cnNlcihleGVjLCB2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcubGVuZ3RoKCksIFN0cmljdEpTT04p
OworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGNhbGxGcmFtZSwgdmll
dy5jaGFyYWN0ZXJzOCgpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgdW5m
aWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIEVYQ0VQVElP
Tl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICF1bmZpbHRlcmVkKTsKICAgICAgICAgaWYg
KCF1bmZpbHRlcmVkKSB7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVTeW50YXhF
cnJvcihjYWxsRnJhbWUsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+IGpzb25QYXJzZXIo
ZXhlYywgdmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5sZW5ndGgoKSwgU3RyaWN0SlNPTik7Cisg
ICAgICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+IGpzb25QYXJzZXIoY2FsbEZyYW1lLCB2aWV3LmNo
YXJhY3RlcnMxNigpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgdW5maWx0
ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIEVYQ0VQVElPTl9B
U1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICF1bmZpbHRlcmVkKTsKICAgICAgICAgaWYgKCF1
bmZpbHRlcmVkKSB7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJv
cihjYWxsRnJhbWUsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICBpZiAo
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh1bmZpbHRlcmVkKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgV2Fsa2VyIHdhbGtl
cihleGVjLCBhc09iamVjdChmdW5jdGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgV2Fs
a2VyIHdhbGtlcihjYWxsRnJhbWUsIGFzT2JqZWN0KGZ1bmN0aW9uKSwgY2FsbFR5cGUsIGNhbGxE
YXRhKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdhbGtlci53YWxrKHVuZmlsdGVyZWQp
KTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmdpZmllciBzdHJpbmdpZmll
cihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIFN0cmlu
Z2lmaWVyIHN0cmluZ2lmaWVyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdHJpbmdp
Zmllci5zdHJpbmdpZnkoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5naWZpZXIuc3RyaW5naWZ5KGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKIEpTVmFsdWUgSlNPTlBhcnNlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBqc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IGM0NjcwZjhhOTAxNTEyNGEwODdjYzcyNjAzOThmODQ2MWI4ODY5YjYu
LjcxOGMxNTYxMDMxODlmODc0Yzk1ZTgxYzdmOWE1OWQ0OWVmMDgyMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIzMDIsMTIgKzIzMDIsMTIgQEAg
Ym9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90bykKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2
YXRlRnVuY0luc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAg
SlNWYWx1ZSBwcm90byA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcHJv
dG8gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2
YWx1ZSwgcHJvdG8pKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oSlNP
YmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShjYWxsRnJhbWUsIHZhbHVlLCBwcm90bykpKTsKIH0K
IAogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4
IDc3NmMxZmIwZTBkODFhNjBlOWE1NzExOGI0ZGYzOTJkMjZmZjEyOTAuLjUzNGI3ZGI1M2Y1Zjhj
Y2MwMmFkNDZkNTA4MDg0OTg4ZWZiNGQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaApAQCAtMTE4NCw3ICsxMTg0LDcgQEAgY2xhc3MgSlNGaW5hbE9iamVjdCBm
aW5hbCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yo
RXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiBpbmxpbmUgSlNPYmplY3QqIEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoCiAgICAg
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJm
bHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAppbmRleCBkZDExMjQ1OTlhMTIwY2NmN2EyOWVk
ZGJhMzY4ZjY1NDdmM2RlNTAwLi44OTQxZDU4ZjkxNWNlMTMwYmFiNjlkNzFjMmZiNjYyNTU4MmY4
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpKU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcsIGNvbnN0cnVjdFR5cGVkQXJyYXlW
aWV3KQpAQCAtNjUsMTEgKzY1LDExIEBAIFN0cnVjdHVyZSogSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoCiAKIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBj
YWxsZWQgZGlyZWN0bHkiX3MpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiX3Mp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggZmFi
NmUwOWU4N2Q0MzY3MjU0ZjVhOGM2YmMyNWZkMmQyMTNkMTFjZS4uMzBiMGRmZjA4ZmRkMjZlYmJj
NWRmNjU3NDY5NmM1ZTkyMzQ2YjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTM4LDIy
MyArMzgsMjIyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBDQUxMX0dFTkVSSUNfVFlQ
RURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZnVuY3Rpb25OYW1lKSBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9iamVjdCgpLT5jbGFz
c0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgc3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5
cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBU
eXBlVWludDhDbGFtcGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50OENsYW1wZWRBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1w
ZWRBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlSW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNJbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNJbnQzMkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDMyOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4odm0sIGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBm
dW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQ2NDogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KHZt
LCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQz
MjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9h
dDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBj
YWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlSW50ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJy
YXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlVWludDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50OEFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50MTY6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5Pih2bSwgZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDE2OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4o
dm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4odm0sIGNhbGxGcmFtZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBl
ZEFycmF5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyJfcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxlIChmYWxzZSkKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih2YWx1ZS5pc0NlbGwoKSAmJiBpc1R5cGVkVmlldyh2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZv
KGV4ZWMtPnZtKCkpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odmFsdWUuaXNDZWxsKCkgJiYgaXNUeXBlZFZpZXcodmFsdWUuYXND
ZWxsKCktPmNsYXNzSW5mbyhnbG9iYWxPYmplY3QtPnZtKCkpLT50eXBlZEFycmF5U3RvcmFnZVR5
cGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmlldyhhcmd1bWVudC5h
c0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXci
X3MpOwogCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJh
eUJ1ZmZlclZpZXcqPihhcmd1bWVudCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlVuZGVy
bHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJVbmRlcmx5
aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5sZW5ndGgoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIFR5cGVkQXJyYXlU
eXBlIHR5cGUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKS0+Y2xhc3NJ
bmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VU
eXBlOwogICAgIEFTU0VSVChpc1R5cGVkVmlldyh0eXBlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0eXBlKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1Nv
cnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElP
TihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBi
dXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBD
QUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jQ29weVdpdGhpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmND
b3B5V2l0aGluKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAg
Q0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90
IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmRleE9mKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5n
dGgoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBi
dXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
bGljZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNUb1N0cmluZ1RhZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgc3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNs
YXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewogICAgIGNhc2UgVHlwZVVpbnQ4
Q2xhbXBlZDoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgIlVp
bnQ4Q2xhbXBlZEFycmF5IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCmluZGV4IDRlMzM0MzE0MjI5ZmUw
OGY5OWIzOWVjNmY1MDgzYWQ3OGY5NDcwNzIuLjVkNTQ5OTM2OGNhZmFlZWJhZDEwZmRhYWY0MTI3
OWJkYmI1MDU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBjbGFz
cyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1NvcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCA3NzZl
YzNjNGYyMWFiOGVjZDE0MmY5Y2M2NTc1YWEyZGI5NjBkODQ4Li43MmEyMWE1MDU1MmM2NjhkZWFi
ZjczZDRhNjFmMjM2MDZkYzYzM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC00Nyw2MiArNDcsNjEgQEAgdm9pZCBNYXBDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlw
ZSwgR2V0dGVyU2UKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogTWFwQ29uc3RydWN0b3I6Ok1hcENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUsIGNhbGxNYXAsIGNvbnN0cnVjdE1hcCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbE1hcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJNYXAiKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJNYXAiKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVj
LT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0
dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+bWFw
U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgaXRlcmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVy
YWJsZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUp
KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
TWFwOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgbWFwU3RydWN0dXJlKSkpOwogCiAgICAgaWYgKGF1
dG8qIGl0ZXJhYmxlTWFwID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KHZtLCBpdGVyYWJsZSkpIHsK
ICAgICAgICAgaWYgKGl0ZXJhYmxlTWFwLT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKG1h
cFN0cnVjdHVyZSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShpdGVyYWJsZU1hcC0+Y2xvbmUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSkpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhYmxlTWFwLT5jbG9uZShjYWxsRnJhbWUsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAgICAgfQog
Ci0gICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSk7
CisgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgbWFwU3RydWN0
dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IG1hcC0+SlNPYmplY3Q6OmdldChleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IG1hcC0+
SlNPYmplY3Q6OmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0
YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0
YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBmb3JFYWNoSW5JdGVyYWJs
ZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5l
eHRJdGVtKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBpdGVyYWJsZSwgWyZd
KFZNJiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBpZiAoIW5l
eHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0
SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKKyAgICAgICAgSlNWYWx1
ZSBrZXkgPSBuZXh0SXRlbS5nZXQoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCkp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBuZXh0SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDEpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5leHRJdGVtLmdldChjYWxsRnJhbWUsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpA
QCAtMTEwLDI1ICsxMDksMjUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2
YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgY2FsbChleGVjLCBhZGRlckZ1bmN0aW9uLCBh
ZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgbWFwLCBhcmd1bWVu
dHMpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIG1hcCwgYXJndW1lbnRzKTsKICAgICB9
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dEhlYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihleGVjLT52bSgpLCBleGVjLT5h
cmd1bWVudCgwKSkpOwotICAgIEpTTWFwKiBtYXAgPSBqc0Nhc3Q8SlNNYXAqPihleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHlu
YW1pY0Nhc3Q8SlNNYXAqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKKyAgICBKU01hcCogbWFwID0ganNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgYXV0byogaGVhZCA9IG1hcC0+aGVhZCgpOwogICAgIEFTU0VS
VChoZWFkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGhlYWQpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFw
QnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4
ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0
PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFT
U0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpT
TWFwOjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
QVNTRVJUKGJ1Y2tldCk7CiAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgd2hpbGUg
KGJ1Y2tldCkgewpAQCAtMTM2LDIxICsxMzUsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQpOwogICAgICAgICBidWNrZXQgPSBi
dWNrZXQtPm5leHQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xv
YmFsT2JqZWN0LT52bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRL
ZXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgp
LCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6
QnVja2V0VHlwZSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGdsb2Jh
bE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tl
dCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YnVja2V0LT5rZXkoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJp
dmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHlu
YW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgw
KSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwg
anNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6
QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VS
VChidWNrZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0LT52YWx1ZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCmlu
ZGV4IGVkNDgzMDVjNWRiM2Q0ZmJkNjQ1ZjA5NjMxODAzODZkNDIxMmY3NzkuLjFiYmFiNzZmN2Ji
MGZiZWIxMjUzOTJhMDRhMjNkZmI2ZTEzZGQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaApAQCAtNTYsOSArNTYsOSBAQCBjbGFzcyBNYXBD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgTWFwUHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3lt
Ym9sKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNN
YXBCdWNrZXRIZWFkKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlKEV4
ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01h
cEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVG
dW5jTWFwQnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBjMjI5MDVlODgxM2Q0
ZjI0Yzk5MTU2NGVmYjI3YWY0NTU3NzRhZjRkLi5hZjU3MjZmN2I2ZTkyYTdlOWY4ODBkNjJkY2Zh
MzFmZGRlMDkzODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBjb25zdCBDbGFzc0luZm8gTWFwUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAmbWFwUHJvdG90eXBlVGFibAog
QGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jQ2xlYXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXBQcm90b0Z1bmNEZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVh
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAgICAgCiB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNzgsOSArNzgsOSBAQCB2b2lkIE1h
cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5zaXplLCBtYXBQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1BTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNW
YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBnZXRNYXAoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQog
ewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNDZWxsKCkpKSB7CkBAIC05NSw1MiArOTUsNTIg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
TWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBtYXAtPmNsZWFyKGNhbGxGcmFtZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCog
bWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNN
YXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obWFw
LT5yZW1vdmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
TWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1hcC0+Z2V0
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTWFwKiBtYXAg
PSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01hcCog
bWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPmhh
cyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIEpTTWFwKiBtYXAgPSBnZXRN
YXAoY2FsbEZyYW1lLCB0aGlzVmFsdWUpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgbWFwLT5zZXQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFw
ID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAq
IG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtYXAtPnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcApp
bmRleCAyYjA2ZDY2MDM1YThmOGE4MjFiNjM3ZGM3YzU5OTMwODQ5ZDgxMmZhLi5hZGZmYWVkZWE5
NWQ0ZDAxMTQ2YTRlYjU1ZWZiMDdhNDRhZTE5YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcApAQCAtMzMsMzggKzMzLDM4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoTWF0aE9iamVj
dCk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29z
aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0FTaW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNBU2luaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0FUYW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBVGFuaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NvcyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHAoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3Vu
ZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0h5cG90KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jTG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jTG9nMXAoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNMb2cxMChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0xvZzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpZ24oRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW4oRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU3Fy
dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y1RhbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1RhbmgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNJTXVsKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQUNvcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FT
aW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNBVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbjIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0NlaWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmND
b3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jRXhwbTEoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0xvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMXAoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xv
ZzEwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY01pbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY1JvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaWduKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW4o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1NpbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y1RhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gTWF0aE9iamVjdDo6c19pbmZv
ID0geyAiTWF0aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoTWF0aE9iamVjdCkgfTsKIApAQCAtMTI3LDc2ICsxMjcsNzYgQEAgdm9pZCBNYXRo
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQWJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmFicyhleGVj
LT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGZhYnMoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJh
bWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNB
Q29zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0FDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFjb3MoZXhlYy0+
YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQVNpbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjph
c2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbihjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6YXRhbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW4oY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgZG91YmxlIGFyZzAgPSBleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYXJnMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZG91
YmxlIGFyZzEgPSBleGVjLT5hcmd1bWVudCgxKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUg
YXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGF0YW4yKGFyZzAsIGFyZzEpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
Q2VpbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2VpbChleGVjLT5hcmd1bWVudCgwKS50b051bWJl
cihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNlaWwoY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdWludDMyX3QgdmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKKyAgICB1aW50MzJfdCB2YWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoY2x6KHZhbHVlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjpjb3MoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpjb3MoY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHAoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Rv
dWJsZU51bWJlcihNYXRoOjpleHAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpleHAoY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoZmxvb3IoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmbG9vcihjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVj
LT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7CiAgICAgZG91YmxlIG1heCA9IDA7CiAgICAgVmVjdG9yPGRvdWJsZSwg
OD4gYXJnczsKICAgICBhcmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJnc0NvdW50KTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJnc0NvdW50OyArK2kpIHsKLSAgICAgICAgYXJn
cy51bmNoZWNrZWRBcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhl
YykpOworICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoYXJn
c1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVy
KCtzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKQEAgLTIxNywxOSAr
MjE3LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVt
YmVyKHNxcnQoc3VtKSAqIG1heCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNMb2coRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRo
Ojpsb2coZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2coY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CisgICAgdW5zaWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCk7CiAgICAgZG91YmxlIHJlc3VsdCA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFyZ3NDb3VudDsgKytr
KSB7Ci0gICAgICAgIGRvdWJsZSB2YWwgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051
bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIHZhbCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoaykudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkp
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IFBOYU47CkBAIC0yMzksMTQgKzIzOSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01pbihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHVuc2lnbmVkIGFyZ3ND
b3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBkb3VibGUgcmVzdWx0ID0gK3N0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgYXJnc0NvdW50OyArK2spIHsKLSAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBkb3VibGUgdmFsID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKHN0ZDo6aXNuYW4odmFsKSkgewogICAgICAgICAgICAgcmVzdWx0ID0gUE5hTjsKQEAgLTI1
NiwzNCArMjU2LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y01pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jUG93KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICAvLyBFQ01BIDE1LjguMi4xLjEzCiAKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBkb3VibGUgYXJnID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGFyZyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZG91Ymxl
IGFyZzIgPSBleGVjLT5hcmd1bWVudCgxKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYXJn
MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShvcGVyYXRpb25NYXRoUG93KGFyZywgYXJnMikp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFuZG9t
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1JhbmRvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT53ZWFrUmFuZG9tTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGdsb2JhbE9iamVjdC0+d2Vha1JhbmRvbU51bWJlcigpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1JvdW5kKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y1JvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc1JvdW5kKGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoanNS
b3VuZChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpZ24oRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGRvdWJsZSBhcmcg
PSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYXJnID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIGlmIChzdGQ6Omlz
bmFuKGFyZykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAg
aWYgKCFhcmcpCkBAIC0yOTEsOTUgKzI5MSw5NSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0ZDo6c2lnbmJpdChhcmcpID8gLTEgOiAxKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW4oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbihleGVjLT5hcmd1bWVudCgwKS50b051bWJl
cihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1h
dGg6OnNpbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU3Fy
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChleGVjLT5hcmd1bWVudCgwKS50b051
bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVy
KHNxcnQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW4oZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjp0YW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0lNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlu
dDMyX3QgbGVmdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJf
dCBsZWZ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIGludDMyX3QgcmlnaHQgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMy
KGV4ZWMpOworICAgIGludDMyX3QgcmlnaHQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvSW50
MzIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGxlZnQg
KiByaWdodCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNBQ29zaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNBQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvc2go
ZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zaChjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0FTaW5oKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjphc2luaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFzaW5oKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW5oKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
YXRhbmgoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDYnJ0KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNicnQoZXhlYy0+YXJndW1lbnQoMCku
dG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjpjYnJ0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1l
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29z
aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNDb3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpjb3NoKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6Y29zaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0V4cG0xKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0V4cG0xKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpl
eHBtMShleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cG0xKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jRnJvdW5kKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMXAo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jTG9nMXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzFwKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJl
cihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNMb2cxMChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
bG9nMTAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2cxMChjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoTWF0aDo6bG9nMihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzIoY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbmgoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbmgoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpz
aW5oKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW5oKGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6dGFuaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5j
KEV4ZWNTdGF0ZSpleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jVHJ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50ZWdl
clByZXNlcnZlTmFOKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlclByZXNlcnZlTmFOKGNhbGxGcmFtZSkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmgKaW5kZXggYWY1N2QzNGJhNWU0M2JhNDFmYzQyNWJlZDIzMzdlYzZmMmJm
NmFmNy4uYmNkZWI0M2M5MTE2ZTYwMDU1OGNkYTJjZTBkZWRiNGM1OGQ4YWU2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApAQCAtNDksOCArNDksOCBAQCBj
bGFzcyBNYXRoT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJzKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRmxvb3IoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVuYyhFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jRmxvb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NaWNyb3Rhc2suaAppbmRleCA5YzRmMjc0NjUzMTRlZDRkZDYwNjU3MWU2MmQ3NzkyNDc3
ZjkzYTZmLi41ZDg4OTE1ZDViNGVjMzkzNDgzYTRkMWRhYWJjNWJjNTZjNTM3MGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NaWNyb3Rhc2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NaWNyb3Rhc2suaApAQCAtMjksNyArMjksOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBNaWNyb3Rhc2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxNaWNyb3Rhc2s+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjIx
NjUwN2NhYjYwZTg4YjRiNjk5NDE5NzJhZWE3M2JiM2Q0NDNlZC4uZGMzNDA2ODEyYTZkMzA2Nzg0
MzYzNTI2ZGU0NTI0YzQ4MzQzZGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDI0ICs1MCwy
NCBAQCB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcgogfQogCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJy
b3JUeXBlPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJn
ZXQoKSwganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKS0+
ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCksIGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxl
ZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1cmUpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcs
IGZhbHNlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdl
LCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9CiAKIHRlbXBsYXRlPEVycm9yVHlw
ZSBlcnJvclR5cGU+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I8ZXJyb3JUeXBlPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPGVycm9yVHlwZT46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAg
U3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwg
bWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0p
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxG
cmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxz
ZSkpOwogfQogCiB0ZW1wbGF0ZSBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlw
ZTo6RXZhbEVycm9yPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3MzA3ZDAxMGM5MzQ0Njk2YzY0YWFjOWE4
YzI5NWY3YWIzM2U0YTMwLi4xNjZlZTcxYjQ1NDI0OGI4MzRmY2Q3YzIzNzNhZTI0YTcxZGEwZDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oCkBAIC02MCwxMCArNjAsMTAgQEAgY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yQmFzZSB7CiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKFZNJiB2bSkgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+ZXJyb3JTdHJ1Y3R1cmUo
ZXJyb3JUeXBlKTsgfQorICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoVk0mKSB7IHJldHVy
biBnbG9iYWxPYmplY3QoKS0+ZXJyb3JTdHJ1Y3R1cmUoZXJyb3JUeXBlKTsgfQogcHJpdmF0ZToK
LSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVGdW5jdGlvbi5oCmluZGV4IDdiZGM4Zjk2ZDAzMDFjMjA0MDQzMTRiOWFlYjc0ZGJkYjAz
MDdhNGIuLjEwYmFmOTA5Njc5NzMxNzJhYzQzODY4NWYwYjc3NWEyNjJlNmY4YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaApAQCAtMzAsOSAr
MzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogCi10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKU0NfSE9TVF9DQUxMICpSYXdOYXRp
dmVGdW5jdGlvbikoRXhlY1N0YXRlKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKU0NfSE9T
VF9DQUxMICpSYXdOYXRpdmVGdW5jdGlvbikoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogY2xhc3MgTmF0aXZlRnVuY3Rpb24gewogcHVibGljOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBOYXRpdmVGdW5jdGlvbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KE5hdGl2ZUZ1bmN0aW9uIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogICAgIGJvb2wgb3Bl
cmF0b3IhPShOYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3Ro
ZXIubV9wdHI7IH0KIAotICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJhdG9yKCkoRXhlY1N0YXRlKiBl
eGVjKSB7IHJldHVybiBtX3B0cihleGVjKTsgfQorICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJhdG9y
KCkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsg
cmV0dXJuIG1fcHRyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCiAgICAgdm9pZCogcmF3
UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcHRyKTsg
fQogCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIHsKICAgICBi
b29sIG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KFRhZ2dlZE5hdGl2
ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQog
Ci0gICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJu
IE5hdGl2ZUZ1bmN0aW9uKCp0aGlzKShleGVjKTsgfQorICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJh
dG9yKCkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
IHsgcmV0dXJuIE5hdGl2ZUZ1bmN0aW9uKCp0aGlzKShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7
IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIE5hdGl2ZUZ1bmN0aW9uKCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNw
cAppbmRleCBhNTZjYWIzZmFlNzllZTk0NWU2OTc2NjI0YTE2NGI1YjE4ZDhmNGM4Li45NjdkYmZj
NTlkMWZiZjYyODBmZTViZjFmNTljMmVjZmEwZTc4MjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gTnVsbEdldHRlckZ1bmN0aW9u
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoTnVsbEdldHRlckZ1bmN0aW9uKSB9OwogCiBuYW1lc3BhY2Ug
TnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWwgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0
ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVy
RnVuY3Rpb24uY3BwCmluZGV4IDU2ZDUzY2M0YWE2NzZiZjczZGZjMWUwZWU2ZjRmM2E2MjcxODcw
MzMuLjkwYzVjZjNlZWRmYmZjNTFlMTM3ZTMyMzE5NzE5YzA4MjE3ZDZkZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApA
QCAtNzEsMTMgKzcxLDEzIEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYykKIH0KIAogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVy
blVuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoY2FsbGVySXNTdHJpY3QoZXhlYykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXR0aW5nIGEgcHJvcGVydHkgdGhh
dCBoYXMgb25seSBhIGdldHRlciJfcykpOworICAgIGlmIChjYWxsZXJJc1N0cmljdChjYWxsRnJh
bWUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciJf
cykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggZTgyYThmYjRiZjQzOTk2NTE0MGQ1NWRiYjc0MzlhMDE5OWUzZTk4Yi4uOTA2ODI5
MzhhZjQ4ODA1ODFhZTcwNDc4Yzg3YTVkNzY2MTFmYTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZl
SW50ZWdlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0
b3JGdW5jSXNTYWZlSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApAQCAtNTIsOCArNTIsOCBAQCBjb25zdCBDbGFzc0luZm8gTnVtYmVy
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNf
aQogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51
bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBj
YWxsTnVtYmVyQ29uc3RydWN0b3IsIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKQpAQCAtODYs
MTMgKzg2LDEzIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB9CiAKIC8vIEVDTUEgMTUuNy4x
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgZG91YmxlIG4gPSBleGVjLT5hcmd1bWVudENvdW50KCkg
PyBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihleGVjKSA6IDA7CisgICAgZG91
YmxlIG4gPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA/IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSA6IDA7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5u
ZXdUYXJnZXQoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5udW1iZXJPYmplY3RTdHJ1
Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCks
IGdsb2JhbE9iamVjdC0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgTnVtYmVyT2JqZWN0KiBv
YmplY3QgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKQEAgLTEwMSwyMSAr
MTAxLDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51
bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogLy8gRUNNQSAxNS43LjIKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKCFleGVjLT5hcmd1bWVudENv
dW50KCkgPyAwIDogZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKCFjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA/IDAgOiBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvTnVtYmVyKGNh
bGxGcmFtZSkpKTsKIH0KIAogLy8gRUNNQS0yNjIgMjAuMS4yLjMKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0ludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1
Y3Rvcjo6aXNJbnRlZ2VySW1wbChleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCiAvLyBFQ01BLTI2MiAyMC4xLjIuNQotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNT
YWZlSW50ZWdlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGJvb2wgaXNJbnRlZ2VyOwogICAgIGlmIChhcmd1bWVudC5pc0ludDMyKCkpCiAg
ICAgICAgIGlzSW50ZWdlciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCAwM2E1ZTFiMDAzNzhiYjJiZWNjMjY0YmQ4
OTNhYzc3ZTdmOWRlOWUyLi4yOGUyZjU0MTMyZWM4Y2RiNjRlOTNmYzI3NWZiYzhiOTBhNDM3Njk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCB0eXBlZGVmIFdURjo6ZG91YmxlX2NvbnZlcnNpb246
OlN0cmluZ0J1aWxkZXIgRG91YmxlQ29udmVyc2lvblN0cmluZ0J1aWxkZXI7CiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJv
dG9GdW5jVG9GaXhlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogfQogCkBAIC0zODYsMTggKzM4NiwxOCBAQCBTdHJpbmcgdG9TdHJpbmdXaXRoUmFk
aXgoZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQogLy8gVGhpcyBtZXRob2QgdGFr
ZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyBhIG51bWJlciBvZiAqZGVjaW1hbCBw
bGFjZXMqCiAvLyB0byByb3VuZCB0aGUgc2lnbmlmaWNhbmQgdG8gKG9yLCBwdXQgYW5vdGhlciB3
YXksIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgcm91bmRzCiAvLyB0byBhcmd1bWVudC1wbHVzLW9u
ZSBzaWduaWZpY2FudCBmaWd1cmVzKS4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgaWYg
KCF0b1RoaXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4KSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IC8vIFBlcmZvcm0gVG9JbnRlZ2VyIG9uIHRoZSBhcmd1bWVudCBiZWZvcmUgcmVtYWluaW5nIHN0
ZXBzLgotICAgIGludCBkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRl
Z2VyKGV4ZWMpKTsKKyAgICBpbnQgZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PGludD4oYXJn
LnRvSW50ZWdlcihjYWxsRnJhbWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgLy8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCkBAIC00MDUsNyArNDA1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50
aWFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyKHgpKSk7CiAKICAgICBpZiAoZGVjaW1h
bFBsYWNlcyA8IDAgfHwgZGVjaW1hbFBsYWNlcyA+IDEwMCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJl
dHdlZW4gMCBhbmQgMTAwIl9zKTsKIAogICAgIC8vIFJvdW5kIGlmIHRoZSBhcmd1bWVudCBpcyBu
b3QgdW5kZWZpbmVkLCBhbHdheXMgZm9ybWF0IGFzIGV4cG9uZW50aWFsLgogICAgIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTQyMywxOSArNDIzLDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4
ZWMpCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgbnVtYmVy
IG9mIGRlY2ltYWwgcGxhY2VzIHRvIHJvdW5kIHRoZQogLy8gc2lnbmlmaWNhbmQgdG8uIEhvd2V2
ZXIgd2hlbiBjb252ZXJ0aW5nIGxhcmdlIHZhbHVlcyAoMWUrMjEgYW5kIGFib3ZlKSB0aGlzCiAv
LyBtZXRob2Qgd2lsbCBpbnN0ZWFkIGZhbGxiYWNrIHRvIGNhbGxpbmcgVG9TdHJpbmcuIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9G
aXhlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBk
b3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgZXhlYy0+dGhpc1ZhbHVlKCksIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgaW50IGRl
Y2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50ZWdl
cihleGVjKSk7CisgICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwIHx8IGRlY2lt
YWxQbGFjZXMgPiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBz
Y29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b0Zp
eGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJfcyk7CiAKICAgICAvLyAx
NS43LjQuNS43IHN0YXRlcyAiSWYgeCA+PSAxMF4yMSwgdGhlbiBsZXQgbSA9IFRvU3RyaW5nKHgp
IgogICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgSW5pbml0eSwgYW5kIHN0cnVjdHVyZSB0aGUgY2hl
Y2sgc28gdGhhdCBOYU4KQEAgLTQ1NywyMiArNDU3LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAvLyBkZWNp
bWFsLCB3aGlsc3QgMTAwMCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGV4cG9uZW50aWFsIHJlcHJlc2Vu
dGF0aW9uIDEuMDBlKzMuCiAvLyBGb3IgbmVnYXRpdmUgZXhwb25lbnRzIHZhbHVlcyA+PSAxZS02
IGFyZSBmb3JtYXRlZCBhcyBkZWNpbWFsIGZyYWN0aW9ucywKIC8vIHdpdGggc21hbGxlciB2YWx1
ZXMgY29udmVydGVkIHRvIGV4cG9uZW50aWFsIHJlcHJlc2VudGF0aW9uLgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lz
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRv
dWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlzVmFsdWUoKSwgeCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICAvLyBUbyBwcmVjaXNpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnQg
aXMgdHJlYXRlZCBhcyBUb1N0cmluZy4KICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyKHgp
KSk7CiAKICAgICAvLyBQZXJmb3JtIFRvSW50ZWdlciBvbiB0aGUgYXJndW1lbnQgYmVmb3JlIHJl
bWFpbmluZyBzdGVwcy4KLSAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzID0gc3RhdGljX2Nhc3Q8
aW50PihhcmcudG9JbnRlZ2VyKGV4ZWMpKTsKKyAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzID0g
c3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0
eS4KQEAgLTQ4MCw3ICs0ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyKHgpKSk7
CiAKICAgICBpZiAoc2lnbmlmaWNhbnRGaWd1cmVzIDwgMSB8fCBzaWduaWZpY2FudEZpZ3VyZXMg
PiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgInRv
UHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwMCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAidG9QcmVjaXNp
b24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdGaXhl
ZFByZWNpc2lvbih4LCBzaWduaWZpY2FudEZpZ3VyZXMsIEtlZXBUcmFpbGluZ1plcm9zKSkpOwog
fQpAQCAtNTUzLDUwICs1NTMsNDkgQEAgSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiB2bSwg
ZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQogICAgIHJldHVybiBudW1iZXJUb1N0
cmluZ0ludGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUg
ZG91YmxlVmFsdWU7Ci0gICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIHN0YXRlLT50aGlzVmFsdWUo
KSwgZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9y
KHN0YXRlLCBzY29wZSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJl
cih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCi0gICAgYXV0byByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4QXJn
dW1lbnQoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc2NvcGUpOworICAgIGF1dG8gcmFkaXgg
PSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJUb1N0cmluZ0lu
dGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRv
dWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlzVmFsdWUoKSwgeCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICNpZiBFTkFCTEUo
SU5UTCkKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRTdHJ1Y3R1
cmUoKSk7Ci0gICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIG51bWJlckZvcm1hdC0+
aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqZXhlYywgeCkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZv
cm1hdE51bWJlcigqY2FsbEZyYW1lLCB4KSkpOwogI2Vsc2UKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogI2VuZGlmCiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1Zh
bHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
ZG91YmxlIHg7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
b1RoaXNOdW1iZXIodm0sIHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9U
aGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuaAppbmRleCAyOWU1NWM1ZWIzNGRhMjVkNmJhZmE1ZTkxOWIwMjNkM2ExMzQ4NTNmLi43OTdh
M2NiMDg4ZGRhYTRlNmExMmNkMDhkNzljZWY4NDUyM2ZlZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtNTAsNyArNTAsNyBAQCBj
bGFzcyBOdW1iZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgTnVtYmVyT2JqZWN0IHsKICAgICBO
dW1iZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogSlNTdHJpbmcqIGludDMyVG9TdHJpbmcoVk0mLCBpbnQzMl90IHZh
bHVlLCBpbnQzMl90IHJhZGl4KTsKIEpTU3RyaW5nKiBpbnQ1MlRvU3RyaW5nKFZNJiwgaW50NjRf
dCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogbnVtYmVyVG9TdHJpbmcoVk0mLCBk
b3VibGUgdmFsdWUsIGludDMyX3QgcmFkaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDg4NGQ5ZmZmNDJkZDU2N2Vk
ZTdiYjNiNjQ3OTE1ODM5MGIzYWE2YmIuLjk0ZWNhYjM3Zjk2NDZkMTVkYTVlYjBmYjhjMjU5MWY5
NmM1MjQ1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTQwLDIxICs0MCwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JWYWx1ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JTZWFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c0Zyb3plbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckRlZmluZVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fQogCkBAIC05Myw4ICs5Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAqLwogCiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIE9i
amVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsT2JqZWN0
Q29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcikKQEAgLTExNSwxMSAr
MTE1LDEwIEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiB9CiAKIC8vIEVTIDE5LjEuMS4xIE9i
amVjdChbdmFsdWVdKQotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvciA9IGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBvYmplY3RDb25zdHJ1Y3Rvci0+
Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIG5ld1RhcmdldCBjb25kaXRpb24gaW4gdGhp
cyBjYWxsZXIgc2lkZSBpbnN0ZWFkIG9mIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlIHNpZGUuCkBAIC0xNDMsNDMgKzE0Miw0MyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdU
YXJnZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJnLnRvT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0KGV4ZWMsIGV4ZWMtPm5l
d1RhcmdldCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3RX
aXRoTmV3VGFyZ2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpl
Y3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgSlNWYWx1ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGUodm0s
IGV4ZWMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JT
ZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSBvYmplY3RWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVj
dFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5kZWZpbmVkIG9yIG51
bGwiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5kZWZpbmVkIG9yIG51bGwiX3MpOwogCi0gICAg
SlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBwcm90
b1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvVmFsdWUuaXNP
YmplY3QoKSAmJiAhcHJvdG9WYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2Jq
ZWN0IG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxs
Il9zKTsKIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOwotICAgIGJvb2wgZGlkU2V0UHJv
dG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvVmFsdWUsIHNob3Vs
ZFRocm93SWZDYW50U2V0KTsKKyAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0
UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUsIHByb3RvVmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0
KTsKICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChkaWRTZXRQcm90b3R5cGUsIHNjb3BlLmV4
Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShvYmplY3RWYWx1ZSk7CiB9CkBAIC0yMzIsNjQgKzIzMSw2NCBAQCBKU1ZhbHVlIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBvYgogICAgIHJldHVybiBkZXNjcmlwdG9yczsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIG9iamVjdCwgcHJvcGVydHlOYW1lKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9i
amVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JzKGV4ZWMsIG9iamVjdCkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcnMoY2FsbEZyYW1lLCBvYmplY3QpKSk7CiB9CiAKIC8vIEZJWE1FOiBVc2Ug
dGhlIGVudW1lcmF0aW9uIGNhY2hlLgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQog
CiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5U3ltYm9scyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2Jq
ZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3lt
Ym9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1l
LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxs
RnJhbWUsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6RXhjbHVkZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJPYmplY3QuYXNzaWduIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7
Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiT2JqZWN0LmFz
c2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmlu
ZWQiX3MpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBG
SVhNRTogRXh0ZW5kIHRoaXMgZm9yIG5vbiBKU0ZpbmFsT2JqZWN0LiBGb3IgZXhhbXBsZSwgd2Ug
d291bGQgbGlrZSB0byB1c2UgdGhpcyBmYXN0IHBhdGggZm9yIGZ1bmN0aW9uIG9iamVjdHMgdG9v
LgpAQCAtMjk4LDE3ICsyOTcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBWZWN0b3I8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgOD4gcHJvcGVydGllczsKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciB2YWx1ZXM7Ci0gICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBhcmdzQ291bnQ7ICsraSkgewotICAgICAg
ICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSk7CisgICAg
ICAgIEpTVmFsdWUgc291cmNlVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
OwogICAgICAgICBpZiAoc291cmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBKU09iamVjdCogc291cmNlID0gc291cmNlVmFsdWUudG9P
YmplY3QoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0KiBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b09i
amVjdChjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgICAgIGlmICh0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCkgewogICAgICAgICAgICAg
aWYgKCFzb3VyY2UtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKHZtKSkgewotICAgICAgICAgICAg
ICAgIHNvdXJjZS0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGV4ZWMpOworICAgICAgICAgICAg
ICAgIHNvdXJjZS0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGNhbGxGcmFtZSk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0K
IApAQCAtMzc0LDEyICszNzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHRhcmdldENhblBl
cmZvcm1GYXN0UHV0ID0gZmFsc2U7CiAKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVy
dGllcyh2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIFByaXZhdGVTeW1i
b2xNb2RlOjpFeGNsdWRlKTsKLSAgICAgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5TmFtZXMoc291cmNlLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgICAgICBzb3VyY2UtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UsIGNhbGxGcmFtZSwgcHJvcGVy
dGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBhdXRv
IGFzc2lnbiA9IFsmXSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3Qoc291cmNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpOwotICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHNvdXJj
ZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291cmNlLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHNvdXJjZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291cmNlLCBjYWxsRnJhbWUsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zODgsMTMgKzM4NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIXNsb3QuaXNUYWludGVk
QnlPcGFxdWVPYmplY3QoKSkpCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZh
bHVlKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IHNvdXJjZS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
ICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICB0YXJnZXQtPnB1dElubGluZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQ
cm9wZXJ0eVNsb3QpOworICAgICAgICAgICAgdGFyZ2V0LT5wdXRJbmxpbmUoY2FsbEZyYW1lLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgICAgICB9OwogCiAgICAg
ICAgIC8vIEZpcnN0IGxvb3AgaXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1i
b2xzIHRvIGtlZXAgc3RhbmRhcmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgpA
QCAtNDI2LDI4ICs0MjUsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0YXJnZXQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMg
dGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKLSAgICBK
U09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmplY3QudmFsdWVzIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTQXJyYXkqIHZh
bHVlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7CisgICAgSlNBcnJheSog
dmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0aWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9sTW9k
ZTo6RXhjbHVkZSk7Ci0gICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXModGFyZ2V0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgY2FsbEZyYW1lLCBwcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAg
YXV0byBhZGRWYWx1ZSA9IFsmXSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0YXJnZXQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSB0YXJnZXQt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRhcmdldC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBjYWxsRnJhbWUsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAgICAgICAgIGlmICghaGFzUHJvcGVydHkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTYs
MTIgKzQ1NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAg
ICAgICBpZiAoTElLRUxZKCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQotICAgICAg
ICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
ICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IHRhcmdldC0+Z2V0KGV4ZWMsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICB2YWx1ZSA9IHRhcmdldC0+Z2V0KGNhbGxGcmFtZSwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAot
ICAgICAgICB2YWx1ZXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIHZhbHVlKTsKKyAg
ICAgICAgdmFsdWVzLT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGluZGV4KyssIHZhbHVlKTsK
ICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtUHJvcGVydGllcyA9IHByb3Bl
cnRpZXMuc2l6ZSgpOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CkBAIC01NzQsMjQgKzU3Mywy
NCBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBp
biwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogICAgIHJldHVybiB0cnVlOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBv
bmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOwotICAgIEpTT2JqZWN0KiBvYmogPSBhc09i
amVjdChleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5h
cmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMu
Il9zKTsKKyAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJv
cGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBh
dXRvIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgy
KSwgZGVzY3JpcHRvcik7CisgICAgYXV0byBzdWNjZXNzID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKICAgICBpZiAoIXN1
Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIEFT
U0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNz
b3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7CiAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBvYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkob2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAg
IG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmosIGNhbGxGcmFtZSwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmopKTsKIH0KIApAQCAtNjQxLDM4ICs2NDAsMzggQEAg
c3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmplY3QsIEpTT2JqZWN0KiBwcm8KICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4g
b25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIl9zKTsKLSAgICBKU09iamVjdCogdGFyZ2V0T2Jq
ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIEpTT2JqZWN0KiBwcm9wcyA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMu
Il9zKTsKKyAgICBKU09iamVjdCogdGFyZ2V0T2JqID0gYXNPYmplY3QoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CisgICAgSlNPYmplY3QqIHByb3BzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50
b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRp
b24oKSA9PSAhcHJvcHMpOwogICAgIGlmIChVTkxJS0VMWSghcHJvcHMpKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIHRhcmdldE9iaiwgcHJvcHMpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVy
dGllcyhjYWxsRnJhbWUsIHRhcmdldE9iaiwgcHJvcHMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHBy
b3RvID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJPYmplY3Qg
cHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmplY3QgcHJvdG90eXBl
IG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiJfcyk7CiAgICAgSlNPYmplY3QqIG5ld09i
amVjdCA9IHByb3RvLmlzT2JqZWN0KCkKLSAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBhc09iamVjdChwcm90bykpCi0gICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0
dXJlKCkpOwotICAgIGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwgYXNPYmplY3QocHJvdG8pKQorICAg
ICAgICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2Jq
ZWN0KTsKLSAgICBKU09iamVjdCogcHJvcGVydGllcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBwcm9wZXJ0aWVzID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgxKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgcHJvcGVy
dGllcykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShk
ZWZpbmVQcm9wZXJ0aWVzKGNhbGxGcmFtZSwgbmV3T2JqZWN0LCBwcm9wZXJ0aWVzKSkpOwogfQog
CiBlbnVtIGNsYXNzIEludGVncml0eUxldmVsIHsKQEAgLTc5MCwxNyArNzg5LDE3IEBAIEpTT2Jq
ZWN0KiBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
ZWN0KQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCwgcmV0dXJuIE8uCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JT
ZWFsKGV4ZWMsIGFzT2JqZWN0KG9iaikpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JTZWFsKGNhbGxGcmFtZSwgYXNPYmpl
Y3Qob2JqKSkpKTsKIH0KIAogSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKQEAgLTgyMiwzNiArODIxLDM2IEBAIEpTT2Jq
ZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmplY3QpCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5v
dCBPYmplY3QsIHJldHVybiBPLgotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2Jq
LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKLSAgICBK
U09iamVjdCogcmVzdWx0ID0gb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgYXNPYmplY3Qo
b2JqKSk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IG9iamVjdENvbnN0cnVjdG9yRnJlZXplKGNh
bGxGcmFtZSwgYXNPYmplY3Qob2JqKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJldmVu
dEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChhcmd1bWVudCk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRF
eHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnBy
ZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG9iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICAvLyAxLiBJZiBUeXBl
KE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiB0cnVlLgotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKHRydWUpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsK
QEAgLTg2MSwxNSArODYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNTZWFsZWQodm0pKSk7CiAKICAgICAvLyAy
LiBSZXR1cm4gPyBUZXN0SW50ZWdyaXR5TGV2ZWwoTywgInNlYWxlZCIpLgotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZl
bDo6U2VhbGVkPihleGVjLCB2bSwgb2JqZWN0KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZlbDo6U2VhbGVkPihj
YWxsRnJhbWUsIHZtLCBvYmplY3QpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICAvLyAx
LiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiB0cnVlLgotICAgIEpTVmFsdWUgb2Jq
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3Qob2JqKTsKQEAgLTg3OSwyNSArODc4LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNGcm96ZW4odm0pKSk7CiAK
ICAgICAvLyAyLiBSZXR1cm4gPyBUZXN0SW50ZWdyaXR5TGV2ZWwoTywgImZyb3plbiIpLgotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRl
Z3JpdHlMZXZlbDo6RnJvemVuPihleGVjLCB2bSwgb2JqZWN0KSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZlbDo6
RnJvemVuPihjYWxsRnJhbWUsIHZtLCBvYmplY3QpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5z
aWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3Qob2JqKTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRl
bnNpYmxlKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2li
bGUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0V4dGVuc2li
bGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogSlNBcnJheSogb3duUHJvcGVy
dHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9k
ZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVy
dGllc01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAppbmRleCAzZTA2NzI0Y2VhYzM4YTE5ZTgyMjc2YjRmMzcwZjA4NWJhNTFhN2Jk
Li42ZWYyNDM4M2EzYWQ0ZmRhN2YxOTBkYTA3MjNiMWUyM2IyY2UyZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTI2LDEx
ICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggMDAwODY2ZmRlOWQxYzI5MWExZjJl
YjBjN2NhMzFkYzVjNGZlNWY0OC4uZTVhOWRhZmRlMmQ3MDc3NTcwODdmNTRhNjA3YTk0OTQ1MzA5
YzI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCkBAIC0zMywxNSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVH
ZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBTZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5l
U2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVy
dHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShPYmplY3RQcm90b3R5cGUpOwogCkBAIC03OCwyNCArNzgsMjQgQEAgT2Jq
ZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7Ci0gICAg
SlNPYmplY3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBT
dHJpY3RNb2RlKTsKKyAgICBKU09iamVjdCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3Qo
Y2FsbEZyYW1lKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZU9iaik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3du
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUp
OworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3Bl
cnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmpl
Y3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3Qo
Y2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTAzLDM0ICsxMDMsMzQgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pOwogICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUgPSB2bS5l
bnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7CiAgICAgaWYgKE9wdGlvbmFsPGJvb2w+IHJlc3Vs
dCA9IGhhc093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoZXhl
YywgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRoaXNPYmplY3Qt
Pmhhc093blByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKCpyZXN1bHQpKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwot
ICAgIGJvb2wgcmVzdWx0ID0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICBib29sIHJlc3VsdCA9IHRoaXNPYmplY3QtPmhhc093blByb3Bl
cnR5KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGhhc093blByb3BlcnR5Q2FjaGUt
PnRyeUFkZCh2bSwgc2xvdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCByZXN1bHQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0
KGV4ZWMpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRo
aXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiAKLSAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBA
IC0xMzgsMjUgKzEzOCwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICAgICAgaWYgKHYgPT0gdGhp
c09iaikKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUp
KTsKLSAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAg
ICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgZ2V0LCBjYWxsRGF0YSkg
PT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3MpOwog
Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
QEAgLTE2NiwyNSArMTY2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGJvb2wgc2hvdWxk
VGhyb3cgPSB0cnVlOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNW
YWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHNldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxE
YXRhKHZtLCBzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJpbnZhbGlkIHNldHRlciB1c2FnZSJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJpbnZh
bGlkIHNldHRlciB1c2FnZSJfcyk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFByb3BlcnR5
RGVzY3JpcHRvciBkZXNjcmlwdG9yOwpAQCAtMTk0LDI0ICsxOTQsMjQgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7CiAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cisg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9w
ZXJ0eSk7Ci0gICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdldFByb3BlcnR5U2xv
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJvb2wgaGFzUHJvcGVydHkgPSB0aGlz
T2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNQcm9wZXJ0eSk7
CiAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkg
ewpAQCAtMjIxLDcgKzIyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKHNsb3Qu
YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSB7CiAgICAg
ICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICAgICAgICAgIEFTU0VS
VChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKS0+Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCisg
ICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Y2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSA/IEpTVmFsdWU6OmVuY29kZShkZXNjcmlw
dG9yLmdldHRlcigpKSA6IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTIyOSwxOSArMjI5LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAg
ICBib29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdl
dFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5KTsKICAgICBpZiAo
aGFzUHJvcGVydHkpIHsKICAgICAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKSB7CkBAIC0yNTEs
NyArMjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc2xvdC5hdHRyaWJ1dGVz
KCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xv
dEJhc2UoKSk7Ci0gICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAg
IGlmIChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2Ny
aXB0b3Iuc2V0dGVyUHJlc2VudCgpID8gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3Iuc2V0dGVy
KCkpIDogSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjU5LDY0ICsyNTksNjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51
bWVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhl
Yyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1l
LCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
IFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGJvb2wgZW51bWVyYWJsZSA9IHRo
aXNPYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOworICAgIGJvb2wgZW51bWVyYWJs
ZSA9IHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZW51bWVyYWJsZSkpOwogfQogCiAvLyAxNS4y
LjQuMyBPYmplY3QucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nKCkKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAv
LyAxLiBMZXQgViBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKIAogICAgIC8vIDIuIEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0
IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFs
dWUgYXMgdGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9U
aGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzVmFsdWUudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0b1N0cmluZyIsIFYp
CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0KTsKLSAgICBib29sIGhhc1Byb3BlcnR5ID0gb2JqZWN0LT5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHNsb3QpOworICAgIGJv
b2wgaGFzUHJvcGVydHkgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwotICAgIEpTVmFsdWUgdG9TdHJpbmcgPSBo
YXNQcm9wZXJ0eSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJp
bmcpIDoganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHRvU3RyaW5nID0gaGFzUHJvcGVydHkg
PyBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpIDog
anNVbmRlZmluZWQoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIC8vIElmIElzQ2FsbGFibGUodG9TdHJpbmcpIGlzIGZhbHNlLCB0aHJv
dyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9TdHJpbmcsIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgdG9TdHJpbmcgcGFzc2luZyB0aGUgdGhp
cyB2YWx1ZSBhbmQgbm8gYXJndW1lbnRzLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdG9TdHJpbmcsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0b1N0cmluZywgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxpc3QpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxG
cmFtZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgp
ID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDogdm0uc21hbGxTdHJp
bmdzLm51bGxPYmplY3RTdHJpbmcoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlz
VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFs
dWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTMyNiwyNiArMzI2LDI2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiAKICAgICBQcm9wZXJ0eU5hbWUgdG9TdHJpbmdUYWdTeW1ib2wgPSB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbDsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgdG9TdHJpbmdUYWdT
eW1ib2wsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1Nsb3QpIC0+
IEpTVmFsdWUgeworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHRvU3RyaW5nVGFnU3ltYm9s
LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgdG9TdHJpbmdUYWdTbG90KSAtPiBKU1Zh
bHVlIHsKICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHN0cmluZ1Rh
ZyA9IHRvU3RyaW5nVGFnU2xvdC5nZXRWYWx1ZShleGVjLCB0b1N0cmluZ1RhZ1N5bWJvbCk7Cisg
ICAgICAgICAgICBKU1ZhbHVlIHN0cmluZ1RhZyA9IHRvU3RyaW5nVGFnU2xvdC5nZXRWYWx1ZShj
YWxsRnJhbWUsIHRvU3RyaW5nVGFnU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoc3RyaW5nVGFnLmlzU3RyaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICBKU1N0cmluZyogcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgdm0u
c21hbGxTdHJpbmdzLm9iamVjdFN0cmluZ1N0YXJ0KCksIGFzU3RyaW5nKHN0cmluZ1RhZyksIHZt
LnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoJ10nKSk7CisgICAgICAgICAgICAg
ICAgSlNTdHJpbmcqIHJlc3VsdCA9IGpzU3RyaW5nKGNhbGxGcmFtZSwgdm0uc21hbGxTdHJpbmdz
Lm9iamVjdFN0cmluZ1N0YXJ0KCksIGFzU3RyaW5nKHN0cmluZ1RhZyksIHZtLnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoJ10nKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3Ry
aW5nVGFnU2xvdCk7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+
c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShjYWxsRnJhbWUsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFn
U2xvdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIFN0cmluZyB0YWcgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPnRvU3RyaW5nTmFtZSh0aGlzT2JqZWN0LCBleGVjKTsKKyAgICAgICAgU3RyaW5nIHRhZyA9
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9TdHJpbmdOYW1lKHRoaXNPYmplY3QsIGNh
bGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgIFN0cmluZyBuZXdTdHJpbmcgPSB0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIFdURk1vdmUo
dGFnKSwgIl0iKTsKICAgICAgICAgaWYgKCFuZXdTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICAgICAgYXV0byBy
ZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG5ld1N0cmluZyk7Ci0gICAgICAgIHRoaXNP
YmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoZXhlYywgdm0sIHJl
c3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZt
KS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShjYWxsRnJhbWUsIHZtLCByZXN1bHQsIHRvU3RyaW5n
VGFnU2xvdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKaW5kZXggZjI3ODg2
YmIyNjY2NjUwNzM3NjA2MWNiZDA2MjJmZjIyYWU0YjIzMC4uYjlhYTY0OWY2MGMwNTI5YTA2MDU1
NmU2ZTIxZDNjY2MzNzczNDNiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmgKQEAgLTQ1LDYgKzQ1LDYgQEAgY2xhc3MgT2JqZWN0UHJvdG90
eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIE9iamVjdFByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKK0pT
X0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDI3NzM5NTVhZDk5NWI2ZmRjOTQ4MTIzNjhlOTQwOTNmZmVlNDY5OTEu
LjQ1ODZjMTMwZDNhNjlhOGE1NzhlMWQwMDIzODJlNjUxMzhlZGRjYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCkBAIC00OCwz
MCArNDgsMzAgQEAgUHJveHlDb25zdHJ1Y3RvciogUHJveHlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9i
amVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxQcm94eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogUHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsUHJv
eHksIGNvbnN0cnVjdFByb3h5T2JqZWN0KQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50
czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiX3MpOworICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdv
IGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiX3MpOwogCi0gICAgQXJnTGlz
dCBhcmdzKGV4ZWMpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUg
dGFyZ2V0ID0gYXJncy5hdCgwKTsKICAgICBKU1ZhbHVlIGhhbmRsZXIgPSBhcmdzLmF0KDEpOwot
ICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IFByb3h5T2JqZWN0OjpjcmVhdGUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0YXJnZXQsIGhhbmRsZXIpOworICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IFByb3h5T2JqZWN0OjpjcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRh
cmdldCwgaGFuZGxlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUHJveHlSZXZva2UqIHJldm9rZSA9IFByb3h5UmV2b2tlOjpjcmVhdGUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJveHlSZXZva2VTdHJ1Y3R1cmUoKSwg
cHJveHkpOworICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBQcm94eVJldm9rZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnByb3h5UmV2b2tlU3RydWN0dXJlKCksIHByb3h5KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgbWFrZUlkZW50aWZpZXIodm0sICJwcm94eSIpLCBwcm94eSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2tlIiksIHJldm9rZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CkBAIC03OSwxMCArNzksMTAgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JU
aHJvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIGNhbm5vdCBiZSBjb25zdHJ1Y3Rl
ZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIl9zKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVj
dGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiX3MpOwogfQogCiB2b2lkIFByb3h5Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKQEAgLTkyLDIyICs5MiwyMiBAQCB2b2lkIFByb3h5Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmpl
Y3QqCiAgICAgcHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9jYWJsZSIpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgInJldm9jYWJsZSJfcywgbWFr
ZVJldm9jYWJsZVByb3h5LCBOb0ludHJpbnNpYywgcHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRo
cm93RXJyb3IpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgaWYgKGV4ZWMtPm5ld1RhcmdldCgpLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAibmV3LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQi
X3MpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIm5ldy50YXJn
ZXQgb2YgUHJveHkgY29uc3RydWN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKIAotICAg
IEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKICAgICBK
U1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyID0gYXJncy5h
dCgxKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShQcm94
eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGFyZ2V0
LCBoYW5kbGVyKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKFByb3h5T2JqZWN0OjpjcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldCwg
aGFuZGxlcikpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFByb3h5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm94eSIpKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHkiKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCmluZGV4IGUzNWQ0OTVhYmMxNmIxMGMzNzY1YjE5N2RkMDJkMWMzZGIyZjI2NDAuLjhi
ZTgxODI3OTkzYjIxMTRkMWYxNWIwNzM3OTdjNzE1YmM3OTQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTUxMSw0MiArNTExLDQyIEBA
IGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5k
ZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJv
eHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgTk9fVEFJTF9DQUxMUygpOwogCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9Ci0gICAgUHJv
eHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+anNDYWxsZWUoKSk7
CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVy
KCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSk7CiAKICAgICBKU09iamVjdCogaGFuZGxl
ciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVy
KHZtLCAiYXBwbHkiKSwgIidhcHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hv
dWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+
Z2V0TWV0aG9kKGNhbGxGcmFtZSwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2
bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3Vs
ZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAg
ICBpZiAoYXBwbHlNZXRob2QuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0Q2FsbERhdGEodGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0YXJnZXQsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgZXhlYy0+dGhpc1ZhbHVlKCksIEFyZ0xpc3QoZXhlYykpKSk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0YXJn
ZXQsIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgQXJnTGlzdChj
YWxsRnJhbWUpKSkpOwogICAgIH0KIAotICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0
QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCBBcmdMaXN0KGV4ZWMpKTsKKyAgICBKU0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5
KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCBBcmdMaXN0KGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAg
ICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT50
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgRUNNQU1vZGU6OlN0cmljdE1vZGUpKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgRUNN
QU1vZGU6OlN0cmljdE1vZGUpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgYXBwbHlNZXRob2QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBhcHBseU1ldGhvZCwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CiB9CiAKIENhbGxUeXBl
IFByb3h5T2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0
YSkKQEAgLTU2Miw0NSArNTYyLDQ1IEBAIENhbGxUeXBlIFByb3h5T2JqZWN0OjpnZXRDYWxsRGF0
YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Q
cm94eUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgTk9fVEFJTF9DQUxMUygpOwogCi0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJ
S0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICB9Ci0gICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+
anNDYWxsZWUoKSk7CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHBy
b3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSk7CiAKICAgICBKU09i
amVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBjb25z
dHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBl
LCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkg
b2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVl
IGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChjYWxsRnJhbWUsIGNhbGxEYXRh
LCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwgIidjb25zdHJ1Y3Qn
IHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNP
YmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoY29uc3RydWN0TWV0aG9k
LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwog
ICAgICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Qo
ZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGV4ZWMp
LCBleGVjLT5uZXdUYXJnZXQoKSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0LCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGNhbGxGcmFtZSksIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCkpKSk7CiAgICAgfQogCi0gICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJh
eShleGVjLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFy
Z0xpc3QoZXhlYykpOworICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXkoY2Fs
bEZyYW1lLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFy
Z0xpc3QoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFy
Z3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPm5ld1RhcmdldCgpKTsKKyAgICBhcmd1bWVudHMu
YXBwZW5kKGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGNvbnN0cnVj
dE1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVzdWx0IGZyb20g
UHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJl
c3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJlIGFu
IG9iamVjdCJfcyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAKaW5kZXggZjg3
NWY2NWQ0NTEzOTQ5NzA2NGQ5MzZhOTc0YTc5ZGY2MDhlZWE0ZS4uNzA2NjJjMGU4ZDhjMTY2N2Mw
ZTViMDZlM2ZhM2JlYzRmZDk3YTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5UmV2b2tlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBQcm94eVJldm9rZSogUHJveHlS
ZXZva2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm94eU9iamVjdCog
cHJveAogICAgIHJldHVybiByZXZva2U7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBQcm94eVJldm9rZTo6UHJveHlSZXZva2UoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgcGVyZm9ybVByb3h5UmV2
b2tlLCBudWxscHRyKQpAQCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgUHJveHlSZXZva2U6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgUHJveHlPYmplY3QqIHByb3h5KQog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
UmV2b2tlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHBlcmZvcm1Qcm94eVJldm9rZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBQcm94eVJldm9rZSogcHJveHlSZXZva2UgPSBqc0Nh
c3Q8UHJveHlSZXZva2UqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBQcm94eVJldm9rZSogcHJv
eHlSZXZva2UgPSBqc0Nhc3Q8UHJveHlSZXZva2UqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwog
ICAgIEpTVmFsdWUgcHJveHlWYWx1ZSA9IHByb3h5UmV2b2tlLT5wcm94eSgpOwogICAgIGlmIChw
cm94eVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4ocHJveHlWYWx1ZSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgcHJveHktPnJldm9rZSh2bSk7CiAgICAgcHJveHlSZXZv
a2UtPnNldFByb3h5VG9OdWxsKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2Jq
ZWN0LmNwcAppbmRleCA4NTYwOWIzYzBmZTg5YTY0ZGJjMzhiMTM1MjFhMDBhYWY4YTI5OGYwLi44
NDZkMjkzOTMyYjRmM2ZlODJkNzA3MWUxNGJhMGRjYjhmYjI3NTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtMzQsMTYgKzM0LDE2
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdl
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZWN0U2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdERlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2li
bGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
UHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9CiAKQEAgLTg3LDU5ICs4Nyw1OSBAQCB2b2lkIFJlZmxlY3RPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVjdAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
UmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3Ry
dWN0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKIAogICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGU7CiAgICAgaWYgKCF0
YXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25z
dHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmly
c3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOwogCiAgICAgSlNWYWx1ZSBuZXdUYXJn
ZXQgPSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7Ci0gICAg
ICAgIG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAzKSB7CisgICAgICAgIG5ld1RhcmdldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMik7CiAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0pKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNv
bnN0cnVjdG9yIGlmIHByZXNlbnQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0
IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQi
X3MpKTsKICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAg
SlNPYmplY3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
ZXhlYy0+YXJndW1lbnQoMSkpOworICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIGlm
ICghYXJndW1lbnRzT2JqZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNl
Y29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1
Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAg
IGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGV4ZWMsIGFyZ3VtZW50c09iamVjdCwgUnVudGltZVR5
cGVNYXNrQWxsVHlwZXMsICJUaGlzIGVycm9yIG11c3Qgbm90IGJlIHJhaXNlZCJfcywgIlRoaXMg
ZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCBbJl0gKEpTVmFsdWUgdmFsdWUsIFJ1bnRpbWVU
eXBlKSAtPiBib29sIHsKKyAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShjYWxsRnJhbWUsIGFy
Z3VtZW50c09iamVjdCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMsICJUaGlzIGVycm9yIG11c3Qg
bm90IGJlIHJhaXNlZCJfcywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCBbJl0g
KEpTVmFsdWUgdmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sIHsKICAgICAgICAgYXJndW1lbnRz
LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAoYXJndW1lbnRzLm92ZXJmbG93Q2hlY2tOb3ROZWVkZWQo
KSwgZW5jb2RlZEpTVmFsdWUoKSkpOwogICAgIGlmIChVTkxJS0VMWShhcmd1bWVudHMuaGFzT3Zl
cmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXQsIGNvbnN0
cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0KSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChjYWxsRnJh
bWUsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJndW1lbnRzLCBuZXdU
YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJl
ZmxlY3QuZGVmaW5lcHJvcGVydHkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamVjdERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmRlZmluZVByb3BlcnR5
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCJfcykpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcjsKLSAgICBib29sIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBleGVjLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CisgICAgYm9vbCBzdWNjZXNzID0gdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBkZXNj
cmlwdG9yKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNj
ZXNzKTsKICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKQEAgLTE0OSwxNDEgKzE0OSwxNDEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAg
IC8vIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciB3aGVu
IHRoZSBkZWZpbmVPd25Qcm9wZXJ0eSBvcGVyYXRpb24gZmFpbHMuCiAgICAgYm9vbCBzaG91bGRU
aHJvdyA9IGZhbHNlOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFy
Z2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRhcmdl
dE9iamVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVj
dC5nZXQKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RH
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJl
ZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOwogCi0gICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBleGVjLT5h
cmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGNvbnN0IElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0OwotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPj0gMykKLSAgICAgICAgcmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVudCgyKTsKKyAgICBp
ZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykKKyAgICAgICAgcmVjZWl2ZXIgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldC5nZXQoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRhcmdldC5nZXQoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSk7CiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0b3ducHJvcGVy
dHlkZXNjcmlwdG9yCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFy
Z2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAgIGF1dG8g
a2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIGtl
eSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgYXNPYmplY3QodGFyZ2V0KSwga2V5KSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgYXNPYmplY3QodGFyZ2V0
KSwga2V5KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmdldHByb3RvdHlwZW9mCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5nZXRQcm90b3R5cGVP
ZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodGFyZ2V0KS0+
Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9m
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0YXJnZXQpLT5n
ZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2libGUKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qu
aXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09iamVj
dCh0YXJnZXQpLT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBh
c09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihpc0V4dGVuc2libGUpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlzCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpz
Q2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1i
b2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0
Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5
S2V5cyhjYWxsRnJhbWUsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnBy
ZXZlbnRleHRlbnNpb25zCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCJfcykpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwotICAgIGJvb2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRF
eHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCiAvLyBodHRwczovL3RjMzku
Z2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAgICAgSlNPYmplY3QqIHRh
cmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IEpTVmFsdWUgcmVjZWl2ZXIgPSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+PSA0KQotICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDMpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSA0KQorICAgICAgICByZWNlaXZlciA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMyk7CiAKICAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVy
cm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNob3VsZFRocm93SWZD
YW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3Vs
ZFRocm93SWZDYW50U2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJn
ZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldE9iamVjdCwgY2FsbEZy
YW1lLCBwcm9wZXJ0eU5hbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIHNsb3QpKSkpOwogfQog
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3Rv
dHlwZW9mCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90
b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IGV4
ZWMtPmFyZ3VtZW50KDEpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVz
IHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBKU1ZhbHVlIHByb3Rv
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkgJiYg
IXByb3RvLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUg
c2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfcykpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUg
ZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIl9zKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxz
ZTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBl
eGVjLCBwcm90bywgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAgIGJvb2wgZGlkU2V0UHJvdG90
eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSwgcHJvdG8sIHNob3VsZFRo
cm93SWZDYW50U2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkaWRTZXRQcm90
b3R5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAppbmRleCBlM2JjODkzZmIzYzJjYTBmZDA5OTBlZmUyMDEyZDUyMDM4
MjI5OWM5Li44M2RjMTU3MzFhOTQ1MWJjMzZhYjcxNmNhY2JiMmIzOTEyZGUxMjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
CkBAIC03OCw4ICs3OCw4IEBAIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAqLwogCiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0
aFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFJlZ0V4
cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsUmVnRXhwQ29u
c3RydWN0b3IsIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcikKQEAgLTEwMCw1MCArMTAw
LDQzIEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUmVn
RXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsCiB0ZW1wbGF0ZTxpbnQgTj4KIEVuY29kZWRK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0
cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0
b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0
QmFja3JlZihleGVjLCBnbG9iYWxPYmplY3QsIE4pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgcmVn
RXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1
dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3Qt
PnJlZ0V4cEdsb2JhbERhdGEoKS5pbnB1dCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5tdWx0aWxpbmUoKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxS
ZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qo
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFs
RGF0YSgpLmdldEJhY2tyZWYoZXhlYywgZ2xvYmFsT2JqZWN0LCAwKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENv
bnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0p
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3Ry
dWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
Z2V0TGFzdFBhcmVuKGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBy
ZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVj
dG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3Iq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGVm
dENvbnRleHQoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9y
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0UmlnaHRD
b250ZXh0KGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCkBAIC0xNTUsNyArMTQ4LDcgQEAgYm9v
bCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGUKICAgICAgICAgYXV0byogc3RyaW5nID0gSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlKS50b1N0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLnNldElucHV0
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTcwLDcgKzE2Myw3IEBAIGJvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuCiAgICAgICAgIGJv
b2wgbXVsdGlsaW5lID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b0Jvb2xlYW4oZXhlYyk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBnbG9iYWxPYmplY3Qt
PnJlZ0V4cEdsb2JhbERhdGEoKS5zZXRNdWx0aWxpbmUobXVsdGlsaW5lKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMjc3LDI0ICsyNzAsMjMgQEAgSlNPYmplY3QqIGNvbnN0cnVj
dFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEEKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ0V4cENyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QsIG5ld1RhcmdldCwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKLSAgICBKU1ZhbHVlIHBhdHRlcm5BcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1Zh
bHVlIGZsYWdzQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZWdFeHBDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgpLCBwYXR0
ZXJuQXJnLCBmbGFnc0FyZykpOworICAgIEpTVmFsdWUgcGF0dGVybkFyZyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmbGFnc0FyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBDcmVhdGUoY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHBhdHRlcm5BcmcsIGZsYWdzQXJnKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhSZWdFeHBD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGV4ZWMsIGpz
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChl
eGVjLT52bSgpKSwgYXJncywgZXhlYy0+anNDYWxsZWUoKSwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsK
KyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdFJlZ0V4cChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmVnRXhwQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0UmVnRXhwKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgZXhlYy0+anNDYWxs
ZWUoKSkpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAppbmRleCAy
ZWIyYzY5MzQ4NThjMTZmZmYyMjM5NTJjNThmNzI5N2Y1MjdlNjU2Li45NzZlN2I2YWY4M2MxNTMw
YzUyMDM0MjdhODM5ZDUzZTBhY2QxYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTc1LDYgKzc1LDYgQEAgQUxXQVlTX0lO
TElORSBib29sIGlzUmVnRXhwKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogICAgIHJldHVybiBvYmplY3QtPmluaGVyaXRzPFJlZ0V4cE9iamVjdD4odm0pOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjUmVnRXhwQ3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggOGQw
ZTVhOWYwZDU3MDU5YTJmNGJmMTY1MzM3ZWJhMGNlYjNmMTFjOS4uNGI4YWYwNWJlNzQ1MDYzZjcw
MzdkNTc0MzhlN2VmMzY1MmQ1YWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC00MiwxNyArNDIsMTcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvRnVuY0V4ZWMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckds
b2JhbChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJE
b3RBbGwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNl
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJGbGFncyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0Nv
bXBpbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlckdsb2JhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9H
ZXR0ZXJEb3RBbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9i
amVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoUmVnRXhwUHJvdG90eXBlKSB9OwogCkBAIC04Niw4MyArODYsODMgQEAgdm9pZCBSZWdFeHBQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChjYWxsRnJhbWUpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhc3RyaW5nKTsKICAgICBpZiAo
IXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
cmVnZXhwLT50ZXN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ocmVnZXhwLT50ZXN0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNF
eGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFy
ZWdleHApKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkJ1
aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIp
OwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVs
bChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
U3RyaW5nT3JOdWxsKGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICFzdHJpbmcpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+ZXhlYyhleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHN0cmluZykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShyZWdleHAtPmV4ZWMoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHN0cmlu
ZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNN
YXRjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgUmVnRXhwT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PFJlZ0V4cE9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAgICBKU1N0cmluZyogc3Ry
aW5nID0ganNDYXN0PEpTU3RyaW5nKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5n
Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0
LT5yZWdFeHAoKS0+Z2xvYmFsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c09iamVjdC0+ZXhlYyhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bWF0Y2hHbG9iYWwoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5leGVjKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBzdHJpbmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPm1hdGNo
R2xvYmFsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzUmVnRXhwID0ganNEeW5hbWlj
Q2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNSZWdFeHApKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAg
ICAgUmVnRXhwKiByZWdFeHA7Ci0gICAgSlNWYWx1ZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgSlNWYWx1ZSBhcmcxID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhcmcw
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZzEgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwogICAgIAogICAgIGlmIChhdXRvKiByZWdFeHBPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCBhcmcwKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZy
b20gYW5vdGhlci4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25l
IFJlZ0V4cCBmcm9tIGFub3RoZXIuIl9zKTsKICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0
LT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGFyZzAu
aXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5n
KCkgOiBhcmcwLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgIGF1dG8gZmxhZ3MgPSBh
cmcxLmlzVW5kZWZpbmVkKCkgPyBtYWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiB7
IH0pIDogWWFycjo6cGFyc2VGbGFncyhhcmcxLnRvV1RGU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAg
YXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IG1ha2VPcHRpb25hbChPcHRpb25TZXQ8
WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9XVEZTdHJpbmcoY2Fs
bEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mg
c3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcykpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihjYWxsRnJh
bWUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3MpKTsK
IAogICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MudmFs
dWUoKSk7CiAgICAgfQogCiAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coZXhlYykp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIHJlZ0V4cC0+
ZXJyb3JUb1Rocm93KGNhbGxGcmFtZSkpOwogCiAgICAgdGhpc1JlZ0V4cC0+c2V0UmVnRXhwKHZt
LCByZWdFeHApOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlzUmVnRXhwLT5zZXRMYXN0
SW5kZXgoZXhlYywgMCk7CisgICAgdGhpc1JlZ0V4cC0+c2V0TGFzdEluZGV4KGNhbGxGcmFtZSwg
MCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzUmVnRXhwKTsKIH0KIApAQCAtMjA3
LDE0MSArMjA3LDE0MSBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5nIGZsYWdzU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHJlZ2V4cCkKICAgICByZXR1cm4gc3RyaW5nOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAotICAgIFN0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqZWN0KTsKKyAgICBTdHJp
bmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJu
VmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFy
bHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0
dXJuVmFsdWUpOwogCi0gICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOworICAgIEpTVmFsdWUgc291cmNlVmFsdWUg
PSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0
cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcg
c291cmNlID0gc291cmNlVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgZmxh
Z3NWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5mbGFncyk7
CisgICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwgdm0u
cHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBmbGFncyA9IGZsYWdzVmFsdWUudG9XVEZTdHJp
bmcoZXhlYyk7CisgICAgU3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50b1dURlN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAnLycsIHNvdXJjZSwgJy8nLCBmbGFncykpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGNhbGxGcmFtZSwgJy8nLCBzb3VyY2UsICcvJywgZmxhZ3MpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckds
b2JhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFt
aWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
cmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFByb3RvdHlw
ZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUgUmVn
RXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4
cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5nbG9iYWwoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVySWdub3JlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdl
eHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJl
Z0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2Ug
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0K
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCkt
Pmlnbm9yZUNhc2UoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvR2V0dGVyTXVsdGlsaW5lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5l
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAu
cHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ocmVnZXhwLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0
PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhw
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0p
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnBy
b3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+ZG90QWxsKCkpKTsKIH0KICAgICAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlclN0aWNreShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBq
c0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFBy
b3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJU
aGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+c3RpY2t5KCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVu
aWNvZGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
cmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAo
KS0+dW5pY29kZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3Mg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3MpOwogCi0g
ICAgYXV0byBmbGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwor
ICAgIGF1dG8gZmxhZ3MgPSBmbGFnc1N0cmluZyhjYWxsRnJhbWUsIGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgZmxhZ3MuZGF0YSgpKSk7
CkBAIC00NTQsMzcgKzQ1NCwzNiBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgcmVnRXhwUHJvdG9H
ZXR0ZXJTb3VyY2VJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cgogICAgIHJldHVy
biBqc1N0cmluZyh2bSwgcmVzdWx0LnRvU3RyaW5nKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdF
eHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsK
ICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sICIoPzopIl9zKSk7
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAg
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBhdHRlcm4g
PSByZWdleHAtPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CiAgICAgaWYgKHBhdHRlcm4uaXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJ
bnRlcm5hbChleGVjLCBwYXR0ZXJuLCBwYXR0ZXJuLmNoYXJhY3RlcnM4KCksIHBhdHRlcm4ubGVu
Z3RoKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cFByb3RvR2V0dGVyU291
cmNlSW50ZXJuYWwoZXhlYywgcGF0dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJzMTYoKSwgcGF0dGVy
bi5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cFByb3Rv
R2V0dGVyU291cmNlSW50ZXJuYWwoY2FsbEZyYW1lLCBwYXR0ZXJuLCBwYXR0ZXJuLmNoYXJhY3Rl
cnM4KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
Z0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoY2FsbEZyYW1lLCBwYXR0ZXJuLCBwYXR0ZXJu
LmNoYXJhY3RlcnMxNigpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIFJlZ0V4cCogcmVnRXhwID0ganNDYXN0PFJlZ0V4
cE9iamVjdCo+KHRoaXNWYWx1ZSktPnJlZ0V4cCgpOwogCi0gICAgSlNTdHJpbmcqIHN0cmluZyA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIFN0cmluZyBz
ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOworICAgIFN0cmluZyBz
ID0gc3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBNYXRjaFJlc3VsdCByZXN1bHQg
PSBnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5wZXJmb3JtTWF0Y2godm0sIGdsb2Jh
bE9iamVjdCwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0ID8ganNOdW1iZXIocmVzdWx0LnN0YXJ0KSA6IGpzTnVtYmVyKC0xKSk7CkBAIC01NzgsMTkg
KzU3NywxOSBAQCB2b2lkIGdlbmVyaWNTcGxpdCgKIH0KIAogLy8gRVMgMjEuMi41LjExIFJlZ0V4
cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIFtoYW5kbGVk
IGJ5IEpTIGJ1aWx0aW5dIExldCByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBbaGFu
ZGxlZCBieSBKUyBidWlsdGluXSBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgUmVnRXhwKiByZWdleHAgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhpc1ZhbHVlKS0+cmVn
RXhwKCk7CiAKICAgICAvLyAzLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgUyBiZSA/IFRv
U3RyaW5nKHN0cmluZykuCi0gICAgSlNTdHJpbmcqIGlucHV0U3RyaW5nID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIGlucHV0ID0gaW5wdXRTdHJpbmctPnZh
bHVlKGV4ZWMpOworICAgIEpTU3RyaW5nKiBpbnB1dFN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9TdHJpbmcoY2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgaW5wdXQgPSBpbnB1dFN0cmlu
Zy0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoIWlucHV0LmlzTnVsbCgpKTsKIApAQCAtNjA0LDEz
ICs2MDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNT
cGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMTEuIExldCBBIGJlIEFycmF5Q3Jl
YXRlKDApLgogICAgIC8vIDEyLiBMZXQgbGVuZ3RoQSBiZSAwLgotICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9
IDA7CiAKICAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDJeMzIt
MTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgotICAgIEpTVmFsdWUgbGltaXRW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1
ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4ZWMp
OworICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAg
dW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6
IGxpbWl0VmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDE0LiBMZXQgc2l6ZSBiZSB0aGUg
bnVtYmVyIG9mIGVsZW1lbnRzIGluIFMuCkBAIC02MzAsNyArNjI5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUyku
CiAgICAgICAgIC8vIGQuIFJldHVybiBBLgogICAgICAgICBpZiAoIXJlZ2V4cC0+bWF0Y2godm0s
IGlucHV0LCAwKSkgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAw
LCBpbnB1dFN0cmluZyk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxG
cmFtZSwgMCwgaW5wdXRTdHJpbmcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjUyLDcgKzY1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIHJldHVybiBDb250aW51ZVNwbGl0OwogICAgICAgICB9LAogICAgICAgICBbJl0g
KGJvb2wgaXNEZWZpbmVkLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKSAtPiBTcGxp
dENvbnRyb2wgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1
bHRMZW5ndGgrKywgaXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0
cmluZywgc3RhcnQsIGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgrKywgaXNEZWZpbmVkID8g
anNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgc3RhcnQsIGxlbmd0aCkgOiBq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEFi
b3J0U3BsaXQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+PSBsaW1pdCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gQWJvcnRTcGxpdDsKQEAgLTY2Niw3ICs2NjUsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0
aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBw
IChpbmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KICAgICAgICAgLy8gMjEuIFBl
cmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCiAg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChl
eGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcs
IHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQo
dm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRpb24pKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIDIyLiBSZXR1cm4gQS4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtNjkxLDcgKzY5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
fSk7CiAgICAgCiAgICAgaWYgKHJlc3VsdExlbmd0aCArIGRyeVJ1bkNvdW50ID4gTUFYX1NUT1JB
R0VfVkVDVE9SX0xFTkdUSCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KICAgICAKQEAgLTcwNSw3
ICs3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTcGxp
dDsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChib29sIGlzRGVmaW5lZCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCkgLT4gU3BsaXRDb250cm9sIHsKLSAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vi
c3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRl
ZmluZWQoKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwg
cmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5w
dXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBBYm9ydFNwbGl0KTsKICAgICAgICAgICAgIGlmIChy
ZXN1bHRMZW5ndGggPj0gbGltaXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFib3J0U3BsaXQ7
CkBAIC03MTksNyArNzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDIwLiBMZXQgVCBiZSBh
IFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0
aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVz
aXZlKS4KICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3Ry
aW5nKGxlbmd0aEEpLCBUKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwg
aW5wdXRTdHJpbmcsIHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZS
ZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikp
OwogICAgIC8vIDIyLiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5oCmluZGV4IDViNjU5ODY2YzAwZTg5YThmMTdhMDE1Y2JjNTE0NWMyNTk5Y2FmMGQuLjQ2MGUy
YTQ1YWRkNzEzOTI0ODlmMDFkMmJkMDdlMmY4ZWQxNmM1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCkBAIC01MSw5ICs1MSw5IEBAIGNs
YXNzIFJlZ0V4cFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTZWFyY2hG
YXN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2Vh
cmNoRmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVz
dEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNjAyYmVkOWU1YTU3ZTE4ZmJlODJiZTVkNzg1ZjkzYWQ0ZjQwMjgwOS4uYjBkYjE1NmY0
ODhkNjQyZTZmZTcwZDhhNTgyM2E3MTFhMWRhZTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtNDcsNzQgKzQ3LDczIEBAIHZv
aWQgU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2V0UHJvdG90eXBlKiBz
ZXRQcm90b3R5cGUsIEdldHRlclNlCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVz
U3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFNldENvbnN0cnVjdG9yOjpT
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsU2V0LCBjb25zdHJ1Y3RTZXQpCiB7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiU2V0IikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiU2V0Iikp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIFN0cnVjdHVyZSog
c2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwor
ICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkgCi0gICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0OjpjcmVhdGUoZXhlYywgdm0sIHNl
dFN0cnVjdHVyZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzZXRTdHJ1Y3R1cmUpKSk7CiAK
ICAgICBpZiAoYXV0byogaXRlcmFibGVTZXQgPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4odm0sIGl0
ZXJhYmxlKSkgewogICAgICAgICBpZiAoaXRlcmFibGVTZXQtPmNhbkNsb25lRmFzdEFuZE5vbk9i
c2VydmFibGUoc2V0U3RydWN0dXJlKSkgCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUoZXhlYywgdm0sIHNldFN0
cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGl0ZXJhYmxlU2V0LT5jbG9uZShjYWxsRnJhbWUsIHZtLCBzZXRTdHJ1Y3R1cmUp
KSk7CiAgICAgfQogCi0gICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUoZXhlYywgdm0sIHNl
dFN0cnVjdHVyZSk7CisgICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUoY2FsbEZyYW1lLCB2
bSwgc2V0U3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHNldC0+SlNPYmplY3Q6
OmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5j
dGlvbiA9IHNldC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmFk
ZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJG
dW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKKyAgICBmb3JFYWNoSW5JdGVyYWJsZShjYWxs
RnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBu
ZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKG5leHRWYWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIGNhbGwoZXhlYywgYWRkZXJGdW5jdGlvbiwg
YWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHNldCwgYXJndW1l
bnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBzZXQsIGFyZ3VtZW50cyk7CiAgICAg
fSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNr
ZXRIZWFkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oZXhlYy0+dm0oKSwgZXhlYy0+
YXJndW1lbnQoMCkpKTsKLSAgICBKU1NldCogc2V0ID0ganNDYXN0PEpTU2V0Kj4oZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5
bmFtaWNDYXN0PEpTU2V0Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSk7CisgICAgSlNTZXQqIHNldCA9IGpzQ2FzdDxKU1NldCo+KGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIGF1dG8qIGhlYWQgPSBzZXQtPmhlYWQoKTsKICAgICBBU1NF
UlQoaGVhZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShoZWFkKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1Nl
dEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihl
eGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2Fz
dDxKU1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBB
U1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0o
KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxK
U1NldDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IEFTU0VSVChidWNrZXQpOwogICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgIHdoaWxl
IChidWNrZXQpIHsKQEAgLTEyMiwxMyArMTIxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0KTsKICAgICAgICAgYnVja2V0ID0g
YnVja2V0LT5uZXh0KCk7CiAgICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
dm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGds
b2JhbE9iamVjdC0+dm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0
S2V5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0o
KSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6
OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUX1VO
VVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihnbG9i
YWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBhdXRvKiBidWNr
ZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGJ1Y2tldC0+a2V5KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmgKaW5kZXggM2Y2ZThiOTI3YmM5MjU3ZDU0ZmJhZDFkMTJjMTNiNzU2ZTlj
YzM3Yy4uNzFhYjY5NTBmZjU3OTQ3ZmU5NmMxMzI5YTE1YWIxODZhNWU1MGIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCkBAIC01NSw4ICs1
NSw4IEBAIGNsYXNzIFNldENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTZXRQcm90b3R5cGUqLCBHZXR0ZXJT
ZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXko
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5j
U2V0QnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0
ZUZ1bmNTZXRCdWNrZXRLZXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcAppbmRleCA0NmY0YmNkMzM5YzFkNzZkNzE0Zjc4ODJkZDQ0NTQ5Njg1MDIxNGYxLi5j
NjZkOTVmNjU5MTFkMWM4MjYwNzQzNTVlZjFiODk4M2FmNzlhMzNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTQ3LDEzICs0NywxMyBA
QCBjb25zdCBDbGFzc0luZm8gU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJTZXQiLCAmQmFzZTo6
c19pbmZvLCAmc2V0UHJvdG90eXBlVGFibAogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNEZWxldGUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNIYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzZXRQcm90b0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC03Niw5ICs3Niw5IEBAIHZvaWQgU2V0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnNpemUsIHNldFByb3RvRnVuY1NpemUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEpT
U2V0KiBnZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQorQUxX
QVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgVk0m
IHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNWYWx1ZS5pc0NlbGwoKSkpIHsKQEAgLTkyLDQ0ICs5Miw0NCBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHRoaXNWYWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxs
RnJhbWUsIHRoaXNWYWx1ZSk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBzZXQtPmFkZChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1Zh
bHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVh
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHNldC0+Y2xlYXIo
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihzZXQtPnJlbW92ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5j
SGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHNldC0+aGFzKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1
bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzZXRQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHNldC0+c2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjJjNDIy
YzE0YzYxMmM2ZDNiMDc0Mjc1MjlkYTQwMGU5MzRiMzY2Mi4uMzMxZDRiMDA3MjM0NWE0ODZhOWFk
OTRjNzE0OTRiZmRlYTk1MWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNoYXJDb2RlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNv
ZGVQb2ludChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTUzLDggKzUz
LDggQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShTdHJpbmdDb25zdHJ1Y3Rvcik7CiAKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU3RyaW5nQ29uc3RydWN0b3I6
OlN0cmluZ0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgY29u
c3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKQpAQCAtNzAsMTUgKzcwLDE1IEBAIHZvaWQgU3Ry
aW5nQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKExJS0VMWShsZW5ndGggPT0gMSkp
IHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICB1bnNpZ25lZCBjb2RlID0gZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CisgICAgICAgIHVuc2lnbmVk
IGNvZGUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGNhbGxGcmFt
ZSk7CiAgICAgICAgIC8vIE5vdCBjaGVja2luZyBmb3IgYW4gZXhjZXB0aW9uIGhlcmUgaXMgb2sg
YmVjYXVzZSBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyB3aWxsIGp1c3QgZmV0Y2ggYW4gdW51c2Vk
IHN0cmluZyBpZiB0aGVyZSdzIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgY29kZSkpOwogICAgIH0KQEAgLTg2
LDcgKzg2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBMQ2hhciogYnVmOEJpdDsKICAgICBhdXRv
IGltcGw4Qml0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZjhC
aXQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoaSkudG9VSW50MzIoZXhlYykpOworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBzdGF0
aWNfY2FzdDxVQ2hhcj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1VJbnQzMihj
YWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNMYXRpbjEoY2hhcmFjdGVyKSkpIHsK
ICAgICAgICAgICAgIFVDaGFyKiBidWYxNkJpdDsKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIGJ1ZjE2Qml0W2ldID0gY2hhcmFjdGVyOwogICAgICAgICAgICAg
KytpOwogICAgICAgICAgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgIGJ1ZjE2Qml0W2ldID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpLnRvVUludDMyKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBidWYxNkJpdFtpXSA9IHN0
YXRpY19jYXN0PFVDaGFyPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMy
KGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFdURk1vdmUoaW1w
bDE2Qml0KSkpKTsKQEAgLTExMCwyMyArMTEwLDIzIEBAIEpTU3RyaW5nKiBKU0NfSE9TVF9DQUxM
IHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJnKQogICAgIHJl
dHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLT52bSgpLCBhcmcpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGRvdWJsZSBj
b2RlUG9pbnRBc0RvdWJsZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4
ZWMpOworICAgICAgICBkb3VibGUgY29kZVBvaW50QXNEb3VibGUgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIHVpbnQzMl90IGNv
ZGVQb2ludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2RlUG9pbnRBc0RvdWJsZSk7CiAKICAg
ICAgICAgaWYgKGNvZGVQb2ludCAhPSBjb2RlUG9pbnRBc0RvdWJsZSB8fCBjb2RlUG9pbnQgPiBV
Q0hBUl9NQVhfVkFMVUUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcmd1bWVudHMgY29udGFpbiBhIHZhbHVlIHRo
YXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZy
YW1lLCAiQXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBj
b2RlIHBvaW50cyJfcykpOwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwpA
QCAtMTM5LDE4ICsxMzksMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGJ1aWxkZXIudG9TdHJpbmco
KSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0p
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rhcmdl
dCgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKKyAgICBpZiAo
IWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFN0cmluZ09iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpKTsKLSAgICBKU1N0cmluZyog
c3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgSlNT
dHJpbmcqIHN0ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN0cmluZ09iamVjdDo6Y3JlYXRlKHZtLCBz
dHJ1Y3R1cmUsIHN0cikpOwogfQpAQCAtMTYzLDEyICsxNjIsMTIgQEAgSlNTdHJpbmcqIHN0cmlu
Z0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcmd1bWVudCkKICAgICByZXR1
cm4gYXJndW1lbnQudG9TdHJpbmcoZXhlYyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5n
KHZtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdDb25zdHJ1Y3RvcihleGVj
LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc3RyaW5nQ29uc3RydWN0b3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNWZhOTUxYTBjMWYzYzE2
NTBkMjRjYWFhMTYwMDQ2NWE1ZmNhOGMxYy4uYzc1ZGZjMGI4MGZhYTUxNzAyNzVkNTNmNTE1NjI2
MWQxZGQ5YmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCkBAIC02MSwzMCArNjEsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTdHJpbmdQcm90b3R5cGUpOwog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmND
aGFyQXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVVzaW5nUmVnRXhwKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1N1YnN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xv
Y2FsZUxvd2VyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbUVu
ZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3RhcnRzV2l0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4
ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
b1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNv
ZGVBdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRl
eE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VVc2luZ1JlZ0V4cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2go
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N1YnN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9j
YWxlVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJp
bVN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRz
V2l0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRl
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04NDYsMzggKzg0NiwzOCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tPYmplY3RDb2VyY2libGUoSlNWYWx1ZSB0aGlzVmFs
dWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIEZvciBhIHN0
cmluZyB3aGljaCBsZW5ndGggaXMgc2luZ2xlLCBpbnN0ZWFkIG9mIGNyZWF0aW5nIHJvcGVzLAog
ICAgIC8vIGFsbG9jYXRpbmcgYSBzZXF1ZW50aWFsIGJ1ZmZlciBhbmQgZmlsbCB3aXRoIHRoZSBy
ZXBlYXRlZCBzdHJpbmcgZm9yIGVmZmljaWVuY3kuCi0gICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA9PSAyKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0g
Mik7CiAKLSAgICBBU1NFUlQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNTdHJpbmcoKSk7
Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1N0cmlu
ZygpKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkgPT0gMSk7CiAKLSAg
ICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsK
KyAgICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlcGVhdENvdW50VmFsdWUuaXNOdW1iZXIoKSk7
CiAgICAgaW50MzJfdCByZXBlYXRDb3VudDsKICAgICBkb3VibGUgdmFsdWUgPSByZXBlYXRDb3Vu
dFZhbHVlLmFzTnVtYmVyKCk7CiAgICAgaWYgKHZhbHVlID4gSlNTdHJpbmc6Ok1heExlbmd0aCkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVt
b3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAgIHJlcGVhdENvdW50ID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4odmFsdWUpOwogICAgIEFTU0VSVChyZXBlYXRDb3VudCA+PSAwKTsKICAgICBB
U1NFUlQoIXJlcGVhdENvdW50VmFsdWUuaXNEb3VibGUoKSB8fCByZXBlYXRDb3VudFZhbHVlLmFz
RG91YmxlKCkgPT0gcmVwZWF0Q291bnQpOwogCi0gICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHN0
cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhT
dHJpbmcgPSBzdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFN0cmluZ1ZpZXcgdmlldyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAgICAgQVNTRVJUKHZpZXcu
bGVuZ3RoKCkgPT0gMSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBVQ2hh
ciBjaGFyYWN0ZXIgPSB2aWV3WzBdOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBpZiAoaXNM
YXRpbjEoY2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRD
aGFyYWN0ZXIoKmV4ZWMsIHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCByZXBlYXRDb3Vu
dCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVjLCBj
aGFyYWN0ZXIsIHJlcGVhdENvdW50KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVwZWF0Q2hhcmFjdGVyKCpjYWxsRnJhbWUsIHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIp
LCByZXBlYXRDb3VudCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFj
dGVyKCpjYWxsRnJhbWUsIGNoYXJhY3RlciwgcmVwZWF0Q291bnQpKTsKIH0KIAogQUxXQVlTX0lO
TElORSBKU1N0cmluZyogcmVwbGFjZSgKQEAgLTkwMiwzMCArOTAyLDMwIEBAIEFMV0FZU19JTkxJ
TkUgSlNTdHJpbmcqIHJlcGxhY2UoCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXBs
YWNlKHZtLCBleGVjLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdS
ZWdFeHAoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHNlYXJjaFZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzZWFyY2hWYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKCFzZWFyY2hWYWx1ZS5pbmhlcml0czxSZWdFeHBPYmplY3Q+KHZt
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgZXhlYy0+YXJndW1lbnQo
MSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVw
bGFjZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBjYWxsRnJhbWUsIHN0cmluZywgc2VhcmNoVmFsdWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT50aGlzVmFsdWUoKS50b1N0cmlu
ZyhleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKHZtLCBleGVjLCBzdHJpbmcsIGV4ZWMtPmFy
Z3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2godm0sIGNhbGxG
cmFtZSwgc3RyaW5nLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZUdlbmVyaWMoCkBAIC05NDAsMTIgKzk0MCwxMiBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMoCiAgICAgICAgIEpT
VmFsdWU6OmRlY29kZShyZXBsYWNlVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIC8vIEFsc28gdXNlZCBmb3IgdmFsdWVPZi4KIAogICAgIGlmICh0
aGlzVmFsdWUuaXNTdHJpbmcoKSkKQEAgLTk1NSw1NCArOTU1LDU0IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQog
ICAgIGlmIChzdHJpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3Ry
aW5nT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0NoYXJBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIGF1dG8gdmll
d1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmlld1dpdGhTdHJpbmcu
dmlldzsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKICAgICAgICAg
dWludDMyX3QgaSA9IGEwLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChpIDwgdmlldy5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJT
dHJpbmcodm0sIHZpZXdbaV0pKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Vt
cHR5U3RyaW5nKHZtKSk7CiAgICAgfQotICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2VyKGV4
ZWMpOworICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGRwb3Mg
Pj0gMCAmJiBkcG9zIDwgdmlldy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgdmlld1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZHBvcyldKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKHZt
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hh
ckNvZGVBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBhdXRv
IHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZpZXdXaXRo
VW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZ1ZpZXcgdmlldyA9IHZpZXdXaXRoU3Ry
aW5nLnZpZXc7Ci0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQzMigpKSB7
CiAgICAgICAgIHVpbnQzMl90IGkgPSBhMC5hc1VJbnQzMigpOwogICAgICAgICBpZiAoaSA8IHZp
ZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHZpZXdbaV0pKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAg
ICB9Ci0gICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIGRw
b3MgPSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZHBvcyA+PSAwICYmIGRwb3MgPCB2aWV3
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXdb
c3RhdGljX2Nhc3Q8aW50PihkcG9zKV0pKTsKQEAgLTEwMTksMjAgKzEwMTksMjAgQEAgc3RhdGlj
IGlubGluZSBVQ2hhcjMyIGNvZGVQb2ludEF0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWcKICAgICByZXR1cm4gY2hhcmFjdGVyOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBv
aW50QXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAg
ICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCi0gICAgSlNWYWx1ZSBhcmd1bWVudDAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKGFyZ3VtZW50MC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVuc2ln
bmVkIHBvc2l0aW9uID0gYXJndW1lbnQwLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGxlbmd0aCkKQEAgLTEwNDIsMjggKzEwNDIsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGRv
dWJsZSBkb3VibGVQb3NpdGlvbiA9IGFyZ3VtZW50MC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91
YmxlIGRvdWJsZVBvc2l0aW9uID0gYXJndW1lbnQwLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChk
b3VibGVQb3NpdGlvbiA+PSAwICYmIGRvdWJsZVBvc2l0aW9uIDwgbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNvZGVQb2ludEF0KHN0cmluZywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZVBvc2l0aW9uKSwgbGVuZ3RoKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgSlNWYWx1ZSBh
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgx
KTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIEpTU3RyaW5nKiB0aGlzSlNTdHJp
bmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIHRoaXNKU1N0cmlu
ZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTU3RyaW5nKiBvdGhlckpTU3RyaW5n
ID0gYTAudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50
b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgcG9zID0gMDsKQEAgLTEwNzMsNyArMTA3Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChhMS5pc1VJbnQzMigpKQogICAgICAgICAgICAg
cG9zID0gc3RkOjptaW48dWludDMyX3Q+KGExLmFzVUludDMyKCksIGxlbik7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXIoZXhlYyk7CisgICAg
ICAgICAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
ICAgICBpZiAoZHBvcyA8IDApCiAgICAgICAgICAgICAgICAgZHBvcyA9IDA7CkBAIC0xMDg2LDkg
KzEwODYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh0aGlzSlNTdHJpbmctPmxlbmd0aCgpIDwg
b3RoZXJKU1N0cmluZy0+bGVuZ3RoKCkgKyBwb3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoLTEpKTsKIAotICAgIGF1dG8gdGhpc1ZpZXdXaXRoU3RyaW5nID0gdGhp
c0pTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB0aGlz
Vmlld1dpdGhTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGF1dG8gb3RoZXJWaWV3V2l0aFN0cmluZyA9IG90aGVySlNTdHJpbmctPnZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIG90aGVyVmlld1dpdGhTdHJpbmcg
PSBvdGhlckpTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzaXpl
X3QgcmVzdWx0ID0gdGhpc1ZpZXdXaXRoU3RyaW5nLnZpZXcuZmluZChvdGhlclZpZXdXaXRoU3Ry
aW5nLnZpZXcsIHBvcyk7CiAgICAgaWYgKHJlc3VsdCA9PSBub3RGb3VuZCkKQEAgLTEwOTYsMjUg
KzEwOTYsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJ
bmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBK
U1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGExID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIEpTU3RyaW5nKiB0aGlzSlNTdHJpbmcgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIHRoaXNKU1N0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxlbiA9IHRoaXNKU1N0cmluZy0+bGVu
Z3RoKCk7Ci0gICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKTsK
KyAgICBKU1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBk
b3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpOworICAgIGRvdWJsZSBk
cG9zID0gYTEudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uOwogICAgIGlmIChkcG9zIDwgMCkKQEAgLTExMjcsOSArMTEyNyw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmIChsZW4gPCBvdGhlckpTU3RyaW5nLT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogCi0gICAgU3RyaW5nIHRoaXNT
dHJpbmcgPSB0aGlzSlNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyB0aGlzU3RyaW5n
ID0gdGhpc0pTU3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBvdGhlclN0cmluZyA9IG90
aGVySlNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBvdGhlclN0cmluZyA9IG90aGVy
SlNTdHJpbmctPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2l6ZV90IHJlc3VsdDsKICAgICBpZiAoIXN0YXJ0
UG9zaXRpb24pCkBAIC0xMTQxLDI5ICsxMTQxLDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBK
U1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc3Ry
aW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
VmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaW50IGxlbmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoID49IDApOwogCiAgICAgLy8gVGhlIGFyZyBwcm9j
ZXNzaW5nIGlzIHZlcnkgbXVjaCBsaWtlIEFycmF5UHJvdG9GdW5jOjpTbGljZQotICAgIGRvdWJs
ZSBzdGFydCA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgc3RhcnQgPSBhMC50b0lu
dGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBkb3VibGUgZW5kID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbmd0aCA6
IGExLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZW5kID0gYTEuaXNVbmRlZmluZWQoKSA/
IGxlbmd0aCA6IGExLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKGV4ZWMsIHZtLCBzdHJpbmcsIGxlbmd0aCwg
c3RhcnQsIGVuZCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdHJpbmdTbGljZShjYWxsRnJhbWUsIHZtLCBzdHJpbmcsIGxlbmd0aCwgc3RhcnQsIGVu
ZCkpKTsKIH0KIAogLy8gUmV0dXJuIHRydWUgaW4gY2FzZSBvZiBlYXJseSByZXR1cm4gKHJlc3Vs
dExlbmd0aCBnb3QgdG8gbGltaXRMZW5ndGgpLgpAQCAtMTIwMiwzMCArMTIwMiwzMCBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsKEV4ZWNT
dGF0ZSogZXhlYywgSlNBcnJheQogfQogCiAvLyBFUyAyMS4xLjMuMTcgU3RyaW5nLnByb3RvdHlw
ZS5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKTsKIAogICAg
IC8vIDMuIExldCBTIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb1N0cmluZywgZ2l2aW5nIGl0
IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KICAgICAvLyA3LiBMZXQgcyBiZSB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KLSAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CiAKICAgICAvLyA0LiBMZXQg
QSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJh
eSgpCiAgICAgLy8gICAgd2hlcmUgQXJyYXkgaXMgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIGNvbnN0
cnVjdG9yIHdpdGggdGhhdCBuYW1lLgotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlB
cnJheShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNS4gTGV0IGxlbmd0aEEgYmUgMC4KICAgICB1bnNpZ25l
ZCByZXN1bHRMZW5ndGggPSAwOwogCiAgICAgLy8gNi4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBs
ZXQgbGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1pdCkuCi0gICAgSlNW
YWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgdW5zaWdu
ZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6IGxpbWl0
VmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0VmFsdWUu
aXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJbnQzMihjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgLy8gOC4gTGV0IHAgPSAwLgpAQCAtMTIzMyw4ICsxMjMzLDggQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgLy8gOS4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVjdCAoaXRzIFtbQ2xh
c3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOwogICAgIC8vICAgIG90aGVyd2lz
ZSBsZXQgUiA9IFRvU3RyaW5nKHNlcGFyYXRvcikuCi0gICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1
ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIFN0cmluZyBzZXBhcmF0b3IgPSBz
ZXBhcmF0b3JWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIHNlcGFyYXRvclZh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTdHJpbmcgc2VwYXJh
dG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDEwLiBJZiBs
aW0gPT0gMCwgcmV0dXJuIEEuCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgLy8gYS4gQ2Fs
bCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJn
dW1lbnRzICIwIiwKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwg
aW5wdXQpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIDAsIGpz
U3RyaW5nV2l0aFJldXNlKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1dCkpOwogICAgICAgICAv
LyBiLiBSZXR1cm4gQS4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIH0KQEAgLTEyNTgsNyArMTI1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgLy8gZC4g
UmV0dXJuIEEuCiAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChl
eGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7CisgICAg
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgMCwganNTdHJpbmdXaXRo
UmV1c2UoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0KSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTEyNzAsNyArMTI3MCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgQVNTRVJUKGxpbWl0KTsKIAogICAgICAgICBkbyB7
Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHBvc2l0aW9uLCBqc1Np
bmdsZUNoYXJhY3RlclN0cmluZyh2bSwgaW5wdXRbcG9zaXRpb25dKSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcG9zaXRpb24sIGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKHZtLCBpbnB1dFtwb3NpdGlvbl0pKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9IHdoaWxlICgrK3Bv
c2l0aW9uIDwgbGltaXQpOwogCkBAIC0xMjkzLDEwICsxMjkzLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgIHNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvckltcGwtPmNoYXJhY3Rl
cnMxNigpWzBdOwogCiAgICAgICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQoKSkgewotICAgICAg
ICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPExDaGFyPihleGVjLCByZXN1
bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9z
aXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKKyAgICAgICAgICAgIGlmIChzcGxpdFN0cmlu
Z0J5T25lQ2hhcmFjdGVySW1wbDxMQ2hhcj4oY2FsbEZyYW1lLCByZXN1bHQsIHRoaXNWYWx1ZSwg
aW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExl
bmd0aCwgbGltaXQpKSAKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmIChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxVQ2hhcj4oZXhlYywgcmVzdWx0LCB0
aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9u
LCByZXN1bHRMZW5ndGgsIGxpbWl0KSkgCisgICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9u
ZUNoYXJhY3RlckltcGw8VUNoYXI+KGNhbGxGcmFtZSwgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0
LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgs
IGxpbWl0KSkgCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KSk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xMzExLDkgKzEzMTEsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVh
bCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBw
b3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgICAgICAgICAgLy8gICAgdGhyb3VnaCBxIChleGNs
dXNpdmUpLgogICAgICAgICAgICAgLy8gMi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9T
dHJpbmcobGVuZ3RoQSksIFQpLgotICAgICAgICAgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJz
dHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBw
b3NpdGlvbik7CisgICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyhjYWxs
RnJhbWUsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRp
b24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBzdWJzdHJp
bmcpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIHJlc3Vs
dExlbmd0aCwgc3Vic3RyaW5nKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgogICAg
ICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgpAQCAtMTMyOSwyMyAr
MTMyOSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMTUuIExldCBUIGJlIGEgU3RyaW5nIHZh
bHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0
ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgLy8gICAgIHRocm91Z2ggcyAoZXhj
bHVzaXZlKS4KICAgICAvLyAxNi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmco
bGVuZ3RoQSksIFQpLgotICAgIGF1dG8qIHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGV4ZWMsIHRo
aXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKTsKKyAg
ICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgaW5w
dXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXN1bHQt
PnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBzdWJzdHJpbmcpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgrKywgc3Vic3RyaW5n
KTsKIAogICAgIC8vIDE3LiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzdHJpbmdQcm90
b0Z1bmNTdWJzdHJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tP
YmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKICAgICB1bnNpZ25lZCBsZW47CiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0g
MDsKICAgICBTdHJpbmcgdVN0cmluZzsKQEAgLTEzNTMsMTcgKzEzNTMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBqc1N0cmluZyA9IGFzU3RyaW5nKHRoaXNWYWx1ZSk7CiAgICAgICAgIGxlbiA9
IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICB1U3RyaW5nID0gdGhp
c1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICB1U3RyaW5nID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBsZW4gPSB1U3RyaW5nLmxlbmd0aCgpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIGEx
ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAgICBk
b3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIHN0YXJ0ID0gYTAu
dG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIGxlbmd0aCA9IGExLmlzVW5kZWZpbmVkKCkgPyBs
ZW4gOiBhMS50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIGxlbmd0aCA9IGExLmlzVW5kZWZp
bmVkKCkgPyBsZW4gOiBhMS50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoc3RhcnQgPj0gbGVuIHx8
IGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJp
bmcodm0pKTsKQEAgLTEzNzgsMTEgKzEzNzgsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogICAgIHVuc2lnbmVk
IHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBpZiAoanNTdHJpbmcpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywganNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJz
dHJpbmdMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmlu
ZyhjYWxsRnJhbWUsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyh2bSwgdVN0cmluZywgc3Vi
c3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVy
bmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIC8vIEBzdWJzdHJJbnRlcm5hbCBzaG91bGQgbm90IGhhdmUgYW55IG9ic2VydmFibGUg
c2lkZSBlZmZlY3RzIChlLmcuIGl0IHNob3VsZCBub3QgY2FsbAogICAgIC8vIEdldE1ldGhvZCgu
Li4sIEBAdG9QcmltaXRpdmUpIG9uIHRoZSB0aGlzVmFsdWUpLgpAQCAtMTM5MiwyOCArMTM5Nywy
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRl
cm5hbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gZ3VhcmFudGVlIHRoYXQgd2Ugb25seSBwYXNz
IGl0IGEgc3RyaW5nIHRoaXNWYWx1ZS4gQXMgYSByZXN1bHQsIHN0cmluZ1Byb3RvRnVuY1N1YnN0
cgogICAgIC8vIHdpbGwgbm90IG5lZWQgdG8gY2FsbCB0b1N0cmluZygpIG9uIHRoZSB0aGlzVmFs
dWUsIGFuZCB0aGVyZSB3aWxsIGJlIG5vIG9ic2VydmFibGUKICAgICAvLyBzaWRlLWVmZmVjdHMu
Ci0gICAgQVNTRVJUKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzU3RyaW5nKCkpOwotICAgIHJldHVybiBz
dHJpbmdQcm90b0Z1bmNTdWJzdHIoZXhlYyk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkuaXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0ckltcGwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBKU1N0cmluZyog
anNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIGpzU3Ry
aW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
VmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGludCBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobGVuID49IDApOwogCi0gICAgZG91YmxlIHN0YXJ0ID0gYTAudG9O
dW1iZXIoZXhlYyk7CisgICAgZG91YmxlIHN0YXJ0ID0gYTAudG9OdW1iZXIoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBk
b3VibGUgZW5kOwogICAgIGlmICghKHN0YXJ0ID49IDApKSAvLyBjaGVjayBmb3IgbmVnYXRpdmUg
dmFsdWVzIG9yIE5hTgpAQCAtMTQyMyw3ICsxNDI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
IChhMS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBlbmQgPSBsZW47CiAgICAgZWxzZSB7IAotICAg
ICAgICBlbmQgPSBhMS50b051bWJlcihleGVjKTsKKyAgICAgICAgZW5kID0gYTEudG9OdW1iZXIo
Y2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgIGlmICghKGVuZCA+PSAwKSkgLy8gY2hlY2sgZm9yIG5lZ2F0aXZl
IHZhbHVlcyBvciBOYU4KICAgICAgICAgICAgIGVuZCA9IDA7CkBAIC0xNDM3LDIwICsxNDQyLDIw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nU3RhcnQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwogICAgIHVuc2lnbmVkIHN1YnN0cmluZ0xlbmd0
aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpIC0gc3Vic3RyaW5nU3RhcnQ7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywg
anNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoY2FsbEZyYW1l
LCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
KyAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmlu
ZyBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1ZShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRo
b3V0TG9jYWxlKCk7CiAgICAgaWYgKGxvd2VyY2FzZWRTdHJpbmcuaW1wbCgpID09IHMuaW1wbCgp
KQpAQCAtMTQ1OCwxNyArMTQ2MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgbG93ZXJjYXNlZFN0
cmluZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5nKiBzVmFsID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSBzVmFsLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZyB1cHBlcmNhc2VkU3RyaW5nID0gcy5jb252
ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CiAgICAgaWYgKHVwcGVyY2FzZWRTdHJpbmcu
aW1wbCgpID09IHMuaW1wbCgpKQpAQCAtMTQ3Niw0NCArMTQ4MSw0MyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgdXBwZXJjYXNlZFN0cmluZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAv
LyAxMy4xLjEgU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlICh0aGF0IFssIGxvY2FsZXMg
Wywgb3B0aW9ucyBdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9wdWJsaWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0bQogCi0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8g
YmUgUmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzIHZhbHVlKS4KLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiU3RyaW5n
LnByb3RvdHlwZS5sb2NhbGVDb21wYXJlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxs
IG9yIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmUgcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKIAogICAgIC8vIDIuIExldCBT
IGJlIFRvU3RyaW5nKE8pLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KFMpLgotICAgIFN0cmlu
ZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmlu
ZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNC4gTGV0IFRoYXQgYmUg
VG9TdHJpbmcodGhhdCkuCiAgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQoVGhhdCkuCi0gICAgSlNW
YWx1ZSB0aGF0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgdGhhdCA9IHRo
YXRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIHRoYXRWYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RyaW5nIHRoYXQgPSB0aGF0VmFsdWUudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNWYWx1ZSBsb2NhbGVz
ID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBvcHRpb25zID0gZXhlYy0+YXJndW1l
bnQoMik7CisgICAgSlNWYWx1ZSBsb2NhbGVzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAg
ICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIEludGxDb2xs
YXRvciogY29sbGF0b3IgPSBudWxscHRyOwogICAgIGlmIChsb2NhbGVzLmlzVW5kZWZpbmVkKCkg
JiYgb3B0aW9ucy5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGNvbGxhdG9yID0gZ2xvYmFsT2Jq
ZWN0LT5kZWZhdWx0Q29sbGF0b3IoZXhlYyk7CisgICAgICAgIGNvbGxhdG9yID0gZ2xvYmFsT2Jq
ZWN0LT5kZWZhdWx0Q29sbGF0b3IoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29s
bGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jb2xsYXRvclN0
cnVjdHVyZSgpKTsKLSAgICAgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqZXhlYywg
bG9jYWxlcywgb3B0aW9ucyk7CisgICAgICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3Io
KmNhbGxGcmFtZSwgbG9jYWxlcywgb3B0aW9ucyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoKmV4ZWMs
IHN0cmluZywgdGhhdCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoKmNhbGxGcmFtZSwgc3RyaW5nLCB0aGF0
KSkpOwogI2Vsc2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKENvbGxhdG9y
KCkuY29sbGF0ZShzdHJpbmcsIHRoYXQpKSk7CiAjZW5kaWYKQEAgLTE1MjUsOSArMTUyOSw5IEBA
IGVudW0gY2xhc3MgQ2FzZUNvbnZlcnNpb25Nb2RlIHsKICAgICBMb3dlciwKIH07CiB0ZW1wbGF0
ZTxDYXNlQ29udmVyc2lvbk1vZGUgbW9kZT4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2Fs
ZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNh
c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgYXV0byBj
b252ZXJ0Q2FzZSA9IFsmXSAoYXV0byYmLi4uIGFyZ3MpIHsKQEAgLTE2MTUsMTkgKzE2MTksMTkg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBsb3dlcikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxMy4x
LjIgU3RyaW5nLnByb3RvdHlwZS50b0xvY2FsZUxvd2VyQ2FzZSAoW2xvY2FsZXNdKQogICAgIC8v
IGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9zdGFuZGFyZHMvRWNt
YS00MDIuaHRtCi0gICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29udmVyc2lvbk1vZGU6Okxv
d2VyPihzdGF0ZSk7CisgICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29udmVyc2lvbk1vZGU6
Okxvd2VyPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2Nh
bGVVcHBlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gMTMuMS4zIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVVcHBlckNh
c2UgKFtsb2NhbGVzXSkKICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9wdWJs
aWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0bQogICAgIC8vIFRoaXMgZnVuY3Rpb24gaW50
ZXJwcmV0cyBhIHN0cmluZyB2YWx1ZSBhcyBhIHNlcXVlbmNlIG9mIGNvZGUgcG9pbnRzLCBhcyBk
ZXNjcmliZWQgaW4gRVMyMDE1LCA2LjEuNC4gVGhpcyBmdW5jdGlvbiBiZWhhdmVzIGluIGV4YWN0
bHkgdGhlIHNhbWUgd2F5IGFzIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVMb3dlckNhc2UsIGV4
Y2VwdCB0aGF0IGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0byB0aGVpciB1cHBlcmNhc2UgZXF1aXZh
bGVudHMgYXMgc3BlY2lmaWVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZS4KLSAg
ICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6VXBwZXI+KHN0YXRlKTsK
KyAgICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6VXBwZXI+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIApAQCAtMTY2
NCwyMiArMTY2OCwyMiBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgdHJpbUtpbgogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwganNTdHJpbmcodm0sIHN0ci5zdWJzdHJpbmdTaGFyaW5nSW1wbChsZWZ0
LCByaWdodCAtIGxlZnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVHJpbShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhleGVjLCB0aGlzVmFsdWUsIFRy
aW1TdGFydCB8IFRyaW1FbmQpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGNhbGxG
cmFtZSwgdGhpc1ZhbHVlLCBUcmltU3RhcnQgfCBUcmltRW5kKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbVN0YXJ0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbVN0YXJ0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRyaW1TdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBUcmltU3RhcnQpKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0cmltU3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBUcmltU3RhcnQpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VHJpbUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgVHJpbUVuZCkpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIFRyaW1FbmQpKTsKIH0K
IAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChkb3Vi
bGUgdmFsdWUsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgbWF4KQpAQCAtMTY5MSw3NiArMTY5NSw3
NiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGRv
dWJsZSB2YWx1ZSwgdW5zaWduZWQgbWluLCB1bgogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJj
aEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1Nl
YXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGEwID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdF
eHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgY2FsbEZyYW1l
LCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNX
aXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNX
aXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0
cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
OworICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAg
IHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICBpZiAocG9zaXRpb25BcmcuaXNJbnQzMigpKQogICAg
ICAgICBzdGFydCA9IHN0ZDo6bWF4KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7
Ci0gICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25Bcmcu
dG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5ndGgpOworICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1
bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJhbWUpLCAwLCBsZW5n
dGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdU
b1NlYXJjaEluLmhhc0luZml4U3RhcnRpbmdBdChzZWFyY2hTdHJpbmcsIHN0YXJ0KSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRW5kc1dpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAg
IEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGJvb2wgaXNSZWd1bGFy
RXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBjYWxsRnJhbWUsIGEwKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhw
cmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJB
cmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJn
dW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsK
IAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7CiAKLSAgICBKU1ZhbHVlIGVuZFBv
c2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBlbmRQb3NpdGlvbkFy
ZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgdW5zaWduZWQgZW5kID0gbGVuZ3RoOwog
ICAgIGlmIChlbmRQb3NpdGlvbkFyZy5pc0ludDMyKCkpCiAgICAgICAgIGVuZCA9IHN0ZDo6bWF4
KDAsIGVuZFBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoIWVuZFBvc2l0aW9u
QXJnLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW5kID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5z
aWduZWQoZW5kUG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5ndGgpOworICAgICAg
ICBlbmQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChlbmRQb3NpdGlvbkFyZy50b0ludGVn
ZXIoY2FsbEZyYW1lKSwgMCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5oYXNJbmZpeEVuZGluZ0F0KHNlYXJjaFN0
cmluZywgc3RkOjptaW4oZW5kLCBsZW5ndGgpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluLCBTdHJpbmcgc2VhcmNoU3RyaW5nLCBKU1ZhbHVl
IHBvc2l0aW9uQXJnKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
SW5jbHVkZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIFN0cmluZyBzdHJpbmdU
b1NlYXJjaEluLCBTdHJpbmcgc2VhcmNoU3RyaW5nLCBKU1ZhbHVlIHBvc2l0aW9uQXJnKQogewog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICB1bnNpZ25lZCBz
dGFydCA9IDA7CkBAIC0xNzY4LDcwICsxNzcyLDcwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFyZy5hc0ludDMyKCkpOwogICAg
IGVsc2UgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0
aCgpOwotICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9u
QXJnLnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgc3RhcnQgPSBjbGFtcEFu
ZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoY2FsbEZyYW1lKSwgMCwg
bGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc3Ry
aW5nVG9TZWFyY2hJbi5maW5kKHNlYXJjaFN0cmluZywgc3RhcnQpICE9IG5vdEZvdW5kKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNJbmNsdWRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7Cisg
ICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYm9vbCBpc1JlZ3Vs
YXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGNhbGxGcmFtZSwgYTApOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJF
eHByZXNzaW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhw
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJB
cmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIp
OwogCi0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1
ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgcG9zaXRpb25B
cmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGV4ZWMsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJj
aFN0cmluZywgcG9zaXRpb25BcmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0
cmluZ0luY2x1ZGVzSW1wbCh2bSwgY2FsbEZyYW1lLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hT
dHJpbmcsIHBvc2l0aW9uQXJnKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBBU1NFUlQoY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0
cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dU
RlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAg
ICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBTdHJp
bmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcG9z
aXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
c3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJp
bmcsIHBvc2l0aW9uQXJnKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJ
bmNsdWRlc0ltcGwodm0sIGNhbGxGcmFtZSwgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5n
LCBwb3NpdGlvbkFyZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTdHJpbmdJdGVyYXRv
cjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSktPnN0cmlu
Z0l0ZXJhdG9yU3RydWN0dXJlKCksIHN0cmluZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5zdHJp
bmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAogZW51bSBjbGFzcyBOb3JtYWxp
emF0aW9uRm9ybSB7IE5GQywgTkZELCBORktDLCBORktEIH07CkBAIC0xOTE1LDIxICsxOTE5LDIx
IEBAIHN0YXRpYyBKU1ZhbHVlIG5vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBz
dHJpbmcsIE5vcm1hbGl6YXRpb25Gb3JtIGZvCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBqc1N0cmluZyh2bSwgV1RGTW92ZShyZXN1bHQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBmb3JtID0gTm9ybWFsaXphdGlvbkZvcm06
Ok5GQzsKLSAgICBKU1ZhbHVlIGZvcm1WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgZm9ybVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWZvcm1W
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIFN0cmluZyBmb3JtU3RyaW5nID0gZm9ybVZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgZm9ybVN0cmluZyA9IGZvcm1W
YWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmIChmb3JtU3RyaW5nID09ICJORkMiKQpAQCAtMTk0
MSwxMCArMTk0NSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGVsc2UgaWYgKGZvcm1TdHJp
bmcgPT0gIk5GS0QiKQogICAgICAgICAgICAgZm9ybSA9IE5vcm1hbGl6YXRpb25Gb3JtOjpORktE
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhl
Yywgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3Jt
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSJfcyk7
CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bm9ybWFsaXplKGV4ZWMsIHN0cmluZywgZm9ybSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoY2FsbEZyYW1lLCBzdHJpbmcsIGZvcm0p
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCA3ZDU1MGQ3ZDE2NGYxY2VkNjVjNDYzZWFh
Mzc0ZmZkNzhhNGQyMDkyLi41YzI2OGFjMWExZDlkOWI2ZDlmNTVhMDZhMDA0ZWMxYTE3ZWU5MDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aApAQCAtNjEsMTAgKzYxLDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJp
bmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKAogCiB2b2lkIHN1YnN0aXR1dGVCYWNrcmVm
ZXJlbmNlcyhTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQs
IFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCopOwogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcihF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3BsaXRGYXN0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbChFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVy
bmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4IGVkOWZhODBkYzdmZjU1
NjE2Njc0ZTkxNTI0MzBmMTM2NzQ2NjVjYmIuLmYzNzkwNzcyZjIwYTJlOWQ4ZjQ2MjI0MjRiOTYy
MDZiMTExYTI5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9y
Rm9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3lt
Ym9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3Ry
dWN0b3JLZXlGb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC01Niw3
ICs1Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmc3ltYm9sCiBAZW5kCiAqLwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBTeW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgY2FsbFN5bWJvbCwgbnVsbHB0cikKQEAgLTc3LDQzICs3Nyw0MyBAQCB2b2lkIFN5
bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSog
cHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBkZXNjcmlwdGlvbiA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgZGVzY3JpcHRpb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmIChkZXNjcmlwdGlvbi5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtKSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nID0g
ZGVzY3JpcHRpb24udG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZyA9IGRlc2Ny
aXB0aW9uLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlV2l0
aERlc2NyaXB0aW9uKHZtLCBzdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nS2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBzdHJpbmcg
PSBzdHJpbmdLZXktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdLZXkt
PnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3Ry
aW5nKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIHZt
LnN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZykpKTsKIH0KIAogY29uc3QgQVND
SUlMaXRlcmFsIFN5bWJvbEtleUZvclR5cGVFcnJvciB7ICJTeW1ib2wua2V5Rm9yIHJlcXVpcmVz
IHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgc3ltYm9sIl9zIH07CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzeW1ib2xWYWx1
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5pc1N5bWJv
bCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBl
RXJyb3IpKTsKIAogICAgIFByaXZhdGVOYW1lIHByaXZhdGVOYW1lID0gYXNTeW1ib2woc3ltYm9s
VmFsdWUpLT5wcml2YXRlTmFtZSgpOwogICAgIFN5bWJvbEltcGwmIHVpZCA9IHByaXZhdGVOYW1l
LnVpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3Rv
dHlwZS5jcHAKaW5kZXggNDJhMDdjNmE0M2E0N2NkNjQyOTIzOWU5YWJlYTk5NmJhZDgwMTdmNi4u
MjM0ZWIxODkxOWI5YTk5NDkzMTRmNDQ2MDYxZThjOWNmMDBkNmE3OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC0zNCw5ICsz
NCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90
b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04OCwzOCArODgsMzggQEAgaW5saW5lIFN5bWJv
bCogdHJ5RXh0cmFjdFN5bWJvbChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVy
biBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFs
dWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0
ZXJEZXNjcmlwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3lt
Ym9sKHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRy
YWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbERlc2Ny
aXB0aW9uVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBjb25zdCBhdXRvIGRlc2NyaXB0aW9uID0gc3ltYm9sLT5kZXNjcmlwdGlvbigp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRpb24uaXNOdWxsKCkgPyBqc1Vu
ZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTeW1ib2wq
IHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBT
eW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghc3ltYm9sKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2
aWFsU3RyaW5nKHZtLCBzeW1ib2wtPmRlc2NyaXB0aXZlU3RyaW5nKCkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVl
T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3lt
Ym9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9y
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN5bWJv
bCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dT
Y29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCmluZGV4
IDU1MzU1ZDY5NjFlZDhjNDQyNGIwZWI3ZGU4NWJjNTkwZDYyZWVhNmIuLmJjNzhiM2EzMTI2YmU3
MmU3MmUzOWI0M2E2YWNlZjg5ZmNiYzc0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaHJvd1Njb3BlLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9W
RVJJRklDQVRJT04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVkQXJyYXlDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlZEFycmF5Q29udHJvbGxlci5oCmluZGV4IDY0ZDNmNTUwNGU1NTAxOTA5ZGJhNmZkMTBhZWQ5
ODljMTk4ODc3ZTguLmMyMWFjYWUyMThjNzI2YTBhZTdlZTFlZTU4ODhhYTQxZWExYWJmZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRy
b2xsZXIuaApAQCAtMzAsOSArMzAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJh
eUJ1ZmZlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQXJy
YXlCdWZmZXI7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxU
eXBlZEFycmF5Q29udHJvbGxlcj4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggNjc2ZDljMmMxNjI2OTc5NmI1ODI2ODJlZmY0MWI4OWViNTdmNTk5My4uNGUyMTYy
MWM2NDQ2ZDMzZmNjZGFkMmNkMzY2OTZiYWNjMDU5NTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
QnVpbHRpbkV4ZWN1dGFibGVzOwogY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsKK2Ns
YXNzIENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVDYWNoZTsKIGNsYXNz
IENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQ29tcGFjdFZhcmlhYmxlTWFwOwogY2xhc3MgQ3Vz
dG9tR2V0dGVyU2V0dGVyOwogY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOwotY2xhc3Mg
RXhlY1N0YXRlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhjZXB0aW9uU2NvcGU7CiBjbGFz
cyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKQEAgLTE4MCw3ICsxODAsNyBAQCBz
dHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFZhbHVlUHJvZmls
ZTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogCiBzdHJ1Y3QgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUgewogICAgIExvY2FsVGltZU9m
ZnNldENhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAppbmRleCBj
MTZkM2EyZTBlNjU5NDQ5N2Q5NDcyZDBhY2M1ZGE4MDZlNjc5NzcxLi4wZWZiNjBjMzc0ZWYxYTE3
OTAzZjVjMzNlMGE3YWNlM2ZhODIzYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1UcmFwcy5oCkBAIC0zNiw4ICszNiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogY2xhc3MgVk1UcmFwcyB7CiAgICAgdHlwZWRlZiB1aW50OF90IEJpdEZp
ZWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKaW5kZXggZDM1NjNh
ZjgzZTdiNmZlOTc3YTA0NDM1NzFhZWIyZjFhMTcxYWVkNi4uZDJhZTA1MzZjMjAxYzE1Y2FmZDk4
MmVkZWUwNDMwZmJjMzRmN2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2F0Y2hkb2cuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRj
aGRvZy5oCkBAIC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIAogY2xhc3MgV2F0Y2hkb2cgOiBwdWJsaWMgV1RGOjpUaHJlYWRTYWZlUmVmQ291
bnRlZDxXYXRjaGRvZz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMzlhMjA3NjBhMDE5OTBlNjBiN2FkYTJjYWJkNjY5ZGI3MDVlYWY4ZS4uZTRlYTk1OTQyNzZk
Njg5ODdmMTNlMzE3ZDI0NzUyNmMzZWIyOTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCkBAIC00NSw1NCArNDUsNTMg
QEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2Vha01h
cFByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBXZWFrTWFwQ29uc3RydWN0b3I6OldlYWtNYXBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha01hcCwgY29u
c3RydWN0V2Vha01hcCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtNYXAiKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFrTWFwIikpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJl
KiB3ZWFrTWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha01hcFN0cnVj
dHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha01hcFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU1dlYWtNYXAqIHdlYWtN
YXAgPSBKU1dlYWtNYXA6OmNyZWF0ZSh2bSwgd2Vha01hcFN0cnVjdHVyZSk7Ci0gICAgSlNWYWx1
ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtNYXApOwogCi0gICAgSlNW
YWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+SlNPYmplY3Q6OmdldChleGVjLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zZXQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtNYXAtPkpT
T2JqZWN0OjpnZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEg
YWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlw
ZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEp
OwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZm9yRWFjaEluSXRlcmFibGUo
ZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0
SXRlbSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNhbGxGcmFtZSwgaXRlcmFibGUsIFsmXShW
TSYgdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCFuZXh0
SXRlbS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0
ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CisgICAgICAgIEpTVmFsdWUg
a2V5ID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gbmV4dEl0ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigx
KSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0SXRlbS5nZXQoY2FsbEZyYW1lLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAg
LTEwMCw3ICs5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZh
bHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFk
ZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrTWFwLCBhcmd1
bWVudHMpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5j
dGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtNYXAsIGFyZ3VtZW50cyk7
CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtNYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAppbmRl
eCBjNzNmZDNlYzcwMjU5MTEyZGQ1ZDE1YzJhMDY1ZTE5MjEwY2RhZWY3Li5jZDRjNTlhYjkyYmZk
ZTY0NjFkNjViMTZkMmU1YmEwNmY5ZjdjY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApAQCAtMzMsMTAgKzMzLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vha01hcFByb3RvdHlwZTo6c19pbmZv
ID0geyAiV2Vha01hcCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2Vha01hcFByb3RvdHlwZSkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcERlbGV0ZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBHZXQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFr
TWFwSGFzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jV2Vha01hcFNldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtNYXBHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVu
Y1dlYWtNYXBTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrTWFw
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CkBAIC01MSw5ICs1MSw5IEBAIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNTdHJpbmcodm0sICJXZWFrTWFwIiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3Rh
dGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKQEAgLTY5LDE4ICs2OSwx
OCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtNYXAqIGdldFdlYWtNYXAoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcERlbGV0ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a01hcERlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSBr
ZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIG1hcC0+cmVtb3ZlKGFzT2JqZWN0KGtleSkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9G
dW5jV2Vha01hcEdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1
ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwpAQCAtODksMjEgKzg5LDIxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1hcC0+Z2V0KGFzT2JqZWN0KGtl
eSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFw
SGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm90b0Z1bmNXZWFrTWFwSGFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1h
cCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBK
U1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oa2V5LmlzT2JqZWN0KCkgJiYgbWFwLT5oYXMoYXNPYmplY3Qoa2V5
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFw
U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm90b0Z1bmNXZWFrTWFwU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhbWFwKTsKICAgICBpZiAoIW1hcCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGQ0NmYyZTdlODg5ZDQ4NDdlNTY5ZWIyMGZhNmM4Nzg4OTY1MjRmNTEuLmU4YjI1
MzgwY2RiZDFjNjBkZmEyN2Y5MDQyZDRjY2NmMWJiZDE1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNw
cApAQCAtNDUsMzMgKzQ1LDMyIEBAIHZvaWQgV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIHByCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxX
ZWFrUmVmKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2Vha1JlZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6V2Vha09i
amVjdFJlZkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrUmVmLCBjb25zdHJ1Y3RXZWFrUmVmKQogewogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1JlZihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1Jl
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1JlZiIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIldlYWtSZWYiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1JlZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUgYW4gb2JqZWN0Il9z
KTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50
IHRvIFdlYWtSZWYgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CiAKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIFdlYWtPYmplY3RSZWZTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBl
eGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrT2JqZWN0UmVmU3RydWN0dXJlKCkp
OworICAgIFN0cnVjdHVyZSogV2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJn
ZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrT2JqZWN0UmVmU3RydWN0dXJlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2Vha09iamVjdFJlZjo6Y3JlYXRlKHZt
LCBXZWFrT2JqZWN0UmVmU3RydWN0dXJlLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRP
YmplY3QoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU1dlYWtPYmplY3RSZWY6OmNyZWF0ZSh2bSwgV2Vha09iamVjdFJlZlN0cnVjdHVyZSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJv
dG90eXBlLmNwcAppbmRleCA1MmY5ZWFjZGEwMTMxZDM1MTExMDI0ZWFmMTM3NWY0YzAzZTNhZDk1
Li44OTljZDNhODVhMWUyNjUzNTdiOTJmMDYyNDllZWZkMjIyYTllOWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBl
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZv
IFdlYWtPYmplY3RSZWZQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtSZWYiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYWtPYmplY3RSZWZQ
cm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtSZWZEZXJlZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtSZWZEZXJlZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB2b2lkIFdlYWtPYmplY3RSZWZQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTQ3LDkgKzQ3LDkgQEAgdm9p
ZCBXZWFrT2JqZWN0UmVmUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiV2Vha1Jl
ZiIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtPYmplY3RSZWYqIGdldFdl
YWtSZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVk0m
IHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7CkBAIC02NSwxMCArNjUsMTAgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIHYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtSZWZEZXJlZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Ci0gICAgYXV0byogcmVmID0gZ2V0V2Vha1JlZihjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvKiByZWYgPSBnZXRXZWFrUmVmKGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXJlZikKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjUyNDlk
NWJjMGExNTRhNmNkMTNiMmVkM2U0NzVmNWRmYmIxZThiOC4uMTdkZWI4ODU1N2MyYTM2ZTg1OWNk
ZTRlMDgzYTUwYzdlOWRjMjBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCkBAIC00NSw0OCArNDUsNDcgQEAgdm9pZCBX
ZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2Vha1NldFByb3RvdHlw
ZSogcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBXZWFrU2V0
Q29uc3RydWN0b3I6OldlYWtTZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha1NldCwgY29uc3RydWN0V2Vh
a1NldCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdl
YWtTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtTZXQiKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFrU2V0IikpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtT
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJlKiB3ZWFrU2V0
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgpKTsK
KyAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU1dlYWtTZXQqIHdlYWtTZXQgPSBKU1dl
YWtTZXQ6OmNyZWF0ZSh2bSwgd2Vha1NldFN0cnVjdHVyZSk7Ci0gICAgSlNWYWx1ZSBpdGVyYWJs
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwogCi0gICAgSlNWYWx1ZSBhZGRl
ckZ1bmN0aW9uID0gd2Vha1NldC0+SlNPYmplY3Q6OmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVz
LT5hZGQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtTZXQtPkpTT2JqZWN0Ojpn
ZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5j
dGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlm
IChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7
CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRl
cmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKKyAg
ICBmb3JFYWNoSW5JdGVyYWJsZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3Rh
dGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOwogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG5leHRWYWx1ZSk7
CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIGNh
bGwoZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoY2FsbEZyYW1l
LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxs
RGF0YSwgd2Vha1NldCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUod2Vha1NldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRQcm90b3R5cGUuY3BwCmluZGV4IGY1ZTA3ODAxZmM4MDExMjgwZmJlNzdlZWQyYTk3
YTZlZWRmYzc4MTMuLjBmNzM1ZGIwZmQ2MTczZjQyN2RhYzVjYWMwNWMyYjIwMWFiYjI0YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUu
Y3BwCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
V2Vha1NldFByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vha1NldCIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha1NldFByb3RvdHlwZSkgfTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERl
bGV0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
b3RvRnVuY1dlYWtTZXRIYXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERlbGV0ZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jV2Vha1NldEhhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEFkZChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFdlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTQ5LDkg
KzQ5LDkgQEAgdm9pZCBXZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwg
IldlYWtTZXQiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRX
ZWFrU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRXZWFrU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFZNJiB2bSA9
IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZ
KCF2YWx1ZS5pc09iamVjdCgpKSkgewpAQCAtNjcsMzAgKzY3LDMwIEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8q
IHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oa2V5LmlzT2Jq
ZWN0KCkgJiYgc2V0LT5yZW1vdmUoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1
dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oa2V5Lmlz
T2JqZWN0KCkgJiYgc2V0LT5oYXMoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byog
c2V0ID0gZ2V0V2Vha1NldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhc2V0KTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAppbmRleCAzNTU5MmE0MDBiNzkxNmMwY2E0OTMwNDUyNWMxNzg5MmY3N2EzMDdkLi4yNTdi
Mjk1NTNjYWEyZjdkMTRhOGE1ZGM2NzBkMTQ5MTZjNmU4YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC04ODUsMTEgKzg4NSwxMSBAQCBjbGFzcyBE
T01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5vZGUgewogcHJpdmF0ZToKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkVuYWJsZUV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8qIG9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgYXV0
byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVRHZXR0ZXJDb21wbGV4Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiAob2JqZWN0KQogICAgICAgICAgICAgb2Jq
ZWN0LT5tX2VuYWJsZUV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC05NDksMTYgKzk0OSwxNiBAQCBjbGFzcyBET01KSVRG
dW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgcmV0dXJuIG9iamVj
dDsKICAgICB9CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbldpdGhUeXBlQ2hlY2soRXhlY1N0YXRlKiBleGVjKQorICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVDaGVjayhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBET01KSVROb2RlKiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxET01KSVROb2RlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAg
RE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogICAgIH0K
IApAQCAtMTAyOCwxNSArMTAyOCwxNSBAQCBjbGFzcyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0
IDogcHVibGljIERPTUpJVE5vZGUgewogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVD
aGVjayhFeGVjU3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVENoZWNrU3ViQ2xh
c3NPYmplY3QqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlmICghdGhp
c09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPnZh
bHVlKCkpKTsKICAgICB9CiAKQEAgLTEyOTQsOCArMTI5NCw4IEBAIHZvaWQgRWxlbWVudDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBSb290KiByb290KQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJl
YW1pbmdQYXJzZXJBZGRCeXRlcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFsaXplKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3Ry
ZWFtaW5nUGFyc2VyQWRkQnl0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNl
ckZpbmFsaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNsYXNzIFdhc21TdHJl
YW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgpAQCAt
MTM2MCwyNiArMTM2MCwyNiBAQCBjbGFzcyBXYXNtU3RyZWFtaW5nUGFyc2VyIDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogY29uc3QgQ2xhc3NJbmZvIFdhc21TdHJlYW1pbmdQYXJz
ZXI6OnNfaW5mbyA9IHsgIldhc21TdHJlYW1pbmdQYXJzZXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdhc21TdHJlYW1pbmdQYXJzZXIpIH07
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFy
c2VyQWRkQnl0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxX
YXNtU3RyZWFtaW5nUGFyc2VyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2VyKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpOwog
Ci0gICAgYXV0byBkYXRhID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1
bWVudCgwKSk7CisgICAgYXV0byBkYXRhID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRoaXNPYmplY3QtPnN0
cmVhbWluZ1BhcnNlcigpLmFkZEJ5dGVzKGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5maXJzdCksIGRhdGEuc2Vjb25kKSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJz
ZXJGaW5hbGl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2Fz
bVN0cmVhbWluZ1BhcnNlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihmYWxzZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4odGhpc09iamVjdC0+c3RyZWFtaW5nUGFyc2VyKCkuZmluYWxpemUoKSkpKTsK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZNOjpzX2luZm8g
PSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwCiAKIC8vIFRyaWdn
ZXJzIGEgY3Jhc2ggaW1tZWRpYXRlbHkuCiAvLyBVc2FnZTogJHZtLmNyYXNoKCkKLXN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmFzaChFeGVjU3RhdGUqKQorc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIENS
QVNIKCk7CkBAIC0xNDAzLDE0ICsxNDAzLDE0IEBAIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmFzaChFeGVjU3RhCiAK
IC8vIEV4ZWN1dGVzIGEgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBpZiB0aGUgZmlyc3QgYXJndW1l
bnQgaXMgdHJ1dGh5IG9yIGlzIHVuc2V0LgogLy8gVXNhZ2U6ICR2bS5icmVha3BvaW50KDxjb25k
aXRpb24+KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CcmVh
a3BvaW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQnJlYWtwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwogICAgIC8vIE5vdGhpbmcgc2hvdWxkIHRocm93IGhlcmUgYnV0IHdlIG1pZ2h0IGFzIHdlbGwg
ZG91YmxlIGNoZWNrLi4uCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwogICAgIFVOVVNFRF9QQVJBTShzY29wZSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudENv
dW50KCkgfHwgZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKQorICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgfHwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0Jvb2xl
YW4oY2FsbEZyYW1lKSkKICAgICAgICAgV1RGQnJlYWtwb2ludFRyYXAoKTsKIAogICAgIHJldHVy
biBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTE0MTgsNyArMTQxOCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQnJlYWtwb2ludChFeGVjU3RhdGUqIGV4
ZWMpCiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIERGRyBmcmFt
ZS4KIC8vIFVzYWdlOiBpc0RGRyA9ICR2bS5kZmdUcnVlKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uREZHVHJ1ZShFeGVjU3RhdGUqKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25ERkdUcnVlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CkBAIC0xNDI2LDEzICsx
NDI2LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uREZH
VHJ1ZShFeGVjU3RhdGUqKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUg
aXMgYSBGVEwgZnJhbWUuCiAvLyBVc2FnZTogaXNGVEwgPSAkdm0uZnRsVHJ1ZSgpCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZUTFRydWUoRXhlY1N0YXRlKikK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRlRMVHJ1ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdU1mZW5j
ZShFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcHVNZmVuY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1Mp
CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNwdU1mZW5jZShFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3B1UmR0c2MoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1UmR0c2MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82
NCkgJiYgIU9TKFdJTkRPV1MpCkBAIC0xNDU0LDcgKzE0NTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNjKEV4ZWNTdGF0ZSopCiAjZW5kaWYK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDcHVp
ZChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcHVDcHVpZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykK
QEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3B1Q3B1aWQoRXhlY1N0YXRlKikKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNwdVBhdXNlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVBhdXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIENQVShYODZfNjQp
ICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ4MSwxMyArMTQ4MSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVBhdXNlKEV4ZWNTdGF0ZSopCiAvLwogLy8g
SWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTQXJyYXlCdWZmZXIsIHdlIGxvYWQgdGhl
IGJ1dHRlcmZseQogLy8gYW5kIGNsZmx1c2ggYXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGJ1dHRlcmZs
eS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xmbHVz
aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNwdUNsZmx1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNp
ZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNJbnQzMigpKQorICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc0ludDMy
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAK
ICAgICBhdXRvIGNsZmx1c2ggPSBbXSAodm9pZCogcHRyKSB7CkBAIC0xNDk4LDExICsxNDk4LDEx
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xmbHVz
aChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBWZWN0b3I8dm9pZCo+IHRvRmx1c2g7CiAKLSAgICB1
aW50MzJfdCBvZmZzZXQgPSBleGVjLT5hcmd1bWVudCgxKS5hc1VJbnQzMigpOworICAgIHVpbnQz
Ml90IG9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuYXNVSW50MzIoKTsKIAotICAgIGlm
IChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpKQorICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpCiAgICAgICAgIHRvRmx1c2guYXBwZW5kKGJpdHdpc2VfY2FzdDxjaGFyKj4o
dmlldy0+dmVjdG9yKCkpICsgb2Zmc2V0KTsKLSAgICBlbHNlIGlmIChKU09iamVjdCogb2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSkpIHsKKyAg
ICBlbHNlIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZt
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkgewogICAgICAgICBzd2l0Y2ggKG9iamVjdC0+aW5k
ZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC0xNTE5LDcgKzE1
MTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNs
Zmx1c2goRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjbGZsdXNoKHB0cik7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICNlbmRpZgogfQpAQCAtMTU2OCwyNSArMTU2
OCwyNSBAQCBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rp
b24oSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgZnJhbWUgaXMgYSBMTEludCBmcmFtZS4KIC8vIFVzYWdlOiBpc0xMSW50ID0gJHZtLmxs
aW50VHJ1ZSgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxM
aW50VHJ1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkxMaW50VHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgaWYgKCFl
eGVjKQorICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIENhbGxlckZyYW1lSklUVHlwZUZ1bmN0b3IgZnVuY3RvcjsK
LSAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShmdW5j
dG9yKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdG9yLmppdFR5
cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIGJhc2VsaW5lIEpJVCBmcmFtZS4KIC8vIFVzYWdl
OiBpc0Jhc2VsaW5lSklUID0gJHZtLmppdFRydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25KSVRUcnVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSklUVHJ1ZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgaWYgKCFleGVjKQorICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIENhbGxlckZyYW1lSklUVHlw
ZUZ1bmN0b3IgZnVuY3RvcjsKLSAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGNhbGxG
cmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmdW5jdG9yLmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCkpOwogfQogCkBA
IC0xNTk0LDEzICsxNTk0LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSklUVHJ1ZShFeGVjU3RhdGUqIGV4ZWMpCiAvLyBVc2FnZToKIC8vIGZ1bmN0aW9u
IGYoKSB7IH07CiAvLyAkdm0ubm9JbmxpbmUoZik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk5vSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9JbmxpbmUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgIGlmIChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCi0gICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKIAogICAgIGlmIChGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rpb24odGhlRnVuY3Rp
b25WYWx1ZSkpCiAgICAgICAgIGV4ZWN1dGFibGUtPnNldE5ldmVySW5saW5lKHRydWUpOwpAQCAt
MTYxMCwyOCArMTYxMCwyOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbk5vSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gUnVucyBhIGZ1bGwgR0Mgc3lu
Y2hyb25vdXNseS4KIC8vIFVzYWdlOiAkdm0uZ2MoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAg
ICBWTUluc3BlY3Rvcjo6Z2MoZXhlYyk7CisgICAgVk1JbnNwZWN0b3I6OmdjKGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gUnVu
cyB0aGUgZWRlbkdDIHN5bmNocm9ub3VzbHkuCiAvLyBVc2FnZTogJHZtLmVkZW5HQygpCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5H
QyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk1JbnNwZWN0b3I6OmVkZW5HQyhleGVjKTsK
KyAgICBWTUluc3BlY3Rvcjo6ZWRlbkdDKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gRHVtcHMgdGhlIGhhc2hlcyBvZiBhbGwg
c3Vic3BhY2VzIGN1cnJlbnRseSByZWdpc3RlcmVkIHdpdGggdGhlIFZNLgogLy8gVXNhZ2U6ICR2
bS5kdW1wU3Vic3BhY2VIYXNoZXMoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZNSW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VI
YXNoZXMoJnZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtMTY1MCwxMiArMTY1MCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyhFeGVjU3RhdGUqIGV4ZWMpCiAvLyBOb3Rl
OiB5b3UgY2Fubm90IHRvU3RyaW5nKCkgYSBjb2RlQmxvY2ssIHVubGlua2VkQ29kZUJsb2NrLCBv
ciBleGVjdXRhYmxlIGJlY2F1c2UKIC8vIHRoZXJlIGFyZSBpbnRlcm5hbCBvYmplY3RzIGFuZCBu
b3QgYSBKUyBvYmplY3QuIEhlbmNlLCB5b3UgY2Fubm90IGRvIHN0cmluZwogLy8gY29uY2F0ZW5h
dGlvbiB3aXRoIHRoZW0uCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
dW5zaWduZWQgZnJhbWVOdW1iZXIgPSAxOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
Pj0gMSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAg
IGlmICghdmFsdWUuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTE2NjUsMTggKzE2NjUsMTggQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBmcmFtZU51bWJlciA9IHZhbHVlLmFzVUludDMyKCkgKyAxOwogICAgIH0KIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNEb2xsYXJWTUNhbGxGcmFtZTo6Y3JlYXRlKGV4
ZWMsIGZyYW1lTnVtYmVyKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RvbGxhclZN
Q2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLCBmcmFtZU51bWJlcikpOwogfQogCiAvLyBHZXRz
IGEgdG9rZW4gZm9yIHRoZSBDb2RlQmxvY2sgZm9yIGEgc3BlY2lmaWVkIGZyYW1lIGluZGV4Lgog
Ly8gVXNhZ2U6IGNvZGVCbG9ja1Rva2VuID0gJHZtLmNvZGVCbG9ja0ZvckZyYW1lKDApIC8vIGZy
YW1lIDAgaXMgdGhlIHRvcCBmcmFtZS4KIC8vIFVzYWdlOiBjb2RlQmxvY2tUb2tlbiA9ICR2bS5j
b2RlQmxvY2tGb3JGcmFtZSgpIC8vIGltcGxpZXMgZnJhbWUgMCBpLmUuIGN1cnJlbnQgZnJhbWUu
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0Zv
ckZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
IHVuc2lnbmVkIGZyYW1lTnVtYmVyID0gMTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID49IDEpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAg
ICBpZiAoIXZhbHVlLmlzVUludDMyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNjg2LDIwICsxNjg2LDIwIEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBmcmFtZU51bWJlciA9IHZhbHVlLmFzVUludDMyKCkgKyAxOwog
ICAgIH0KIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gVk1JbnNwZWN0b3I6OmNvZGVCbG9j
a0ZvckZyYW1lKGV4ZWMsIGZyYW1lTnVtYmVyKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IFZNSW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JGcmFtZShjYWxsRnJhbWUsIGZyYW1lTnVtYmVyKTsK
ICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvZGVC
bG9jayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgQ29k
ZUJsb2NrKiBjYW5kaWRhdGVDb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGlmICh2YWx1ZS5pc0Nl
bGwoKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIHZhbHVlLmFzQ2VsbCgpKTsKQEAgLTE3MTIsNyArMTcxMiw3IEBAIHN0YXRpYyBD
b2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
Y2FuZGlkYXRlQ29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4odmFsdWUuYXNDZWxs
KCkpOwogICAgIH0KIAotICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2sgJiYgVk1JbnNwZWN0b3I6
OmlzVmFsaWRDb2RlQmxvY2soZXhlYywgY2FuZGlkYXRlQ29kZUJsb2NrKSkKKyAgICBpZiAoY2Fu
ZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKGNhbGxGcmFt
ZSwgY2FuZGlkYXRlQ29kZUJsb2NrKSkKICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUNvZGVCbG9j
azsKIAogICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2spCkBAIC0xNzI2LDI0ICsxNzI2LDI0IEBA
IHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQogLy8g
VXNhZ2U6ICR2bS5wcmludCgiY29kZWJsb2NrID0gIiwgJHZtLmNvZGVCbG9ja0Zvcihjb2RlQmxv
Y2tUb2tlbikpCiAvLyBOb3RlOiB5b3UgY2Fubm90IHRvU3RyaW5nKCkgYSBjb2RlQmxvY2sgYmVj
YXVzZSBpdCdzIGFuIGludGVybmFsIG9iamVjdCBhbmQgbm90CiAvLyBhIEpTIG9iamVjdC4gSGVu
Y2UsIHlvdSBjYW5ub3QgZG8gc3RyaW5nIGNvbmNhdGVuYXRpb24gd2l0aCBpdC4KLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29k
ZUJsb2NrRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGV4ZWMpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAg
ICAgV1RGOjpTdHJpbmdQcmludFN0cmVhbSBzdHJlYW07CiAgICAgaWYgKGNvZGVCbG9jaykgewog
ICAgICAgICBzdHJlYW0ucHJpbnQoKmNvZGVCbG9jayk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHN0
cmVhbS50b1N0cmluZygpKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKIC8vIFVzYWdlOiAkdm0uZHVtcFNvdXJjZUZvcihmdW5jdGlvbk9i
aikKIC8vIFVzYWdlOiAkdm0uZHVtcFNvdXJjZUZvcihjb2RlQmxvY2tUb2tlbikKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFNvdXJjZUZvcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1
bXBTb3VyY2VGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZXhlYyk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsK
ICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICBjb2RlQmxvY2stPmR1bXBTb3VyY2UoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTc1MSwyMSArMTc1
MSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBT
b3VyY2VGb3IoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBVc2FnZTogJHZtLmR1bXBCeXRlY29kZUZv
cihmdW5jdGlvbk9iaikKIC8vIFVzYWdlOiAkdm0uZHVtcEJ5dGVjb2RlRm9yKGNvZGVCbG9jaykK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJ5dGVjb2Rl
Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGV4ZWMpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSk7CiAgICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAgY29kZUJsb2NrLT5kdW1w
Qnl0ZWNvZGUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wg
YWRkTGluZUZlZWQpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgYm9vbCBhZGRMaW5lRmVlZCkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBKU1ZhbHVlIGFy
ZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1
ZSBhcmcgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoYXJn
LmlzQ2VsbCgpCiAgICAgICAgICAgICAmJiAhYXJnLmlzT2JqZWN0KCkKICAgICAgICAgICAgICYm
ICFhcmcuaXNTdHJpbmcoKQpAQCAtMTc3Myw3ICsxNzczLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGRvUHJpbnQoRXhlY1N0YXRlKiBleGVjLCBib29sIGFkZExpbmVGZWVkKQogICAgICAgICAg
ICAgZGF0YUxvZyhhcmcpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAg
ICAgU3RyaW5nIGFyZ1N0ciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvV1RGU3RyaW5n
KGV4ZWMpOworICAgICAgICBTdHJpbmcgYXJnU3RyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudChpKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgZGF0YUxvZyhhcmdTdHIpOwog
ICAgIH0KQEAgLTE3ODQsNDEgKzE3ODQsNDEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRvUHJp
bnQoRXhlY1N0YXRlKiBleGVjLCBib29sIGFkZExpbmVGZWVkKQogCiAvLyBQcmludHMgYSBzZXJp
ZXMgb2YgY29tbWEgc2VwYXJhdGUgc3RyaW5ncyB3aXRob3V0IGFwcGVuZGluZyBhIG5ld2xpbmUu
CiAvLyBVc2FnZTogJHZtLmRhdGFMb2coc3RyMSwgc3RyMiwgc3RyMykKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGF0YUxvZyhFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRhdGFMb2coSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBjb25zdCBib29sIGFkZExpbmVGZWVk
ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGRvUHJpbnQoZXhlYywgYWRkTGluZUZlZWQpOworICAgIHJl
dHVybiBkb1ByaW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhZGRMaW5lRmVlZCk7CiB9CiAK
IC8vIFByaW50cyBhIHNlcmllcyBvZiBjb21tYSBzZXBhcmF0ZSBzdHJpbmdzIGFuZCBhcHBlbmRz
IGEgbmV3bGluZS4KIC8vIFVzYWdlOiAkdm0ucHJpbnQoc3RyMSwgc3RyMiwgc3RyMykKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIGNvbnN0IGJvb2wgYWRkTGlu
ZUZlZWQgPSB0cnVlOwotICAgIHJldHVybiBkb1ByaW50KGV4ZWMsIGFkZExpbmVGZWVkKTsKKyAg
ICByZXR1cm4gZG9QcmludChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYWRkTGluZUZlZWQpOwog
fQogCiAvLyBEdW1wcyB0aGUgY3VycmVudCBDYWxsRnJhbWUuCiAvLyBVc2FnZTogJHZtLmR1bXBD
YWxsRnJhbWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
dW1wQ2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAg
ICAgLy8gV2hlbiB0aGUgY2FsbGVycyBjYWxsIHRoaXMgZnVuY3Rpb24sIHRoZXkgYXJlIGV4cGVj
dGluZyB0byBkdW1wIHRoZWlyCiAgICAgLy8gb3duIGZyYW1lLiBTbyBza2lwIDEgZm9yIHRoaXMg
ZnJhbWUuCi0gICAgVk1JbnNwZWN0b3I6OmR1bXBDYWxsRnJhbWUoZXhlYywgMSk7CisgICAgVk1J
bnNwZWN0b3I6OmR1bXBDYWxsRnJhbWUoY2FsbEZyYW1lLCAxKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAvLyBEdW1wcyB0aGUgSlMgc3RhY2suCiAv
LyBVc2FnZTogJHZtLnByaW50U3RhY2soKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EdW1wU3RhY2soRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU3RhY2soSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwogICAgIC8vIFdoZW4gdGhlIGNhbGxlcnMgY2FsbCB0aGlzIGZ1bmN0aW9uLCB0aGV5IGFy
ZSBleHBlY3RpbmcgdG8gZHVtcCB0aGUKICAgICAvLyBzdGFjayBzdGFydGluZyB0aGVpciBvd24g
ZnJhbWUuIFNvIHNraXAgMSBmb3IgdGhpcyBmcmFtZS4KLSAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0
YWNrKGV4ZWMsIDEpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wU3RhY2soY2FsbEZyYW1lLCAxKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xODI3
LDEyICsxODI3LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRHVtcFN0YWNrKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVzYWdlOiAkdm0uZHVtcFJlZ2lzdGVy
cygpIC8vIGR1bXAgdGhlIHJlZ2lzdGVycyBvZiB0aGUgY3VycmVudCBDYWxsRnJhbWUuCiAvLyBG
SVhNRTogQ3VycmVudGx5LCB0aGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBwaHlzaWNhbCBmcmFtZS4g
V2Ugc2hvdWxkIG1ha2UKIC8vIGl0IGR1bXAgdGhlIGxvZ2ljYWwgZnJhbWUgKGkuZS4gYmUgYWJs
ZSB0byBkdW1wIGlubGluZWQgZnJhbWVzIGFzIHdlbGwpLgotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJlZ2lzdGVycyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgdW5zaWduZWQgcmVxdWVzdGVkRnJhbWVJbmRleCA9
IDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1VJbnQzMigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApA
QCAtMTg0Myw3ICsxODQzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICB1bnNp
Z25lZCBmcmFtZUluZGV4ID0gMDsKLSAgICBleGVjLT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKSB7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9yJiB2
aXNpdG9yKSB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
ICAgIGlmIChmcmFtZUluZGV4KysgIT0gcmVxdWVzdGVkRnJhbWVJbmRleCkKICAgICAgICAgICAg
IHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwpAQCAtMTg1NiwxMCArMTg1NiwxMCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMo
RXhlY1N0YXRlKiBleGVjKQogCiAvLyBEdW1wcyB0aGUgaW50ZXJuYWwgbWVtb3J5IGxheW91dCBv
ZiBhIEpTQ2VsbC4KIC8vIFVzYWdlOiAkdm0uZHVtcENlbGwoY2VsbCkKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENlbGwoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2VsbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAg
ICAKQEAgLTE4NjksMjIgKzE4NjksMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EdW1wQ2VsbChFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIEdldHMgdGhlIGRh
dGFMb2cgZHVtcCBvZiB0aGUgaW5kZXhpbmdNb2RlIG9mIHRoZSBwYXNzZWQgdmFsdWUuCiAvLyBV
c2FnZTogJHZtLnByaW50KCJpbmRleGluZ01vZGUgPSAiICsgJHZtLmluZGV4aW5nTW9kZShqc1Zh
bHVlKSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSW5kZXhp
bmdNb2RlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSW5kZXhpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7CiAKICAgICBXVEY6OlN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKLSAgICBz
dHJlYW0ucHJpbnQoSW5kZXhpbmdUeXBlRHVtcChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5n
ZXRPYmplY3QoKS0+aW5kZXhpbmdNb2RlKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKGV4ZWMtPnZtKCksIHN0cmVhbS50b1N0cmluZygpKSk7CisgICAgc3RyZWFtLnBy
aW50KEluZGV4aW5nVHlwZUR1bXAoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRP
YmplY3QoKS0+aW5kZXhpbmdNb2RlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmxpbmVDYXBhY2l0eShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklubGluZUNhcGFjaXR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSkpCisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+aW5saW5lQ2FwYWNp
dHkoKSkpOwogCiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMTg5MiwyMiAr
MTg5MiwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklu
bGluZUNhcGFjaXR5KEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gR2V0cyB0aGUgZGF0YUxvZyBkdW1w
IG9mIGEgZ2l2ZW4gSlMgdmFsdWUgYXMgYSBzdHJpbmcuCiAvLyBVc2FnZTogJHZtLnByaW50KCJ2
YWx1ZSA9ICIgKyAkdm0udmFsdWUoanNWYWx1ZSkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKICAgICBXVEY6OlN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsr
aSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHN0cmVhbS5wcmludCgiLCAiKTsKLSAg
ICAgICAgc3RyZWFtLnByaW50KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAg
c3RyZWFtLnByaW50KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCksIHN0cmVh
bS50b1N0cmluZygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9i
YWxPYmplY3QtPnZtKCksIHN0cmVhbS50b1N0cmluZygpKSk7CiB9CiAKIC8vIEdldHMgdGhlIHBp
ZCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLgogLy8gVXNhZ2U6ICR2bS5wcmludCgicGlkID0gIiAr
ICR2bS5nZXRwaWQoKSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2V0UElEKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldFBJRChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwpAQCAtMTkxNSwzNDIgKzE5MTUsMzQx
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UElEKEV4
ZWNTdGF0ZSopCiAKIC8vIE1ha2UgdGhlIGdsb2JhbE9iamVjdCBoYXZlIGEgYmFkIHRpbWUuIERv
ZXMgbm90aGluZyBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIEpTR2xvYmFsT2JqZWN0LgogLy8gVXNh
Z2U6ICR2bS5oYXZlQUJhZFRpbWUoZ2xvYmFsT2JqZWN0KQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXZlQUJhZFRpbWUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXZlQUJhZFRpbWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7Ci0gICAgSlNWYWx1ZSBvYmpWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgb2JqVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqVmFs
dWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
ZmFsc2UpKTsKIAogICAgIEpTT2JqZWN0KiBvYmogPSBhc09iamVjdChvYmpWYWx1ZS5hc0NlbGwo
KSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPih2bSwgb2JqKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICBKU0ds
b2JhbE9iamVjdCogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZtLCBv
YmopOworICAgIGlmICghdGFyZ2V0KQogICAgICAgICBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7CiAKLSAgICBnbG9iYWxPYmplY3QtPmhhdmVBQmFkVGltZSh2bSk7CisgICAgdGFy
Z2V0LT5oYXZlQUJhZFRpbWUodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRydWUpKTsKIH0KIAogLy8gQ2hlY2tzIGlmIHRoZSBvYmplY3QgKG9yIGl0cyBnbG9iYWwg
aWYgdGhlIG9iamVjdCBpcyBub3QgYSBnbG9iYWwpIGlzIGhhdmluZyBhIGJhZCB0aW1lLgogLy8g
VXNhZ2U6ICR2bS5pc0hhdmluZ0FCYWRUaW1lKG9iaikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZShFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzSGF2aW5nQUJhZFRp
bWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgSlNWYWx1ZSBvYmpWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgb2JqVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
b2JqVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIAogICAgIEpTT2JqZWN0KiBvYmogPSBhc09iamVjdChvYmpWYWx1ZS5hc0Nl
bGwoKSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPih2bSwgb2JqKTsKLSAgICBpZiAoZ2xvYmFsT2JqZWN0KQotICAgICAg
ICBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGlt
ZSgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPih2bSwgb2JqKTsKKyAgICBpZiAodGFyZ2V0KQorICAgICAgICBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHRhcmdldC0+aXNIYXZpbmdBQmFkVGltZSgpKSk7CiAKLSAgICBnbG9i
YWxPYmplY3QgPSBvYmotPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQor
ICAgIHRhcmdldD0gb2JqLT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5pc0hhdmlu
Z0FCYWRUaW1lKCkpKTsKIH0KIAogLy8gQ3JlYXRlcyBhIG5ldyBnbG9iYWwgb2JqZWN0LgogLy8g
VXNhZ2U6ICR2bS5jcmVhdGVHbG9iYWxPYmplY3QoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZSh2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBKU0dsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVQcm94eShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgSlNPYmplY3QqIGpzVGFyZ2V0ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2VsbCgpKTsK
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSwgSW1wdXJlUHJveHlUeXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJv
eHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc1RhcmdldC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKSwgSW1wdXJlUHJveHlUeXBlKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpT
UHJveHk6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBqc1RhcmdldCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShwcm94eSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBS
dW50aW1lQXJyYXkqIGFycmF5ID0gUnVudGltZUFycmF5OjpjcmVhdGUoZXhlYyk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2soY2FsbEZyYW1lKTsKKyAgICBSdW50aW1lQXJyYXkqIGFycmF5ID0gUnVu
dGltZUFycmF5OjpjcmVhdGUoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFycmF5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVOdWxsUm9wZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU51bGxSb3BlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1JvcGVTdHJpbmc6OmNyZWF0ZU51bGxGb3JUZXN0aW5nKHZt
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jl
YXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIEpT
VmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTT2JqZWN0KiBkZWxlZ2F0ZSA9IG51bGxwdHI7
CiAgICAgaWYgKHRhcmdldC5pc09iamVjdCgpKQogICAgICAgICBkZWxlZ2F0ZSA9IGFzT2JqZWN0
KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbXB1cmVHZXR0
ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051
bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbXB1cmVHZXR0ZXI6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgSW1wdXJlR2V0dGVyKiBy
ZXN1bHQgPSBJbXB1cmVHZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBkZWxlZ2F0ZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gQ3Vz
dG9tR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwganNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gQ3VzdG9tR2V0dGVyOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgIEN1c3RvbUdl
dHRlciogcmVzdWx0ID0gQ3VzdG9tR2V0dGVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVET01KSVROb2RlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVROb2Rl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgRE9NSklU
R2V0dGVyOjpjcmVhdGUodm0sIERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKSkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gRE9NSklUTm9kZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIERP
TUpJVEdldHRlcjo6Y3JlYXRlKHZtLCBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBqc051bGwoKSkpKTsKICAgICBET01KSVROb2RlKiByZXN1bHQgPSBET01K
SVROb2RlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwganNOdWxsKCkpOwogICAgIERPTUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0
dGVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJD
b21wbGV4T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJDb21w
bGV4OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNO
dWxsKCkpOwotICAgIERPTUpJVEdldHRlckNvbXBsZXgqIHJlc3VsdCA9IERPTUpJVEdldHRlckNv
bXBsZXg6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0ZXJD
b21wbGV4KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9N
SklURnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklU
RnVuY3Rpb25PYmplY3QqIHJlc3VsdCA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpOworICAgIERPTUpJVEZ1bmN0aW9uT2JqZWN0KiByZXN1bHQg
PSBET01KSVRGdW5jdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xh
c3NPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOwotICAgIERPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3QqIHJlc3VsdCA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBET01KSVRDaGVja1N1
YkNsYXNzT2JqZWN0KiByZXN1bHQgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVy
QmFzZUpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBqc051bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAg
ICAgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KiByZXN1bHQgPSBET01KSVRHZXR0ZXJCYXNlSlNP
YmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdQYXJzZXIoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShX
YXNtU3RyZWFtaW5nUGFyc2VyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2FzbVN0cmVhbWluZ1BhcnNlcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KICNlbmRpZgogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNzb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0
YXRpY0N1c3RvbUFjY2Vzc29yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RhdGlj
Q3VzdG9tQWNjZXNzb3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwo
KSk7CiAgICAgYXV0byogcmVzdWx0ID0gU3RhdGljQ3VzdG9tQWNjZXNzb3I6OmNyZWF0ZSh2bSwg
c3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVy
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGJhc2UgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGlmICghYmFzZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgZGVsZWdhdGUgPSBleGVjLT5hcmd1
bWVudCgxKTsKKyAgICBKU1ZhbHVlIGRlbGVnYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
ICAgICBpZiAoIWRlbGVnYXRlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSW1wdXJlR2V0dGVyKiBpbXB1cmVHZXR0ZXIgPSBq
c0R5bmFtaWNDYXN0PEltcHVyZUdldHRlcio+KHZtLCBhc09iamVjdChiYXNlLmFzQ2VsbCgpKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXB1cmVHZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIEltcHVyZUdldHRlciJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJhcmd1bWVudCBpcyBub3Qg
YW4gSW1wdXJlR2V0dGVyIl9zKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAg
ICAgfQogICAgIGltcHVyZUdldHRlci0+c2V0RGVsZWdhdGUodm0sIGFzT2JqZWN0KGRlbGVnYXRl
LmFzQ2VsbCgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVC
dWlsdGluKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxIHx8ICFleGVjLT5hcmd1bWVudCgwKS5pc1N0
cmluZygpKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWNhbGxG
cmFtZS0+YXJndW1lbnQoMCkuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmlu
ZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBmdW5jdGlvblRl
eHQgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+dmFsdWUoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRleHQsIHsgfSk7Ci0gICAg
SlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvbyIpLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkt
Pmxpbmsodm0sIG51bGxwdHIsIHNvdXJjZSksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZv
byIpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0
cnVjdCktPmxpbmsodm0sIG51bGxwdHIsIHNvdXJjZSksIGdsb2JhbE9iamVjdCk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFByaXZhdGVQ
cm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAyIHx8ICFleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKQorICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIgfHwgIWNhbGxGcmFtZS0+YXJndW1lbnQoMSku
aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogCi0gICAg
U3RyaW5nIHN0ciA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHN0ciA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShj
YWxsRnJhbWUpOwogCiAgICAgU3ltYm9sSW1wbCogc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+
bG9va1VwUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgc3RyKSk7CiAgICAg
aWYgKCFzeW1ib2wpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJV
bmtub3duIHByaXZhdGUgbmFtZS4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiVW5rbm93biBwcml2YXRlIG5hbWUuIik7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKS5nZXQoZXhl
Yywgc3ltYm9sKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuZ2V0KGNhbGxGcmFtZSwgc3ltYm9sKSkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3Qo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVSb290KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSb290OjpjcmVhdGUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoUm9vdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRl
RWxlbWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhl
YywgIkNhbm5vdCBjcmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iX3MpKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgcm9vdCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkNhbm5v
dCBjcmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iX3MpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcm9vdCkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HZXRFbGVtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0
PFJvb3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFt
aWNDYXN0PFJvb3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFyb290
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEVs
ZW1lbnQqIHJlc3VsdCA9IHJvb3QtPmVsZW1lbnQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCA/IHJlc3VsdCA6IGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVNpbXBsZU9iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZVNpbXBsZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU2ltcGxlT2JqZWN0
OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoU2ltcGxlT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEhpZGRl
blZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uR2V0SGlkZGVuVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVj
dCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBs
ZU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbnZhbGlk
IHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGdldEhpZGRlblZhbHVl
IHRlc3QgZnVuY3Rpb24iX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaW1wbGVPYmplY3QtPmhpZGRlblZhbHVl
KCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNl
dEhpZGRlblZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBs
ZU9iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
IXNpbXBsZU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBzZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIHNldEhpZGRl
blZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUo
KTsKICAgICB9Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIHNpbXBsZU9iamVjdC0+
c2V0SGlkZGVuVmFsdWUodm0sIHZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1
bmN0aW9uc09uU3RhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGF1dG8qIHNo
YWRvd0NoaWNrZW4gPSB2bS5zaGFkb3dDaGlja2VuKCkpIHsKICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRvd0NoaWNrZW4tPmZ1bmN0
aW9uc09uU3RhY2soZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRv
d0NoaWNrZW4tPmZ1bmN0aW9uc09uU3RhY2soY2FsbEZyYW1lKSk7CiAgICAgfQogCi0gICAgSlNB
cnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGV4ZWMs
ICZ2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVz
IHsKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgJnZtLCBbJl0gKFN0YWNrVmlz
aXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgewogICAgICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBpZiAodmlzaXRvci0+aXNJbmxpbmVk
RnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAg
ICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICByZXN1bHQtPnB1c2goZXhlYywganNDYXN0PEpT
T2JqZWN0Kj4odmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgcmVzdWx0LT5w
dXNoKGNhbGxGcmFtZSwganNDYXN0PEpTT2JqZWN0Kj4odmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxs
KCkpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7IC8vIFRoaXMg
ZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZnJvbSB0ZXN0cy4KICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6Q29udGludWU7CiAgICAgfSk7CkBAIC0yMjU4LDgxICsyMjU3LDgxIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1bmN0
aW9uc09uU3RhY2soRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEdsb2Jh
bENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRl
Y2xhcmF0aW9uU2hvdWxkTm90VGhyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KGZhbHNlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZpbmRUeXBlRm9yRXhwcmVzc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKICAgICB2bS50eXBl
UHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBBUEk6IGZ1
bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uIl9zKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25W
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5p
c0Z1bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRP
YmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFy
Z3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhl
eGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFz
U3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFN0
cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmlu
ZygpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzb3VyY2VD
b2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNl
dCgpKTsKICAgICAKICAgICBTdHJpbmcganNvblN0cmluZyA9IHZtLnR5cGVQcm9maWxlcigpLT50
eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNoRGVz
Y3JpcHRvck5vcm1hbCwgb2Zmc2V0LCBleGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB2bSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGNhbGxGcmFtZSwganNvblN0cmluZykp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJldHVy
blR5cGVGb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZXR1cm5UeXBlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0udHlwZVByb2ZpbGVyKCkpOwogICAgIHZt
LnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgImpzYyBUZXN0aW5nIEFQ
STogZnVuY3Rpb25SZXR1cm5UeXBlRm9yIl9zKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1
bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmpl
Y3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIHVuc2lnbmVkIG9mZnNldCA9IGV4ZWN1dGFi
bGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCh2bSk7CiAgICAgU3RyaW5nIGpzb25TdHJpbmcg
PSB2bS50eXBlUHJvZmlsZXIoKS0+dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0
KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiwgb2Zmc2V0LCBleGVj
dXRhYmxlLT5zb3VyY2VJRCgpLCB2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09O
UGFyc2UoZXhlYywganNvblN0cmluZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNP
TlBhcnNlKGNhbGxGcmFtZSwganNvblN0cmluZykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUu
aXNPYmplY3QoKSAmJiB2YWx1ZS5nZXRPYmplY3QoKS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKTsKICAgICB2YWx1ZS5nZXRPYmplY3QoKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0p
OwogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdl
cyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOwog
ICAgIHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+ZHVtcERhdGEoKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2lj
QmxvY2tFeGVjdXRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9u
VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0
aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0Nl
bGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKLSAgICBSRUxFQVNFX0FTU0VS
VChleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBTdHJpbmcgc3Vic3RyaW5nID0g
YXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJz
dHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2FsbEZyYW1l
KTsKICAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3
KCkudG9TdHJpbmcoKTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlu
cyhzdWJzdHJpbmcpKTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJz
dHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAgLTIzNDEsMTgg
KzIzNDAsMTggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25I
YXNCYXNpY0Jsb2NrRXhlY3V0ZWQoRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihoYXNFeGVjdXRlZCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJh
c2ljQmxvY2tFeGVjdXRpb25Db3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKLSAg
ICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNT
RVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25W
YWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKLSAgICBSRUxF
QVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBTdHJpbmcgc3Vi
c3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0
cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUo
Y2FsbEZyYW1lKTsKICAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4
dC5jb250YWlucyhzdWJzdHJpbmcpKTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQu
ZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAg
LTIzNjEsNyArMjM2MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoZXhlY3V0aW9uQ291bnQpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6KEV4ZWNT
dGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJs
ZUV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6
eigpID0gdHJ1ZTsKQEAgLTI0MTIsMjIgKzI0MTEsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYywgT3B0aW9uU2V0PENv
ZGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZURlYnVnZ2VyTW9k
ZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShleGVjLCB7IENv
ZGVHZW5lcmF0aW9uTW9kZTo6RGVidWdnZXIgfSk7CisgICAgcmV0dXJuIGNoYW5nZURlYnVnZ2Vy
TW9kZVdoZW5JZGxlKGNhbGxGcmFtZSwgeyBDb2RlR2VuZXJhdGlvbk1vZGU6OkRlYnVnZ2VyIH0p
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2Fi
bGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5J
ZGxlKGV4ZWMsIHsgfSk7CisgICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxlKGNh
bGxGcmFtZSwgeyB9KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EZWxldGVBbGxDb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxldGVBbGxDb2RlV2hlbklkbGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAg
IFZNKiB2bSA9ICZnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0tPndoZW5JZGxlKFs9XSAoKSB7
CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIHZtLT5k
ZWxldGVBbGxDb2RlKFByZXZlbnRDb2xsZWN0aW9uQW5kRGVsZXRlQWxsQ29kZSk7CkBAIC0yNDM1
LDQxICsyNDM0LDQxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdENv
dW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGV4ZWMtPnZtKCkuaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcC5nbG9i
YWxPYmplY3RDb3VudCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkpOwotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChnbG9iYWxPYmplY3Qp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogcmVzdWx0ID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwog
ICAgIGlmICghcHJvcGVydHkuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTdHJpbmco
cHJvcGVydHkpLT50b0lkZW50aWZpZXIoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBh
c1N0cmluZyhwcm9wZXJ0eSktPnRvSWRlbnRpZmllcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgdmFsdWUu
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgdmFsdWUuZ2V0
UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0yNDgx
LDE1ICsyNDgwLDE1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdl
dHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0ZXIqPih2bSwgZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2Fz
dDxHZXR0ZXJTZXR0ZXIqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFnZXR0ZXJTZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIgdGVzdCBmdW5j
dGlvbjogYXJndW1lbnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0ZXJGcm9t
R2V0dGVyU2V0dGVyIHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRlclNldHRl
ciJfcyk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMjQ5
OCwyMCArMjQ5NywxOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZ2V0dGVyKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3Vz
dG9tVGVzdEdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsdGFCZXR3ZWVuQnV0dGVyZmxpZXMoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWx0YUJl
dHdlZW5CdXR0ZXJmbGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIGEgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBKU09iamVjdCogYiA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogYSA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgSlNPYmplY3QqIGIgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAg
IGlmICghYSB8fCAhYikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihQ
TmFOKSk7CiAKQEAgLTI1MjMsMjAgKzI1MjEsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyhFeGVjU3RhdGUqIGUK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KGRlbHRhKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRvdGFsR0NUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxHQ1RpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC50b3RhbEdD
VGltZSgpLnNlY29uZHMoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblBhcnNlQ291bnQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGFyc2VDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbFBhcnNlQ291bnQubG9hZCgpKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNXYXNtU3Vw
cG9ydGVkKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklzV2FzbVN1cHBvcnRlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1iZWRkZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbWJlZGRlci5oCmluZGV4IGEyMzc5
ZmQ1ODljODlkZjYzNTdlNmU0NDFiZWQyYTUxODczOWNhM2UuLjk3YmIxMGM5OGU4Y2Y5M2VhNzNk
MTk4NTllYTc4YTY0OWQ4NjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21FbWJlZGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21F
bWJlZGRlci5oCkBAIC0zNiw3ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiAKIG5hbWVzcGFjZSBXYXNtIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCBkMWIzOGExNDhhMmI0OTQxZmNlNjkyNzI3MTkzZWFj
ZjE3YTBmZDIxLi4zOTQ2NGE4YWMwMzM4MTNmMjc3MjA0MWU2OGRhN2QwMDM5NzRjMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAt
NjksOSArNjksOSBAQCBGT1JfRUFDSF9XRUJBU1NFTUJMWV9DT05TVFJVQ1RPUl9UWVBFKERFRklO
RV9DQUxMQkFDS19GT1JfQ09OU1RSVUNUT1IpCiAKICN1bmRlZiBERUZJTkVfQ0FMTEJBQ0tfRk9S
X0NPTlNUUlVDVE9SCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlDb21waWxlRnVuYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0KIApAQCAtMTU4LDIzICsxNTgsMjIgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1
bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWYKICAg
ICB9KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlz
ZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVh
dGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gY2F0Y2hT
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgICAgICBWZWN0b3I8dWludDhfdD4g
c291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5hcmd1
bWVudCgwKSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VC
dWZmZXJGcm9tVmFsdWUodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAK
ICAgICAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICAg
ICAgcmVqZWN0KGV4ZWMsIGNhdGNoU2NvcGUsIHByb21pc2UpOworICAgICAgICAgICAgcmVqZWN0
KGNhbGxGcmFtZSwgY2F0Y2hTY29wZSwgcHJvbWlzZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKGV4ZWMsIHByb21pc2Us
IFdURk1vdmUoc291cmNlKSk7CisgICAgICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRl
QXN5bmNJbnRlcm5hbChjYWxsRnJhbWUsIHByb21pc2UsIFdURk1vdmUoc291cmNlKSk7CiAKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH0K
QEAgLTMwNCw0MiArMzAzLDQxIEBAIHZvaWQgSlNXZWJBc3NlbWJseTo6d2ViQXNzZW1ibHlNb2R1
bGVJbnN0YW50aW5hdGVBc3luYyhFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzCiAgICAgQ0xFQVJf
QU5EX1JFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgdm9pZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21p
c2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgewogICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwogICAgICAgICBKU09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1w
b3J0QXJndW1lbnQuZ2V0T2JqZWN0KCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaW1wb3J0QXJn
dW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSkgewotICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLAorICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KGNhbGxGcmFtZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwKICAgICAg
ICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIG11
c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBy
dW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1bWVudCkpKTsKICAgICAgICAgICAgIENM
RUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIEpTVmFsdWU6OmVuY29kZShw
cm9taXNlLT5wcm9taXNlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICAgICAgSlNWYWx1
ZSBmaXJzdEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAgICAgIGlm
IChhdXRvKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwg
Zmlyc3RBcmd1bWVudCkpCi0gICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHBy
b21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0
ZVByaXZhdGVNb2R1bGVLZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBXYXNtOjpDcmVhdGlv
bk1vZGU6OkZyb21KUyk7CisgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGNhbGxGcmFt
ZSwgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdhc206OkNy
ZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
b21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRPYmpl
Y3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpG
cm9tSlMpOworICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgY2FsbEZy
YW1lLCBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVL
ZXkoKSwgZmlyc3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5k
SW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKICAgICB9CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRh
dGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gW2Jhc2UsIGJ5dGVTaXplXSA9IGdldFdhc21CdWZm
ZXJGcm9tVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gW2Jhc2UsIGJ5
dGVTaXplXSA9IGdldFdhc21CdWZmZXJGcm9tVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0
aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQg
dG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGlu
ZyB3aWxsIE9PTS4KQEAgLTM0NywyMCArMzQ1LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBhcnNlQW5kVmFsaWRhdGVN
b2R1bGUoYmFzZSwgYnl0ZVNpemUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAK
LSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlD
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlz
ZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qp
OwogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgdm0u
cHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZN
b3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZykKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwg
ZXhlYywgcHJvbWlzZSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBDb21waWxlU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4ganNjLCBv
bmx5IGluIGJyb3dzZXIgZW52aXJvbm1lbnQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0zNzEsMjEgKzM2OCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBK
U1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQ
cm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHsKICAgICAgICAgYXV0byBjYXRjaFNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVu
dCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9
IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWltcG9y
dEFyZ3VtZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkpIHsKLSAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdChjYWxsRnJhbWUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsCiAg
ICAgICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0
ZVN0cmVhbWluZyBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSk7CiAg
ICAgICAgICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0z
OTYsNyArMzkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKgogICAgICAgICAgICAgICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RG
TW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBj
b250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhl
IHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5
J3MgdHlwZS4KLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgZXhlYywgcHJvbWlz
ZSwgZXhlYy0+YXJndW1lbnQoMCksIGltcG9ydE9iamVjdCk7CisgICAgICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWlu
ZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSwgaW1wb3J0T2JqZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gSW5zdGFudGlhdGVTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBqc2MsIG9ubHkgaW4g
YnJvd3NlciBlbnZpcm9ubWVudC4KICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAppbmRl
eCAwMTcxYzE0YWI0NzM0NDAwOTAyM2EzZTQxYWE0ZDZjYmMwZTQ2M2I1Li43MWU0MWRjNWQ4ZjAw
NjY3MjMyMWI1OTg1ZTExOTk2YzU4N2E3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseS5oCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIEpTV2ViQXNz
ZW1ibHkgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNXZWJBc3NlbWJs
eShWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVy
bmFsKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFt
aW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Yy
ZDE3ZGYyNzJiOTdkYmMwNjM4ZjFkZjc3MGMwOTBlYTliMmVjYi4uYzczNjg1Y2RmM2UwYWU1NTA4
NmUzZmM5N2FhNmI2MzdlMTA1ZTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTQ0LDIxICs0NCwyMSBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZQogIEBl
bmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgYXV0byYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAg
SlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBhdXRvKiBzdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1
cmUsIG1lc3NhZ2UpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHN0
cnVjdHVyZSwgbWVzc2FnZSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0
dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anND
YWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+d2ViQXNzZW1ibHlDb21waWxlRXJy
b3JTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhp
bmcsIGZhbHNlKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Us
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCiBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGRkZTQyYzU2ZjdlNTU1Y2Q3
NjA0NGZhMWM4MzE3ZWYxYjIzMGZiOTYuLmIxZTY0OWY3YmI2NzNkODhhMTY5ZmZhNDA5NTM2MDVh
ZDg1MDE5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC01OCwxMSArNTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJB
c3NlbWJseUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUZ1bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
V2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5RnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNt
RnVuY3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSB3YXNtRnVu
Y3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CiAgICAgY29uc3QgV2FzbTo6U2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsK
IApAQCAtNzgsMTQgKzc4LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBXYXNtOjpJbnN0
YW5jZSogd2FzbUluc3RhbmNlID0gJmluc3RhbmNlLT5pbnN0YW5jZSgpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KTsgKythcmdJbmRleCkgewotICAgICAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KGFy
Z0luZGV4KTsKKyAgICAgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGFyZ0lu
ZGV4KTsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpKSB7CiAg
ICAgICAgIGNhc2UgV2FzbTo6STMyOgotICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2Rl
KGFyZy50b0ludDMyKGV4ZWMpKTsKKyAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShh
cmcudG9JbnQzMihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdhc206OkZ1bmNyZWY6IHsKICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IoZXhlYywgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQg
d2FzbSBmdW5jdGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yKGNhbGxGcmFtZSwgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2Fz
bSBmdW5jdGlvbiIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdhc206OkFueXJlZjoKQEAgLTk0LDEwICs5NCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXYXNtOjpGMzI6Ci0gICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0
d2lzZV9jYXN0PHVpbnQzMl90PihhcmcudG9GbG9hdChleGVjKSkpOworICAgICAgICAgICAgYXJn
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYXJnLnRvRmxvYXQoY2Fs
bEZyYW1lKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6RjY0Ogot
ICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50NjRfdD4o
YXJnLnRvTnVtYmVyKGV4ZWMpKSk7CisgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUo
Yml0d2lzZV9jYXN0PHVpbnQ2NF90PihhcmcudG9OdW1iZXIoY2FsbEZyYW1lKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6Vm9pZDoKICAgICAgICAgY2FzZSBXYXNt
OjpGdW5jOgpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBU
aGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3Rh
Y2sgb3ZlcmZsb3csIGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKICAgICAvLyBoYW5kbGVyIG1pZ2h0
IHJlYWQgdGhlIGdsb2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVlLgogICAgIFByb3RvQ2FsbEZy
YW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2Fz
bUZ1bmN0aW9uLCBjb250ZXh0LCBhcmdDb3VudCwgYXJncyk7CisgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChudWxscHRyLCBnbG9iYWxPYmplY3QsIHdhc21GdW5jdGlvbiwgY29udGV4dCwgYXJnQ291
bnQsIGFyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0
aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2CiAgICAgV2FzbTo6SW5zdGFu
Y2UqIHByZXZXYXNtSW5zdGFuY2UgPSB2bS53YXNtQ29udGV4dC5sb2FkKCk7CkBAIC0xMjgsNyAr
MTI4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2Vt
Ymx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFt
ZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0
ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3Bh
Y2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRv
IHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgogICAgICAgICBp
ZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNl
ZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpKTsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKICAgICBBU1NFUlQod2Fz
bUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDY4NDJmOTU4YmQ5OGE4M2FkNTM5MWJkYmFmODIyY2EzMjU2MWNlMTMuLjA4ZjQ0YTk3NDE0
ZjRiMDVjZjhmMTI4NTEwZmU3ODQ0YjA3ZjY4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmNwcApAQCAtNTgsMzggKzU4LDM4IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfCiAKIHVz
aW5nIFdhc206OlBsYW47CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gSWYg
bW9kdWxlT2JqZWN0IGlzIG5vdCBhIFdlYkFzc2VtYmx5Lk1vZHVsZSBpbnN0YW5jZSwgYSBUeXBl
RXJyb3IgaXMgdGhyb3duLgotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2Vt
Ymx5TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxl
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgImZpcnN0IGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5
Lkluc3RhbmNlIG11c3QgYmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUiX3MsIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgZXhlYy0+YXJndW1lbnQoMCkpKSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
c2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJmaXJzdCBhcmd1bWVudCB0byBXZWJB
c3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIGEgV2ViQXNzZW1ibHkuTW9kdWxlIl9zLCBkZWZhdWx0
U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKSkpOwogCiAgICAgLy8gSWYgdGhlIGltcG9ydE9iamVjdCBwYXJhbWV0ZXIgaXMgbm90
IHVuZGVmaW5lZCBhbmQgVHlwZShpbXBvcnRPYmplY3QpIGlzIG5vdCBPYmplY3QsIGEgVHlwZUVy
cm9yIGlzIHRocm93bi4KLSAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CiAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVj
dCgpOwogICAgIGlmICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2Jq
ZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3Nl
bWJseS5JbnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRT
b3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJzZWNvbmQgYXJndW1lbnQgdG8g
V2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2JqZWN0Il9zLCBk
ZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGltcG9ydEFyZ3Vt
ZW50KSkpKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVj
dHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhl
YywgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4obW9k
dWxlLT5tb2R1bGUoKSksIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUo
dm0sIGNhbGxGcmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxl
S2V5KCksIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206
Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSksIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZp
bmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZt
Lndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBpbXBvcnRPYmplY3QsIFdhc206
OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2
bSwgY2FsbEZyYW1lLCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4
dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwg
Jldhc206Ondhc21Ub0pTRXhjZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1v
ZGU6OkZyb21KUyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJs
eUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5Lkluc3Rh
bmNlIikpOwogfQogCiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCmluZGV4IGY4MWIyYTFkNjEzMTFjNDFkOWVhNjlhNmQxMjBlNTgyMWJm
YTg1ZWIuLmNhNmY5NDI1NWExZjkzNDlmMWI3YmY1NWZjMGU2MDIyNzEwODE5YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
fQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaCIKQEAgLTYx
LDEyICs2MSwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IGdldEluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b0Z1bmNFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGV4ZWMsIHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBn
ZXRJbnN0YW5jZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoaW5zdGFuY2UtPm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDczYzI2M2RkZmQzY2Q4ZGNiNTA4OTI5ZWVm
MTE5ZjA2YmRjMDUxMC4uMzQxMDhhMDljMzQ5NTc4Y2NlZDI0NTMwZjc3Y2Q4ZDMzYjQ5ZDBmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDIxICs0NCwyMSBAQCBj
b25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6cwogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlMaW5rRXJyb3JT
dHJ1Y3R1cmUoKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVj
dC0+d2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGV4ZWMs
IHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGNhbGxGcmFt
ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+d2ViQXNzZW1ibHlMaW5rRXJy
b3JTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhp
bmcsIGZhbHNlKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseUxpbmtFcnJvclN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51
bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCiBXZWJBc3NlbWJseUxpbmtFcnJvckNv
bnN0cnVjdG9yKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIHRo
aXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IDIzNzEyNjdiNWUz
Njg3Y2FiM2NiYWRmNzE3MWEyOGQ0NzRkMDk2YjUuLmE3YzFjNjFjYTM3OWJkM2NmOGY2ZmU4ZDUx
NTNlZmY5YTczODEyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC00OCwzMiAr
NDgsMzIgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW4KICBAZW5kCiAgKi8KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4
YWN0bHkgb25lIGFyZ3VtZW50Il9zKSkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFz
c2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Il9zKSkpOwogCiAgICAg
SlNPYmplY3QqIG1lbW9yeURlc2NyaXB0b3I7CiAgICAgewotICAgICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRo
cm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVj
dHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Nj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVj
dHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKICAgICAgICAgbWVt
b3J5RGVzY3JpcHRvciA9IGpzQ2FzdDxKU09iamVjdCo+KGFyZ3VtZW50KTsKICAgICB9CiAKICAg
ICBXYXNtOjpQYWdlQ291bnQgaW5pdGlhbFBhZ2VDb3VudDsKICAgICB7CiAgICAgICAgIElkZW50
aWZpZXIgaW5pdGlhbCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbml0aWFsIik7Ci0g
ICAgICAgIEpTVmFsdWUgbWluU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMs
IGluaXRpYWwpOworICAgICAgICBKU1ZhbHVlIG1pblNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0
b3ItPmdldChjYWxsRnJhbWUsIGluaXRpYWwpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICB1aW50MzJfdCBzaXplID0g
dG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBtaW5TaXplVmFsdWUpOworICAgICAgICB1aW50MzJf
dCBzaXplID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIG1pblNpemVWYWx1ZSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGlmICghV2FzbTo6UGFnZUNvdW50Ojppc1ZhbGlkKHNpemUpKQotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBh
Z2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdlIGNvdW50
IGlzIHRvbyBsYXJnZSJfcykpKTsKICAgICAgICAgaWYgKFdhc206OlBhZ2VDb3VudChzaXplKS5i
eXRlcygpID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJv
cihjYWxsRnJhbWUpKSk7CiAgICAgICAgIGluaXRpYWxQYWdlQ291bnQgPSBXYXNtOjpQYWdlQ291
bnQoc2l6ZSk7CiAgICAgfQogCkBAIC04MiwyMyArODIsMjMgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUq
IGV4ZWMKICAgICAgICAgLy8gSW4gV2ViSURMLCAicHJlc2VudCIgbWVhbnMgdGhhdCBbW0dldF1d
IHJlc3VsdCBpcyB1bmRlZmluZWQsIG5vdCBbW0hhc1Byb3BlcnR5XV0gcmVzdWx0LgogICAgICAg
ICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtZGljdGlvbmFyaWVzCiAg
ICAgICAgIElkZW50aWZpZXIgbWF4aW11bSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
YXhpbXVtIik7Ci0gICAgICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRv
ci0+Z2V0KGV4ZWMsIG1heGltdW0pOworICAgICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1l
bW9yeURlc2NyaXB0b3ItPmdldChjYWxsRnJhbWUsIG1heGltdW0pOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAo
IW1heFNpemVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCBzaXpl
ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBtYXhTaXplVmFsdWUpOworICAgICAgICAgICAg
dWludDMyX3Qgc2l6ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBtYXhTaXplVmFs
dWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghV2FzbTo6UGFnZUNvdW50Ojppc1ZhbGlkKHNp
emUpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHku
TWVtb3J5ICdtYXhpbXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSJfcykpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5NZW1v
cnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkpOwogICAgICAgICAgICAg
bWF4aW11bVBhZ2VDb3VudCA9IFdhc206OlBhZ2VDb3VudChzaXplKTsKIAogICAgICAgICAgICAg
aWYgKGluaXRpYWxQYWdlQ291bnQgPiBtYXhpbXVtUGFnZUNvdW50KSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LAotICAgICAgICAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICInbWF4aW11bScg
cGFnZSBjb3VudCBtdXN0IGJlIHRoYW4gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5p
dGlhbCcgcGFnZSBjb3VudCJfcykpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwKKyAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICInbWF4aW11bScgcGFnZSBjb3Vu
dCBtdXN0IGJlIHRoYW4gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlhbCcgcGFn
ZSBjb3VudCJfcykpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGF1
dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwor
ICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGNhbGxGcmFt
ZSwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGlu
aXRpYWxQYWdlQ291bnQsIG1heGltdW1QYWdlQ291bnQsCkBAIC0xMDYsMTggKzEwNiwxOCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5j
VHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsgfSwKICAgICAgICAgWyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNz
LCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNv
dW50KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5l
d1BhZ2VDb3VudCk7IH0pOwogICAgIGlmICghbWVtb3J5KQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVt
b3J5RXJyb3IoZXhlYykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoY2Fs
bEZyYW1lKSkpOwogCiAgICAganNNZW1vcnktPmFkb3B0KG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWVtb3J5KTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNZW1vcnko
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEpTV2ViQXNzZW1ibHlNZW1vcnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHRocm93U2NvcGUsICJXZWJB
c3NlbWJseS5NZW1vcnkiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgdGhyb3dT
Y29wZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSIpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3RvciogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiB0aGlzUHJvdG90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IDE0NDFhOWI0ZjVhNDIyOWI2OWJlNWI2
NjQwYTk3MDQ0NzBjMmMwODQuLmMxNDIxMTc1NDBlYTRmODEzOGY5NDQ1NTI5M2EzZmEyN2MwNDVm
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0Lmgi
CkBAIC02NiwzMSArNjYsMzEgQEAgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5TWVtb3J5KiBn
ZXRNZW1vcnkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgdmEKICAgICByZXR1cm4g
bWVtb3J5OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVt
b3J5UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkq
IG1lbW9yeSA9IGdldE1lbW9yeShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoY2FsbEZyYW1lLCB2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICAKLSAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAotICAgIFdhc206OlBhZ2VDb3VudCBy
ZXN1bHQgPSBtZW1vcnktPmdyb3codm0sIGV4ZWMsIGRlbHRhKTsKKyAgICBXYXNtOjpQYWdlQ291
bnQgcmVzdWx0ID0gbWVtb3J5LT5ncm93KHZtLCBjYWxsRnJhbWUsIGRlbHRhKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdC5wYWdlQ291bnQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQ
cm90b0Z1bmNCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZXhl
Yywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVt
b3J5ID0gZ2V0TWVtb3J5KGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVy
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNmJhYjk0ZWM5OWRjMGZmMzE3ODA2ZDhjNWQ5Y2UyNDMzN2RmMmI5NS4u
ZWJmZTdhNzcyODFiMzlhY2ZhNjQ0MjUyMzk2YzJiZDQyZjExMDY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAKQEAgLTQ2LDkgKzQ2LDkgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TW9kdWxlSW1wb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmx1dC5oIgpAQCAtNjUsMjMgKzY1LDIyIEBAIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luCiAgQGVuZAogICovCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKSk7CisgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihjYWxsRnJhbWUpKSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5
bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFz
c2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHku
TW9kdWxlIGFyZ3VtZW50Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxG
cmFtZSwgIldlYkFzc2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyBjYWxsZWQgd2l0aCBub24g
V2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOwogCi0gICAgY29uc3QgU3RyaW5nIHNl
Y3Rpb25OYW1lU3RyaW5nID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4
ZWMpOworICAgIGNvbnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAg
IGNvbnN0IGF1dG8mIGN1c3RvbVNlY3Rpb25zID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigp
LmN1c3RvbVNlY3Rpb25zOwpAQCAtODksOSArODgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBpZiAoU3RyaW5nOjpmcm9tVVRGOChzZWN0aW9uLm5hbWUpID09IHNlY3Rpb25OYW1l
U3RyaW5nKSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoc2VjdGlvbi5wYXlsb2FkLmRhdGEoKSwgc2VjdGlvbi5wYXlsb2FkLnNpemUoKSk7CiAgICAg
ICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZXhlYykpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUpKSk7CiAKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICAg
ICAgcmVzdWx0LT5wdXNoKGNhbGxGcmFtZSwgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTk5LDE3ICs5OCwxNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2Vj
dGlvbnMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUlt
cG9ydHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseU1vZHVsZUltcG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWlj
Q2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlN
b2R1bGUqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyBj
YWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dT
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1vZHVsZS5pbXBv
cnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CiAK
LSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIs
IGdsb2JhbE9iamVjdCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShjYWxsRnJhbWUsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogCiAgICAgY29uc3QgYXV0byYgaW1wb3J0cyA9IG1vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRzOwpAQCAtMTE4LDEyICsxMTYsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibmFtZSIpOwogICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAia2luZCIpOwogICAgICAgICBmb3IgKGNvbnN0IFdhc206OkltcG9ydCYg
aW1wIDogaW1wb3J0cykgewotICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbW9kdWxlLCBq
c1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXAubW9kdWxlKSkpOwogICAgICAgICAgICAg
b2JqLT5wdXREaXJlY3Qodm0sIG5hbWUsIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KGlt
cC5maWVsZCkpKTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmlu
Zyh2bSwgU3RyaW5nKG1ha2VTdHJpbmcoaW1wLmtpbmQpKSkpOwotICAgICAgICAgICAgcmVzdWx0
LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBv
YmopOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTMxLDE3ICsxMjksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4o
dm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUg
PSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHku
TW9kdWxlIGFyZ3VtZW50Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxG
cmFtZSwgIldlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3Nl
bWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CiAKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgSlNBcnJh
eSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCiAg
ICAgY29uc3QgYXV0byYgZXhwb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBv
cnRzOwpAQCAtMTQ5LDExICsxNDYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBJZGVudGlm
aWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpOwogICAgICAgICBJ
ZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAia2luZCIpOwogICAg
ICAgICBmb3IgKGNvbnN0IFdhc206OkV4cG9ydCYgZXhwIDogZXhwb3J0cykgewotICAgICAgICAg
ICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAg
ICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgICAg
ICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgo
ZXhwLmZpZWxkKSkpOwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtpbmQsIGpzU3Ry
aW5nKHZtLCBTdHJpbmcobWFrZVN0cmluZyhleHAua2luZCkpKSk7Ci0gICAgICAgICAgICByZXN1
bHQtPnB1c2goZXhlYywgb2JqKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChjYWxsRnJhbWUs
IG9iaik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjEsMjIgKzE1OCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIAotICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZm
ZXJGcm9tVmFsdWUodm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShX
ZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoZXhlYywgV1RGTW92ZShz
b3VyY2UpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShjYWxsRnJhbWUsIFdU
Rk1vdmUoc291cmNlKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIldlYkFzc2VtYmx5Lk1vZHVsZSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5Lk1vZHVsZSIpKTsKIH0KIAogSlNXZWJBc3Nl
bWJseU1vZHVsZSogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYywgVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA4ZGU5ZDJkZDA4MjgwNmExY2M4ZjMyNDcyMzgy
YmJmMjIzOGFhNmQ1Li5hMmY0ODllNGY3NDIxNzg4MTllZDAzYWE4NWVmOTc2Zjg2MTAzYTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDQsMjMgKzQ0LDIz
IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Io
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS5pc1VuZGVmaW5lZCgp
ID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcg
PSBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmco
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5l
d1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobWVzc2FnZVN0cmluZykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShj
YWxsRnJhbWUsIHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobWVzc2FnZVN0cmluZykpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVj
LT52bSgpKS0+d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVy
ZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxG
cmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxz
ZSkpOwogfQogCiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0NWM4ZWIxMWM4YTY5Yjg5ZWIyZjljZDhjMWVl
MzVlNDBhYzI2MmQxLi40OWZlNWUyYjY2ZWUyZTgwZjU1NTgwN2I4MzI2OWVmMDNlNzhlYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDcwICs0NSw3MCBAQCBjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZgogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRh
YmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNPYmplY3QqIG1lbW9yeURlc2NyaXB0b3I7CiAgICAgewotICAgICAgICBKU1ZhbHVlIGFy
Z3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhw
ZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZSBleHBl
Y3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7CiAgICAgICAgIG1l
bW9yeURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCiAg
ICAgV2FzbTo6VGFibGVFbGVtZW50VHlwZSB0eXBlOwogICAgIHsKICAgICAgICAgSWRlbnRpZmll
ciBlbGVtZW50SWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxlbWVudCIpOwot
ICAgICAgICBKU1ZhbHVlIGVsZW1lbnRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVj
LCBlbGVtZW50SWRlbnQpOworICAgICAgICBKU1ZhbHVlIGVsZW1lbnRWYWx1ZSA9IG1lbW9yeURl
c2NyaXB0b3ItPmdldChjYWxsRnJhbWUsIGVsZW1lbnRJZGVudCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIFN0cmlu
ZyBlbGVtZW50U3RyaW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAg
ICBTdHJpbmcgZWxlbWVudFN0cmluZyA9IGVsZW1lbnRWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJh
bWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICBpZiAoZWxlbWVudFN0cmluZyA9PSAiZnVuY3JlZiIgfHwgZWxlbWVu
dFN0cmluZyA9PSAiYW55ZnVuYyIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVt
ZW50VHlwZTo6RnVuY3JlZjsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudFN0cmluZyA9PSAiYW55
cmVmIikKICAgICAgICAgICAgIHR5cGUgPSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWY7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3Nl
bWJseS5UYWJsZSBleHBlY3RzIGl0cyAnZWxlbWVudCcgZmllbGQgdG8gYmUgdGhlIHN0cmluZyAn
ZnVuY3JlZicgb3IgJ2FueXJlZiciX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBm
aWVsZCB0byBiZSB0aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnYW55cmVmJyJfcykpKTsKICAgICB9
CiAKICAgICBJZGVudGlmaWVyIGluaXRpYWxJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJpbml0aWFsIik7Ci0gICAgSlNWYWx1ZSBpbml0aWFsU2l6ZVZhbHVlID0gbWVtb3J5RGVz
Y3JpcHRvci0+Z2V0KGV4ZWMsIGluaXRpYWxJZGVudCk7CisgICAgSlNWYWx1ZSBpbml0aWFsU2l6
ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgaW5pdGlhbElkZW50KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHVpbnQzMl90IGluaXRpYWwgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGluaXRpYWxT
aXplVmFsdWUpOworICAgIHVpbnQzMl90IGluaXRpYWwgPSB0b05vbldyYXBwaW5nVWludDMyKGNh
bGxGcmFtZSwgaW5pdGlhbFNpemVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIEluIFdlYklETCwgInByZXNlbnQi
IG1lYW5zIHRoYXQgW1tHZXRdXSByZXN1bHQgaXMgdW5kZWZpbmVkLCBub3QgW1tIYXNQcm9wZXJ0
eV1dIHJlc3VsdC4KICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwt
ZGljdGlvbmFyaWVzCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgSWRlbnRp
ZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSIp
OwotICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMs
IG1heGltdW1JZGVudCk7CisgICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlw
dG9yLT5nZXQoY2FsbEZyYW1lLCBtYXhpbXVtSWRlbnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFtYXhTaXplVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICBtYXhpbXVtID0gdG9Ob25XcmFwcGluZ1VpbnQzMihl
eGVjLCBtYXhTaXplVmFsdWUpOworICAgICAgICBtYXhpbXVtID0gdG9Ob25XcmFwcGluZ1VpbnQz
MihjYWxsRnJhbWUsIG1heFNpemVWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgaWYgKGluaXRpYWwgPiAq
bWF4aW11bSkgewotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLAotICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgIidtYXhpbXVtJyBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0
byB0aGUgJ2luaXRpYWwnIHByb3BlcnR5Il9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsCisgICAgICAg
ICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICInbWF4aW11bScgcHJvcGVydHkg
bXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJf
cykpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRh
YmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtLCB0eXBlKTsKICAg
ICBpZiAoIXdhc21UYWJsZSkgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLAorICAgICAg
ICAgICAgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJjb3VsZG4ndCBjcmVhdGUgVGFibGUi
X3MpKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZShKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJs
ZS5yZWxlYXNlTm9uTnVsbCgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCB2
bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5y
ZWxlYXNlTm9uTnVsbCgpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSlNXZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5VGFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUiKSk7CiB9CiAKIFdlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhp
c1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKaW5kZXggZTFjMWZiYWMxNTY4NGJhNDE5
ZTg2YjU0YTBjOWE3NGMzOTI5MDAxYy4uMDk5YzQwZjk1MGI3ZTlmZjFhNjE5ODUwOGM4YzUyYTlh
MDU5OTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5n
dGgoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNH
ZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
bHV0LmgiCkBAIC02Nyw3MiArNjcsNzIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3Nl
bWJseVRhYmxlKiBnZXRUYWJsZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWwKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5n
dGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2Fs
bEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHRhYmxlLT5sZW5ndGgoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShl
eGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFi
bGUgPSBnZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgdWludDMyX3QgZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdWludDMyX3Qgb2xkTGVuZ3RoID0g
dGFibGUtPmxlbmd0aCgpOwogCiAgICAgaWYgKCF0YWJsZS0+Z3JvdyhkZWx0YSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cg
Y291bGQgbm90IGdyb3cgdGhlIHRhYmxlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBu
b3QgZ3JvdyB0aGUgdGFibGUiX3MpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKG9sZExlbmd0aCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNH
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2Fs
bEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHVpbnQzMl90IGluZGV4
ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWlu
dDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBpZiAoaW5kZXggPj0gdGFibGUtPmxlbmd0aCgpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhw
ZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFi
bGUucHJvdG90eXBlLmdldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGgg
b2YgdGhlIHRhYmxlIl9zKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YWJsZS0+
Z2V0KGluZGV4KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2Vi
QXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShjYWxsRnJhbWUs
IHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogCi0gICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGluZGV4ID49IHRh
YmxlLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJs
eS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxl
bmd0aCBvZiB0aGUgdGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNh
bGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRl
Z2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKIAogICAgIGlmICh0
YWJsZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKSkgewogICAgICAgICBXZWJBc3NlbWJseUZ1
bmN0aW9uKiB3YXNtRnVuY3Rpb247CiAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
KiB3YXNtV3JhcHBlckZ1bmN0aW9uOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICFp
c1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3Jh
cHBlckZ1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3Nl
bWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBi
ZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKSkpOworICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJs
ZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9y
IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKSkpOwogCiAgICAgICAgIGlm
ICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHRhYmxlLT5jbGVhcihpbmRleCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbi5jcHAKaW5kZXggY2RlNGYzY2YyNjA0YWRkNzZjYzA0ZmIyMjRmOWE1MmJk
MmRhMDM3Ni4uYjFkMmU0ZWVhMTVjYzFlM2VjYzAzOGQxOThlZjU1OWRjM2I0YTU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OnNfaW5mbyA9IHsg
IldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgfTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpOworICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtRnVu
Y3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTT2JqZWN0KiBmdW5jdGlv
biA9IHdhc21GdW5jdGlvbi0+ZnVuY3Rpb24oKTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1
bmN0aW9uLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgQXJnTGlzdChleGVjKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxG
cmFtZSwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgQXJnTGlz
dChjYWxsRnJhbWUpKSkpOwogfQogCiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlv
biBpbXBvcnRhYmxlRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyRXJyb3JDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJy
b3JDb2RlLmgKaW5kZXggM2YwNmE2YmZmMTE2OGEyNTc2OWRkYTZjYzZiYjNmNzJjNDJiM2E5ZS4u
NDRiNjhiMmYyY2NiNjIzNmQ2OWRlY2Q0Yjk4YmE0YTY0OWYwMDgyOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaApAQCAtMjcsOCArMjcsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
SlNPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBZYXJy
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmgKaW5kZXggYjY4YWQ5MDk3NWI4ZjlkMWYyNWQwMmI2YmFmYzRlZDdlZDYyNjhlNC4uM2E5
MjUwN2NmZTdlYjM3ZjIzM2NhMDY2MmY4MWQ0OTczNGE4MWYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCkBAIC0zNiw4ICszNiw5
IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oCmluZGV4IDBjNGZhMjQ3MDllMmI3MDMyZWQ0OGY0MjNiODAxYzFhYjBmMjUxODAuLmI0MzBk
NjM2NTMxMGE4OWE3Zjk1NDQzZTBlNjgyNDY5N2NlZWY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCkBA
IC0zMSw4ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIE9CSkNfQ0xBU1MgUEtQYXltZW50
TWVyY2hhbnRTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAppbmRleCA1YzgzYTM3YTFiODM3Y2UzMTc1Zjc0OWMwZTE3NTNiNTk0YjUyZDI2Li4y
MDZjMWQ1OWYzYjdlZGZmYWZmNDE4YWI2ZTBhNjVhOGJiOWM3YmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMzYsOCArMzYsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCBhNDQ3MTMyNDAzYjU3ZWViMjg2ZDRk
MmZhYTQxYmUwYjljMDRjNjRkLi40ZTIwNTM1YzU2YWYyZTdkYWRhYzAwOWU3NmFmMDJjMzkwYTFj
M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5o
CkBAIC0zNCw4ICszNCw5IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKaW5kZXggNTUzYTQyOTcxNTAyODFmZjA3ZjM0NGE4ZmZiZjc0NTA3NjBkNmZjNi4uODgxZWY2
NDQ5YWMzM2ZiMTMwY2VkZDE5ZmYwZDViNDU0NWY0NTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAi
SURCUmVxdWVzdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJh
bmdlLmgKaW5kZXggNzdhYTM3MWZlZTM3OGExMjEyNjVlNGIyYTRhNTA2MjYwMGViNmIwZC4uYTQ5
ZWI0MWFkYWYwYWE0NTUxOTRiOTYwOWQ5M2ZkZDhkZmVmNjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC0zMyw4ICszMyw5IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBD
YWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDI5Zjk1OTFmM2RlM2M4
NDlmYzY0ZGQ2NWExNjIyYzBiMzk4YzcwMjAuLjYxYTk1MGUxNGVjMzNmMzE4OGRhZmJjMzMzMTkx
ZWRlZmM1YzlkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwogY2xhc3MgU2xvdFZpc2l0b3I7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmgKaW5kZXggZTFhMWFhYTI1ZmE1ZDdmYTNhMzI5MTA2YjQwNmRl
ZDNkNGMyM2JjZi4uNmEyYWEyNDFlZjE4NDRkM2JkZTc0ZDIzMjdlYzEzZGJmYjczOGVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKQEAgLTMyLDggKzMyLDkgQEAKICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCBmMDY3Y2IwYTgzOGZlNDEwYTVlZjMz
MTRkMmIwZDk0NGI2ZTUwNTVmLi4yZmJhMzI2OTRlYzk1OTA4MzUzMTk0OWY1N2FkMjhlMDUxNDdl
YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oCkBAIC0zMiw5ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaAppbmRleCBlYmRiOGE5MDBkMTc1YzY4MDNk
MWJhYWU5YjljMzYxZmIzMmQxMzUxLi43ZjJmZTE3Y2YwOWNiNTRlZmQxODhjNTMwNGMzYzE3OTJj
ZDNlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmdTZWN1cml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Z1NlY3VyaXR5LmgKQEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9y
LmgKaW5kZXggNGNiNWJmMGEwZGIzYzgzOTU0YjgyM2Q2Mzk5ZTZiMzQzOTgwYmRjNi4uZTRlYjQ3
MzIzMDk0ZjkzY2Y2NmVlZTJkOWU4YjQ4YWZlYWQwNDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC00NSw3ICs0
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NQnVpbHRpbkNvbnN0
cnVjdG9yIDogcHVibGljIEpTRE9NQnVpbHRpbkNvCiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYp
OwotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNPYmplY3QmKTsKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqKTsKQEAgLTExMSwxMSArMTExLDEx
IEBAIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEpTRE9NT2JqZWN0SW5zcGVjdG9yPEpTQ2xhc3M+
Ojppc0NvbXBsZXhXcmFwcGVyLCBKU0M6OkpTCiAgICAgcmV0dXJuIGNvbnRleHQgPyBjcmVhdGVX
cmFwcGVyPHR5cGVuYW1lIEpTQ2xhc3M6OkRPTVdyYXBwZWQ+KGNvbnN0cnVjdG9yLmdsb2JhbE9i
amVjdCgpLCBKU0NsYXNzOjpET01XcmFwcGVkOjpjcmVhdGUoKmNvbnRleHQpKSA6IG51bGxwdHI7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmNvbnN0
cnVjdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRpbkNvbnN0
cnVjdG9yPEpTQ2xhc3M+Ojpjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICBhdXRvKiBjYXN0
ZWRUaGlzID0gSlNDOjpqc0Nhc3Q8SlNET01CdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS0+anND
YWxsZWUoKSk7Ci0gICAgcmV0dXJuIGNhc3RlZFRoaXMtPmNhbGxDb25zdHJ1Y3Rvcigqc3RhdGUs
IGNyZWF0ZUpTT2JqZWN0KCpjYXN0ZWRUaGlzKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZSk7Cisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IEpTQzo6anNDYXN0PEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9y
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y2FsbENv
bnN0cnVjdG9yKCpjYWxsRnJhbWUsIGNyZWF0ZUpTT2JqZWN0KCpjYXN0ZWRUaGlzKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNvbnN0cnVjdFR5cGUgSlNE
T01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0Nl
bGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKaW5kZXggMDE3NjdhOTQwYjBjNWExZDll
YWIxMDU3MTI0MmNkYjRmNjVjODM2Mi4uOTY1NjM2YWQ5NDYxYzcwYzA4Mzc0YmNhZDQ5MjMwMGY1
MGQ4ZjcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3IuaApAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBK
U0RPTUNvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NQ29uc3RydWN0b3JCYXNlCiAgICAgLy8gVXN1
YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgogICAgIHZvaWQgaW5p
dGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CiAgICAg
Ly8gTXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhl
Y1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNz
PiogSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3Bw
CmluZGV4IDk2YmFkMjQ1NjcxZGQ5MDJlZmU0YzNlMmJmZGMxMzQwZGFmNWNhNDQuLmUzODI5OWNi
MjhmOGYyYzAyZWUxMjg4MDVhM2MwYzNkY2E0OGM0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEpTRE9NQ29uc3RydWN0b3JCYXNlKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oCmluZGV4IGYwYjEwM2YwYzU5YTVhMWQ4NGIxYmZh
NzE3NzRiYzVhYTk5MzdiZDAuLjgzMDg5NWZlNDExNmRiOGU5Nzc3YzRlYjU4OGM1OTRkZGQzYTEw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaApAQCAtNDYsNyArNDYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZSA6IHB1YmxpYyBKU0RPTQogICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFs
aXphdGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpIHsgfQogCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCisg
ICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBl
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODAzMGQzNTQw
ZjViMTQ2NDk0YzUwNmJiYmNmYjhlMjQzMmFmMTdlYi4uZjk3MDE3NDkxZWNiNGQ4YzNhZjI2NzRl
NmVjM2I3NmJjZTBiNzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTQsOSArNTQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5h
YmxlZChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVRoaXNU
eXBlRXJyb3JGb3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiRE9N
R2xvYmFsT2JqZWN0IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01HbG9iYWxPYmplY3QpIH07CiAKQEAgLTc1LDM5ICs3
NSwzOSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAg
ICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpLT5KU0RPTUdsb2JhbE9iamVj
dDo6fkpTRE9NR2xvYmFsT2JqZWN0KCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBBU1NFUlQoZXhlY1N0YXRlKTsKLSAgICBBU1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50
KCkgPT0gMik7Ci0gICAgVk0mIHZtID0gZXhlY1N0YXRlLT52bSgpOworICAgIEFTU0VSVChjYWxs
RnJhbWUpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogCi0gICAgYXV0byBpbnRlcmZhY2VOYW1lID0gZXhlY1N0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsKKyAgICBhdXRvIGludGVy
ZmFjZU5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldFN0cmluZyhjYWxs
RnJhbWUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgYXV0byBmdW5jdGlv
bk5hbWUgPSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjU3Rh
dGUpOworICAgIGF1dG8gZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlVHlwZUVycm9yKGV4ZWNTdGF0ZSwg
bWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRmOCgpLmRhdGEoKSwgZnVu
Y3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
cmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50ZXJm
YWNlTmFtZS51dGY4KCkuZGF0YSgpLCBmdW5jdGlvbk5hbWUudXRmOCgpLmRhdGEoKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVp
bHRpbnMoRXhlY1N0YXRlKiBleGVjU3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlY1N0YXRlKTsKLSAg
ICBBU1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0gICAgVk0mIHZtID0g
ZXhlY1N0YXRlLT52bSgpOworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAg
YXV0byBpbnRlcmZhY2VOYW1lID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRT
dHJpbmcoZXhlY1N0YXRlKTsKKyAgICBhdXRvIGludGVyZmFjZU5hbWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldFN0cmluZyhjYWxsRnJhbWUpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7Ci0gICAgYXV0byBhdHRyaWJ1dGVOYW1lID0gZXhlY1N0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsKKyAgICBhdXRvIGF0dHJpYnV0
ZU5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhjYWxsRnJh
bWUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKLSAgICBhdXRvIGVycm9yID0g
c3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNyZWF0ZVR5cGVFcnJvcihleGVjU3RhdGUsIG1h
a2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRmOCgpLmRhdGEoKSwgYXR0
cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkpOworICAgIGF1dG8gZXJyb3IgPSBzdGF0aWNfY2Fz
dDxFcnJvckluc3RhbmNlKj4oY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZUdldHRlclR5
cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4KCkuZGF0YSgpLCBhdHRyaWJ1dGVOYW1l
LnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAgZXJyb3ItPnNldE5hdGl2ZUdldHRlclR5cGVFcnJvcigp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXJyb3IpOwogfQogCiAjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0
cmVhbUFQSUVuYWJsZWQoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQo
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4
IDI3MDliMWZiOTgwZjE3MDM4ZGNiOWM3YTg0NzU2Nzk5Y2UyYTRlYmQuLmJjODE5OTQ0ODVkYmQ4
ZDg1OWJlZjA1ZTkwMzY1OGJlNjQyMjBjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNX
cmFwcGVyLCB0eXBlbmFtZSBJdGVyYXRvclRyYWl0cz4gY2xhc3MgSlNET01JdGVyYXRvclByb3Rv
dHkKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbmV4dChKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbmV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogcHJpdmF0ZToKICAgICBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlKEpTQzo6
Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uodm0sIHN0cnVjdHVyZSkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1
Y3Rvci5oCmluZGV4IDI2NWU2ZDNlMzRjYzA0MTMwYTIwZTY2MGE3YjVjYzVlODE3ZGEwNTQuLmQz
Yzg3YWI2OGVjMTFjMjQyMjZhNjIzNTNkYzQxMjE1Njg1NjdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC00OCw3ICs0
OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1
Y3RvciA6IHB1YmxpYyBKU0RPTUNvbnN0cnVjdG9yCiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZv
ciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRp
ZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CiAgICAgLy8gTXVzdCBiZSBkZWZp
bmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7CisgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBpbmxpbmUgSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+KiBKU0RPTU5h
bWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmluZGV4IDIyNmJlZjk4YTM0NDJh
NmQwZjQzNzE4Mjc5ZDJjOTA1N2Y1MDBjOGIuLmUxZWU2ZTczMzk1MWI1ZWY0Yjc1YjA5OTJlODE5
NmY5NDc2NDk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIERPTVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0
bGVkKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYgogICAgIGF1dG8m
IHN0YXRlID0gKmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGF1dG8mIHZtID0gc3Rh
dGUudm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byogaGFuZGxlciA9
IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0
cmluZyB7IH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoRXhlY1N0YXRlKikgbXV0
YWJsZSB7CisgICAgYXV0byogaGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSBtdXRhYmxlIHsKICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6
anNVbmRlZmluZWQoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggY2QxZWRiYTA5YTdmMjdiZDJkNGZmNWI4ZDFi
ZGJiZjdkMGFlZTQ3ZS4uZTNjYzJmOWM0MTExMGNkYWU4YTU0NzAxMTQ1MzU0ZjFkMDRmNjQxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtNjQsOCArNjQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNl
RnVuY3Rpb25TaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZShFeGVjU3Rh
dGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uU2hvd01vZGFsRGlhbG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5E
YXRhYmFzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIEpTRE9NV2luZG93
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTYz
MSw5ICs2MzEsOSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU0RPTVdpbmRvdyogSURMT3BlcmF0aW9u
PEpTRE9NV2luZG93Pjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIHJldHVybiB0b0pTRE9N
V2luZG93KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNWYWx1ZSgpLnRvVGhpcygmc3RhdGUsIE5vdFN0
cmljdE1vZGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFi
YXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uT3BlbkRhdGFiYXNlQm9keT4oKnN0YXRlLCAib3BlbkRhdGFiYXNlIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhbGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uT3BlbkRhdGFiYXNlQm9keT4oKmNhbGxGcmFtZSwgIm9wZW5EYXRhYmFzZSIpOwogfQogCiBK
U1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuRGF0YWJhc2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAKaW5kZXggMTBkNmY5NDIzZmRmNTVhNDc1MmUzZGJmOWRjNjljNjgz
MGFkOTFhZC4uMTM2MmUyZTUyZDljYTdmZTI3OTlhYmY3ODcwMTE3ZTM2NWE3MDJiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFBsdWdpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsUGx1Z2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNI
VE1MRWxlbWVudCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDllZDEwZWU4N2ExODI0M2M4MTll
MDdmYzU2Y2M1MjlhOGQxZjUyZDEuLjUzNjRkNGZiZWFmYWY2ZjQ3Yjc2N2EyMGM4NThiYmNkYWJk
YmY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0yODAsMTggKzI4MCwxOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVw
TW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogCiAg
ICAgUmVmUHRyPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBtb2R1bGVTY3JpcHQoJm1vZHVsZVNjcmlw
dFJlZik7CiAKLSAgICBhdXRvJiBmdWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxl
U2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIC0+IEpTQzo6RW5jb2RlZEpTVmFsdWUgewotICAgICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpTTmF0
aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3Ry
aW5nKCksIFttb2R1bGVTY3JpcHRdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSAtPiBKU0M6OkVuY29kZWRKU1ZhbHVlIHsKKyAgICAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlS2V5ID0ganNWYWx1ZVRvTW9k
dWxlS2V5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1
bGVLZXkgPSBqc1ZhbHVlVG9Nb2R1bGVLZXkoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
bW9kdWxlU2NyaXB0LT5ub3RpZnlMb2FkQ29tcGxldGVkKCptb2R1bGVLZXkuaW1wbCgpKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKIAot
ICAgIGF1dG8mIHJlamVjdEhhbmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0
YXRlLnZtKCksIHByb3h5LndpbmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oRXhl
Y1N0YXRlKiBleGVjKSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIEpT
VmFsdWUgZXJyb3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGF1dG8mIHJlamVjdEhh
bmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5Lndp
bmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgICAgICBKU1ZhbHVlIGVycm9yVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgICAgICBpZiAoZXJyb3JWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmFzT2JqZWN0KGVycm9yVmFsdWUpOwogICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgZmFpbHVyZUtpbmRWYWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZtLCBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSY+KCp2bS5jbGllbnREYXRhKS5idWlsdGluTmFtZXMo
KS5mYWlsdXJlS2luZFByaXZhdGVOYW1lKCkpKSB7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxl
U2NyaXB0JiBtb2R1bGVTY3IKICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVz
c2FnZSB7CiAgICAgICAgICAgICAgICAgTWVzc2FnZVNvdXJjZTo6SlMsCiAgICAgICAgICAgICAg
ICAgTWVzc2FnZUxldmVsOjpFcnJvciwKLSAgICAgICAgICAgICAgICByZXRyaWV2ZUVycm9yTWVz
c2FnZSgqZXhlYywgdm0sIGVycm9yVmFsdWUsIHNjb3BlKSwKKyAgICAgICAgICAgICAgICByZXRy
aWV2ZUVycm9yTWVzc2FnZSgqY2FsbEZyYW1lLCB2bSwgZXJyb3JWYWx1ZSwgc2NvcGUpLAogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAppbmRleCAxNmJlN2M4MjUyMGIyZjc4Yjk4ZjBlODVmMDAwMjJjODM0ZWZkZGZjLi5k
ZDEzYzdkMzMxMTIyOTczY2FiZGQzNWIzNjJlNWUzYmE3MTBiYzc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC00MCwxMCArNDAsMTEgQEAg
T0JKQ19DTEFTUyBXZWJTY3JpcHRPYmplY3Q7CiBzdHJ1Y3QgTlBPYmplY3Q7CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiBjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTTW9kdWxlUmVjb3Jk
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgQmluZGluZ3Mgewog
Y2xhc3MgSW5zdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCmluZGV4IGE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAz
NjguLjI3OWY2MmZjOWYxOTgzMWEyYTYxMjUwNzdkNjkyZjU4MTBkZmM4MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0zNCwxMSAr
MzQsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7
CiBjbGFzcyBKU01vZHVsZUxvYWRlcjsKIGNsYXNzIFNvdXJjZU9yaWdpbjsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuaAppbmRleCAxNTM4NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyLi43
Y2E1Zjg4ZmJmYWM5NTA3NjM0Mzc0ZDM1ZjUxNWFjNzk3YzRhMGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTMyLDcgKzMyLDggQEAKICNwcmFnbWEgb25j
ZQogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKaW5kZXgg
M2EzOGFjNWVjNmEyMzAxMWJkYjExMWVhMDE2MTI4YTViM2JmZTU3My4uMzg5ZTdhMzg5MThkMjQx
Zjg5MGI5ZGQ4YjRkYmE2MjE4MDdjYjY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGVudW0gY2xhc3MgQ2xv
bmVNb2RlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVy
SW1wbChFeGVjU3RhdGUqLCBDbG9uZU1vZGUpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNsb25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNTdGF0ZSogc3RhdGUsIENsb25lTW9kZSBtb2Rl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ2xvbmVNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlKTsK
ICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CkBAIC02MywxNyArNjMsMTcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChFeGVjU3Rh
dGUqIHN0YXRlLCBDbG9uZU1vZGUgbW8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJy
YXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCks
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZm
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVB
cnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoc3RhdGUsIENsb25lTW9k
ZTo6UGFydGlhbCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJl
ZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIGNsb25lQXJyYXlC
dWZmZXJJbXBsKHN0YXRlLCBDbG9uZU1vZGU6OkZ1bGwpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1
ZmZlclZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgQVNTRVJUKHN0YXRlKTsKICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCmlu
ZGV4IGE2ZTRmODMwNjMzZWFjODM2ZjAyODkxNjc5YThiNWIzZGEwYmY3MTUuLmI2YmJlZGViMTc2
MjE4ZjE0N2UzZGE3NGFlNTVjMTM5Y2JkZDk4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCkBAIC0yNSwxNCArMjUsMTUgQEAKICAqLwogCiBuYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIENhbGxGcmFtZTsKIHVzaW5nIEVuY29kZWRKU1ZhbHVlID0gaW50
NjRfdDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJy
YXlCdWZmZXJWaWV3KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xv
bmVBcnJheUJ1ZmZlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZl
clZpZXcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggY2MwMjhjMjUxM2FiMThjZTUwNTc2Y2Y2ODc5ZjZmNzc0
MTg5Nzc3ZS4uMzBkYjFjODhkNzRkMjYwMzE3ZDUzYmE1NWFiZDU1OWZjOTBjNGVlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTI5NzYsNyArMjk3Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlv
bmFsQXR0cmlidXRlKSA6IHVuZGVmOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAg
ICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6
RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0K
IApAQCAtMzAyOCw3ICszMDI4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoSGFz
Q3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIi8vIEN1c3RvbSBjb25zdHJ1Y3RvclxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0JHtjbGFz
c05hbWV9KEpTQzo6RXhlY1N0YXRlJik7XG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpFeGVj
U3RhdGUmKTtcblxuIik7CiAgICAgfQogCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFz
cygkaW50ZXJmYWNlKSkgewpAQCAtMzk3MCw3ICszOTcwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25h
bEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJv
bUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVu
Y3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rp
b25OYW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTtcbiIpOwogICAg
ICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsK
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CiAg
ICAgICAgICAgICAgICAgbXkgJG5hbWVPZkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayA9ICRjb2Rl
R2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIldpdGhvdXRUeXBlQ2hlY2si
OwpAQCAtNTE4Niw5ICs1MTg2LDkgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBvbGluZURl
ZmluaXRpb24KICAgICBwdXNoKEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cywgIlByb21p
c2VFeGVjdXRpb25TY29wZTo6JHtleHBvc3VyZVNjb3BlfSIpIGlmICRoYXNQcm9taXNlUmV0dXJu
VHlwZSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21p
c2V9OwogICAgIHB1c2goQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1lbnRzLCAiQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydCIpIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0
YXRlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICR7aWRsT3BlcmF0aW9uVHlwZX08
JHtjbGFzc05hbWV9Pjo6JHtjYWxsRnVuY3Rpb25OYW1lfTwiIC4gam9pbigiLCAiLCBAY2FsbEZ1
bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMpIC4gIj4oKnN0YXRlLCBcIiIgLiAkb3BlcmF0aW9uLT5u
YW1lIC4gIlwiKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtp
ZGxPcGVyYXRpb25UeXBlfTwke2NsYXNzTmFtZX0+Ojoke2NhbGxGdW5jdGlvbk5hbWV9PCIgLiBq
b2luKCIsICIsIEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cykgLiAiPigqY2FsbEZyYW1l
LCBcIiIgLiAkb3BlcmF0aW9uLT5uYW1lIC4gIlwiKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTU0NzQsOSArNTQ3NCw5IEBAIHN1YiBHZW5lcmF0ZVNl
cmlhbGl6ZXJEZWZpbml0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKUyR7aW50ZXJmYWNlTmFtZX06OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlz
T2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTtcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJc
biIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtz
ZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKUyR7
aW50ZXJmYWNlTmFtZX0+OjpjYWxsPCR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX1Cb2R5
Pigqc3RhdGUsIFwiJHtzZXJpYWxpemVyRnVuY3Rpb25OYW1lfVwiKTtcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBJRExPcGVyYXRpb248SlMke2ludGVyZmFjZU5hbWV9
Pjo6Y2FsbDwke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9Qm9keT4oKmNhbGxGcmFtZSwg
XCIke3NlcmlhbGl6ZXJGdW5jdGlvbk5hbWV9XCIpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CkBAIC01NTIyLDkg
KzU1MjIsOSBAQCBzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucwogCiAgICAgICAg
IG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gImNhbGwke2NsYXNzTmFtZX0iOwogCi0gICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtv
dmVybG9hZEZ1bmN0aW9uUHJlZml4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtvdmVybG9h
ZEZ1bmN0aW9uUHJlZml4fShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIApAQCAtNTU1MSw3
ICs1NTUxLDcgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgogICAgIGlmICgk
aXNPdmVybG9hZGVkKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9hZElu
ZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7
Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFt
ZX0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpXG4i
KTsKICAgICB9CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKQEAgLTY0MjMsOSAr
NjQyMyw5IEBAIEVORAogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8
PEVORCk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248JHtjbGFz
c05hbWV9Pjo6Y2FsbDwke2Z1bmN0aW9uTmFtZX1DYWxsZXI+KCpzdGF0ZSwgIiR7cHJvcGVydHlO
YW1lfSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248JHtjbGFzc05hbWV9Pjo6Y2FsbDwke2Z1
bmN0aW9uTmFtZX1DYWxsZXI+KCpjYWxsRnJhbWUsICIke3Byb3BlcnR5TmFtZX0iKTsKIH0KIAog
RU5ECkBAIC03MTg2LDkgKzcxODYsOSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b25zCiAKICAgICAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gImNvbnN0cnVj
dCR7Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjbGFz
c05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7XG4iKTsKIApAQCAtNzIxNiwyNCArNzIxNiwyNCBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlZmluaXRpb24KIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkp
IHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNv
bnN0cnVjdG9yfSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8
PiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OmNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpXG4iKTsKICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIEFTU0VSVChleGVjKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oKmV4ZWMpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNhbGxGcmFtZSk7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gY29uc3Ry
dWN0JHtjbGFzc05hbWV9KCpjYWxsRnJhbWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICAgfSBlbHNpZiAoIUhhc0N1c3RvbUNvbnN0cnVj
dG9yKCRpbnRlcmZhY2UpICYmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFt
ZWRDb25zdHJ1Y3Rvcn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSkgewogICAgICAg
ICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9w
ZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVk
KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJ
bmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05h
bWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KENhbGxGcmFtZSogY2FsbEZyYW1lKVxuIik7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNhc3RlZFRoaXMp
O1xuIik7CiAKICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0
QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICIgICAgIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCmluZGV4IDlk
YTBkZWRkNGUzODlhYjhhYjhmNWRhY2MzM2RmNjVlZWJkMjk0ZGEuLjdmZTg4NTgzMmEzYjY3YzFk
ODA4NDQ0ZGJhNmYzY2UxYWIxNTdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCkBAIC00NSwxNSArNDUsMTUgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uSGFzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZChKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uQ2xlYXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZShKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uR2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
SGFzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uQ2xlYXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25EZWxldGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
IC8vIEF0dHJpYnV0ZXMKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldEJvZHkoSlNDOjpFeGVj
U3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25HZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxs
PGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keT4oKnN0YXRlLCAiZ2V0Iik7CiB9CkBA
IC0yMzgsNyArMjM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keShKU0M6OkV4ZWNTdGEKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25IYXNCb2R5Pigqc3RhdGUsICJoYXMiKTsKIH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzQm9keShKU0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keT4o
KnN0YXRlLCAiZW50cmllcyIpOwogfQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5KEpT
Qzo6RXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2Fy
ZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5Pigqc3RhdGUsICJrZXlzIik7CiB9CkBAIC0y
NzQsNyArMjc0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
VmFsdWVzQm9keT4oKnN0YXRlLCAidmFsdWVzIik7CiB9CkBAIC0yOTAsNyArMjkwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaEJvZHkoSlNDOjpFeGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3Zl
KGNhbGxiYWNrKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2hCb2R5Pigqc3RhdGUsICJmb3JFYWNoIik7CiB9CkBAIC0zMDYsNyArMzA2LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uQWRkQm9keShKU0M6OkV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55Pihmb3J3YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1v
dmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkFkZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5
Pigqc3RhdGUsICJhZGQiKTsKIH0KQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhckJvZHkoSlND
OjpFeGVjUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25D
bGVhcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBM
aWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyQm9keT4oKnN0YXRlLCAi
Y2xlYXIiKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGVCb2R5KEpTQzo6RXhlYwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6
Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCpzdGF0ZSwgImRlbGV0
ZSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKaW5kZXggNzQ3ODk1OTMxMjI2MTI2ZWIz
MTE4MTc5YjU4ODZkNjk0MDM1MmRhOC4uYjNkMGUzNjk0NGQxNzgxNzIxNDdiMzA0M2U0MGUwZWFk
NGViNWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFk
T25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0y
MTYsOSArMjE2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KEpTQzoKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkR2V0VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25HZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNh
bGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldEJvZHk+KCpzdGF0ZSwgImdl
dCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5PigqY2FsbEZyYW1lLCAiZ2V0
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIzMiw5ICsyMzIsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkhhc0JvZHkoSlNDOgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keT4oKnN0YXRlLCAiaGFzIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkhhc0JvZHk+KCpjYWxsRnJhbWUsICJoYXMiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI0NCw5ICsyNDQsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVu
dHJpZXNCb2R5KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndh
cmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVu
dHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRyaWVzIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkVudHJpZXNCb2R5PigqY2FsbEZyYW1lLCAiZW50cmllcyIpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbktleXNCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjU2LDkgKzI1Niw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5
c0JvZHkoSlNDCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2Fy
ZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVh
ZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5
c0JvZHk+KCpzdGF0ZSwgImtleXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9u
bHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0Jv
ZHk+KCpjYWxsRnJhbWUsICJrZXlzIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlr
ZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHkoSgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKnN0
YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25WYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46
OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHk+KCpzdGF0
ZSwgInZhbHVlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+
OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5PigqY2Fs
bEZyYW1lLCAidmFsdWVzIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC0yODQsOSArMjg0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keSgKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
UmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2giKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaEJvZHk+KCpjYWxsRnJhbWUsICJmb3JFYWNoIik7CiB9CiAKIHZvaWQgSlNSZWFk
T25seU1hcExpa2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggN2UzOWYwZDJiNzk1
OTFhNjk0MTAzZDQwODRkMzU1NjM5ZjZkNjY4Zi4uZjMyYWI2NzVlMGY0NTNlZTllMzdkMTY5YTdl
MDdhNThjMTExNzhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTQ2
LDggKzQ2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5
cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvblBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGlu
Z0Z1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlv
bkV4Y2l0aW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9N
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0
aW5nRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJleGNpdGluZ0Z1bmN0aW9uIik7CiB9CkBAIC0yNDUs
NyArMjQ1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3MKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90
eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHk+KCpzdGF0ZSwgInBvc3RNZXNzYWdlIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA5NGJhYWY0ZmJmOTVmMDkwOThkNjZmN2UwMThl
YmRkNzI2ZDJkZWZiLi5jMTM4YWNhNGIwNDhlOTUyNDNmNmYwZDkzMzhhZDgzNzRlNDUzNzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTQ3LDggKzQ3LDggQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rp
b25zKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05v
dE5lZWRlZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlv
bnMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC00MTYsOSArNDE2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ0UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENFUmVhY3Rpb25zQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENFUmVhY3Rpb25zIik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhbGw8anNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc0JvZHk+KCpj
YWxsRnJhbWUsICJtZXRob2RXaXRoQ0VSZWFjdGlvbnMiKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDMxLDkgKzQzMSw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVh
Y3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhbGw8anNUZXN0Q0VSZWFj
dGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZEJvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWRCb2R5PigqY2FsbEZy
YW1lLCAibWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkIik7CiB9CiAKIHZvaWQgSlNUZXN0
Q0VSZWFjdGlvbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRl
eCA4YjE5OTVmYjY5ZWVmNjVhOGQxMzhkNmMzMjk3MDIyZjRlNzU2MTBjLi5kMTNjOWQwOTZhOTli
YmU2M2FlNTNmZmUzMzAyMGRkODRjOTdiOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNTYs
NyArMjU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblQKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudmFsdWUoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcj46OmNhbGw8anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFj
ZXIuY3BwCmluZGV4IDc1OWU5MGJiNTI3ZDY1ZDIxMmMxM2U5ZTM0ZDQ4NjY0ZmQzNDk1ZmEuLjYw
MDM0MzhlYWI1ZDU2ODNlZDZhZmM1OTlkNzI2MWJkOGU1YWJkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRy
YWNlci5jcHAKQEAgLTUxLDE0ICs1MSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBG
dW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90
eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJn
dW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlv
bmFsVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJn
dW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1
bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9u
YWxWYXJpYW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAg
LTM1Myw5ICszNTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVy
ZmFjZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZUJvZHk+KCpzdGF0ZSwgInRl
c3RPcGVyYXRpb25JbnRlcmZhY2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENh
bGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVy
YXRpb25JbnRlcmZhY2VCb2R5PigqY2FsbEZyYW1lLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSIp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZEJvZHkoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM2
OSw5ICszNjksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmll
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZEJvZHk+KCpzdGF0ZSwgInRlc3RP
cGVyYXRpb25TcGVjaWZpZWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxU
cmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25TcGVjaWZpZWRCb2R5PigqY2FsbEZyYW1lLCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCIpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHNCb2R5KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0z
OTMsOSArMzkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJn
dW1lbnRzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHNCb2R5Pigq
c3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHNCb2R5PigqY2FsbEZyYW1lLCAidGVzdE9w
ZXJhdGlvbldpdGhBcmd1bWVudHMiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRo
TnVsbGFibGVBcmd1bWVudEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQxMyw5ICs0MTMsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
VGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudEJvZHk+KCpzdGF0
ZSwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCIpOworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9keT4oKmNhbGxGcmFt
ZSwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCIpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
VGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MzMsOSArNDMz
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3Vt
ZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3Vt
ZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1l
bnRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnRCb2R5
PigqY2FsbEZyYW1lLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5
cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnRCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFj
ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC00NTMsOSArNDUzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnRCb2R5Pigqc3RhdGUs
ICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Iik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Qm9k
eT4oKmNhbGxGcmFtZSwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQi
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1l
bnRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dENhbGxUcmFjZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC00NzEsOSArNDcxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnRCb2R5
Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50Iik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFy
Z3VtZW50Qm9keT4oKmNhbGxGcmFtZSwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50
QXJndW1lbnQiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlh
bnRBcmd1bWVudEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0Q2FsbFRyYWNlcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ4OSw5ICs0ODksOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFu
dEFyZ3VtZW50Qm9keT4oKmNhbGxGcmFtZSwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlh
bnRBcmd1bWVudCIpOwogfQogCiB2b2lkIEpTVGVzdENhbGxUcmFjZXI6OmFuYWx5emVIZWFwKEpT
Q2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXgg
NWFlZmQ2OWE1NGQxZTMwYWVhZGEwNTA0NzRkOGFlOGNlNWNkOGI2Mi4uODQwZjZiZDU5ODhlYWU2
OThhYTc0OGQ4ZDU5N2FjNDdlMjg5ZDMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTU0LDE1ICs1
NCwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRob3V0
VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0Fy
Z3VtZW50VHlwZTxJRExET01TdHJpbmc+KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtV2l0aG91dFR5cGVDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERP
TUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6SURMSlNB
cmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4pOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNrKEpTQzo6
RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZFdpdGhvdXRUeXBlQ2hlY2soSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElE
TFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRF
bGVtZW50c0J5TmFtZVdpdGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01K
SVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETEF0b21TdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+KTsKIAogLy8gQXR0cmlidXRlcwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0QXR0cmlidXRlQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVs
bGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5h
bWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUJvZHk+KCpzdGF0ZSwgImdldEF0dHJpYnV0
ZSIpOwogfQpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDOjpFeGUKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwu
aXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHk+KCpzdGF0ZSwgIml0ZW0iKTsKIH0K
QEAgLTExODUsNyArMTE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHkoCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVCb2R5Pigqc3RhdGUsICJoYXNBdHRyaWJ1dGUiKTsKIH0K
QEAgLTEyMTMsNyArMTIxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9kCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVt
ZW50SWQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRF
bGVtZW50QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdl
dEVsZW1lbnRCeUlkIik7CiB9CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50
c0J5TmFtZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVt
ZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlO
YW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVCb2R5Pigqc3RhdGUsICJnZXRFbGVtZW50c0J5TmFtZSIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IDg5ZGI2NDQ1OGM3OWE5MmI4
NDc4NDBiNTk1MmNlMDE4YThlMWYyZDEuLmEwZmFjZDU1YWQwNzA0ZjllYjljNDFhZjM0OWU2OWFk
ZTIwOTA0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9u
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJh
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAv
LyBBdHRyaWJ1dGVzCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWQK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0
aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEVuYWJsZWRCeVNldHRpbmc+OjpjYWxsPGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJlbmFibGVkQnlT
ZXR0aW5nT3BlcmF0aW9uIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggYjZkOGQ1YzIxMTYyNDQ1YzFkMWYxYzE5NjVjMjdhNTg4YjE2Njg1NS4uYzE5ZGRjMGU2
NWQ3MGRlOGYxMTc1ZTgwNjFiY2Y0MjA3MzRmNjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIAogdXNpbmcg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yPjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA0MTJlNjVmMjhiZDQ4NzFiYTBkN2M2NzRl
NzI3NDJjZjg5NjZmZDk0Li5iNWEyYTg5ZmEwZTJjZWQ4YWE1YmI0MTc2ODUyMzk4NDJmYjA2MGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkl0ZW1Cb2R5KEpTQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZh
Y2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLml0ZW0o
V1RGTW92ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OmNhbGw8
anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVt
Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJmYjVmNjBkMDQzYjU2ODUy
YmJmOTFhYWJmMDA0MTg3YTAyZjM4NGYuLjFlMGI0NjkyNzBhNzFlYmU2N2M5OGQwYjI5ODdlZWEx
NDkyMDdlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjAsMjMgKzEyMCwy
MyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25S
ZWd1bGFyT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVy
YXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRp
YyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlm
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZXNFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRJblNwZWNpZmljV29ybGQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTI1MDgs
OSArMjUwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvblJlZ3VsYXJPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJyZWd1bGFyT3BlcmF0aW9uIik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQm9keT4oKmNhbGxG
cmFtZSwgInJlZ3VsYXJPcGVyYXRpb24iKTsKIH0KIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CkBAIC0yNTYzLDkgKzI1NjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bgogICAgIHJldHVy
biBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uT3ZlcmxvYWREaXNwYXRjaGVy
Pigqc3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uT3ZlcmxvYWREaXNwYXRjaGVyPigq
Y2FsbEZyYW1lLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKQEAg
LTI1ODMsOSArMjU4Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvblN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmNhbGxTdGF0aWM8anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3RhdGUsICJlbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uU3RhdGljIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpjYWxsU3RhdGljPGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljQm9keT4oKmNhbGxGcmFtZSwgImVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKTsKIH0KIAogI2VuZGlmCkBAIC0yNjAzLDkg
KzI2MDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQm9keT4oKnN0YXRlLCAiZW5h
YmxlZEluU3BlY2lmaWNXb3JsZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxl
ZEluU3BlY2lmaWNXb3JsZEJvZHk+KCpjYWxsRnJhbWUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxk
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVh
dHVyZUVuYWJsZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI2MjEsOSArMjYyMSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEluU3BlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJs
ZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVk
SW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWRCb2R5PigqY2FsbEZyYW1lLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZUVuYWJsZWQiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI2MzksOSArMjYzOSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50
aW1lRmVhdHVyZXNFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRCb2R5
Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJs
ZWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRX
aGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZEJvZHk+KCpjYWxsRnJhbWUsICJlbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQiKTsKIH0KIAogI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCkBAIC0yNjU0LDkgKzI2NTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRl
RgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blRlc3RQcml2YXRlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRl
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxs
PGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQm9k
eSwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAidGVzdFByaXZhdGVG
dW5jdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlv
bkJvZHksIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpjYWxsRnJhbWUsICJ0ZXN0
UHJpdmF0ZUZ1bmN0aW9uIik7CiB9CiAKICNlbmRpZgpAQCAtMjY3MCw5ICsyNjcwLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25DYWxjdWxhdGVTZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHRCb2R5LCBQcm9taXNlRXhlY3V0
aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T25seT4oKmNhbGxGcmFt
ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJv
b2xlYW5Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKQEAgLTI2ODMsOSArMjY4Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2Vj
cmV0Qm9vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwu
Z2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpjYWxsRnJh
bWUsICJnZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpA
QCAtMjY5Nyw5ICsyNjk3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUcKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0
ZSwgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKmNhbGxGcmFtZSwgInRlc3RG
ZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggZjFjZTllZTQ2OTc2
OTQxNTJjYjMzNjYzODViZDU1M2MwNTFlNWZlZC4uYjJjYThiYjdlMmIyZWEzMjI5ODhkYjI2YWQw
OWQ0MzdjNDAzOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRT
ZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVk
U2V0dGVyIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGMwM2Q3OGI2YjZlNWJjY2Vi
Y2VjMGJkZTUxZmI2NDRjNWNkMGFjNTEuLjQ0NThhMDFlODIzYTcyOTU5NDY0ZWYzMzdkMjhmMjE3
NzliYTU4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC02OCwzMSArNjgsMzEgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKIAogLy8gQXR0cmlidXRlcwpAQCAtMjQ0
LDcgKzI0NCw3IEBAIHN0YXRpY19hc3NlcnQoVGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVOVEFM
Q09OU1RBTlQxID09IDEsICJTVVBQTEVNRU5UQUxDT05TVEFOCiBzdGF0aWNfYXNzZXJ0KFRlc3RT
dXBwbGVtZW50YWw6OkNPTlNUX0lNUEwgPT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdFN1cHBsZW1l
bnRhbCBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCiAKLXRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxQm9keT4oKnN0YXRlLCAiaW1wbGVt
ZW50c01ldGhvZDEiKTsKIH0KQEAgLTg5OCw3ICs4OTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRz
TWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2Fs
bDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyQm9keT4o
KnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25JbXBsZW1lbnRzTWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+aW1wbGVtZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
MyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QzQm9keT4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDMi
KTsKIH0KQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGxTdGF0aWM8anNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keT4oKnN0YXRlLCAi
aW1wbGVtZW50c01ldGhvZDQiKTsKIH0KQEAgLTk0Niw3ICs5NDYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtl
Tm9kZXNCb2R5KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJ
RExJbnRlcmZhY2U8Tm9kZT4+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGTW92ZShpbXBsUmVzdWx0Lm5vZGVzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0Jv
ZHk+KCpzdGF0ZSwgInRha2VOb2RlcyIpOwogfQpAQCAtOTYzLDcgKzk2Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNl
Pjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDFCb2R5Pigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiB9CkBAIC05ODgsNyArOTg4
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVu
dGFsTWV0aG9kMihpbXBsLCAqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBs
ZW1lbnRhbE1ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+Ojpj
YWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMkJv
ZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKIH0KQEAgLTEwMDMsNyArMTAwMyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kM0JvZHk+KCpzdGF0ZSwgInN1
cHBsZW1lbnRhbE1ldGhvZDMiKTsKIH0KQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9u
U3VwcGxlbWVudGFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9u
U3VwcGxlbWVudGFsTWV0aG9kNChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OmNhbGxTdGF0aWM8anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDRCb2R5Pigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2Q0Iik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcAppbmRleCA3NGY4NDc1YzkyZGQyZTZiN2Y1YTU1YjE3MDQ3YTQ2N2MzMGFl
ZmMyLi5jYmNmOGJlOTNjNmVlMzc0NDg0YmJiYjYwMTk1NWU3ODE4ZTg2NjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBl
RnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVh
Y2goSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA1N2Q0MGZlZWExZDdjMTQ0ZDMwNDFj
N2M1YTNhMTQzMWFhMDEwOWUzLi5jZTNiNDk0NmU3MjhlYTk0YTFmZWI2OTQyYjExMjM4MDliYTlk
MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yMjYsNyArMjI2LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlRnVuY3Rpb25UZXMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPnRlc3RDdXN0b21GdW5jdGlvbigqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9u
VGVzdEN1c3RvbUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0
Q3VzdG9tRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj46OmNhbGw8anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21GdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGM5
MjA2NWRjOTVmNzMyMmNkMDhiYzI3ZjYxZGRhN2VjZWYwMWZhYzguLmI3MGQ0YWNmZWNlNzUyNDNl
MGI0YTYwZTdkYzA5NmI4NTRkMmEwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTg0LDcgKzE4NCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OmNhbGw8anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQm9keT4oKnN0YXRlLCAibWV0aG9kIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAppbmRleCA3MzU0N2FiOTc2OGRiMmJjOWU4ZWNhNWMwZTRjYTMxODgxNWVi
OGFhLi43Njg1MDE1MjllOTFiYzU5MDdhNmE2MjljY2RiNDllNTdiNDRmMjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5k
ZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBA
IC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG8KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4o
KnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KQEAgLTM2Niw3ICszNjYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVkU2V0dGVy
Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNmU5OGY3NjA2
NzRlMGJhMDMzNjJlZDhkOTAyNDAyODY3ZDBjODVlMS4uMDYzZTA5Mzk4OTM0NzY1MDEwZDVkMWMw
MDRlNmVjYTc5NDdkN2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApA
QCAtODgsNyArODgsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sCiAKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcikg
fTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkK
K3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYTRm
NmQ4MjMzYjBkYTAwM2VjMmYyODg3MDI1YzYxNDJjNDdkYmQ3My4uYWZlNGQ5NDZhZmQxMWI2MGRl
OGFiM2JjOWFkMGVmY2Y0MzJiYTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVk
RGVsZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZERlbGV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0
dHJpYnV0ZXMKIApAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZERlbGV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlckJvZHk+KCpzdGF0ZSwgIm5hbWVkRGVsZXRl
ciIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCmluZGV4IGMzOTFmMmY4Yjk1YThhMjg0MGJkNzQ0YTFhZTVlMjdjZjc3MDFlZWUuLjQ4OGNh
Njc1NTA3NjhkN2QzZWFhYmMzZTVmYWIyNjA4NGQ5YzBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25HZXR0ZXJOYW1lKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uR2V0dGVyTmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAog
Ly8gQXR0cmlidXRlcwogCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IGltcGwuZ2V0dGVyTmFtZShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbkdldHRlck5hbWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0
dGVyTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbkdldHRlck5hbWVCb2R5Pigqc3RhdGUsICJnZXR0ZXJOYW1lIik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggNTdhZTRhZTNk
OTU2ZjJlNGIxMDY3ZjJhNjgyOTA3YjA5MDc3M2YxYi4uZjA0NDYyODFjOTAyNWJhZDMwZDVjYzk1
MWJiMmFmZjkzMTEzYTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApA
QCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3RpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25O
YW1lZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlv
bk5hbWVkU2V0dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA1NzU3
ODU3N2ZlNzRmNGZjMTQ2YTM0NmI2NzRhZDg5MWFlMTRmNDMxLi44MGQ1ZjZiYmMyYmQzYzdjZTBl
NmQxMTliYmIwNmY5ZWU1YzZhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
TmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25JbmRleGVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1
bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMsNyAr
MzIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
cj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJuYW1lZFNldHRlciIpOwogfQpAQCAtMzQwLDcg
KzM0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92
ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj46
OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
SW5kZXhlZFNldHRlckJvZHk+KCpzdGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAppbmRleCAzNTJjODY1NDQzNDFjYzMyMTQ4N2NkMmY3NWE1OWY1OGQ4Y2E0MWE3
Li41NDhjMjI0MmQyZWJhNDY2MzE3MjJiODQ2NzRmOTMxYmE2MTRmYWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1
bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0
ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25JbmRleGVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmli
dXRlcwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm8KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OmNhbGw8anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9u
TmFtZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJuYW1lZFNldHRlciIpOwogfQpAQCAtMzkwLDcgKzM5
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEg
PyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyT3ZlcmxvYWREaXNwYXRjaGVyPigqc3Rh
dGUsICJpbmRleGVkU2V0dGVyIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRleCAxMjczZmQ2ZjFi
YWM4ZWUyZTkxYWE5MTU4OTU1N2VjMTRlOWI4MTQwLi43MjQ4ODhkMjM0YzBkNDlmYzM0NGQ1YTg3
ZjQ2ZWY4MDNiMzNiNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0lu
c3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAg
LTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhbGw8anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5m
b3JnZWFibGVPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApp
bmRleCA5ODNiZjM0ZjBiMWMwMWE0NzM1M2Y3YTBlN2U5YjZmYzFkMzZjOWRiLi5hZWRjNzJiZmRh
OGU3ZjE0Y2Q3NWNlMjUyZjcxNzhmMjk1MjQ1MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNl
RnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU9wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKaW5kZXggODcwNmVlNThkNmU3YTNlMTA5ZTAzYzMyMjQ5ZjFkMTBkYmI1Y2YxZS4u
NjFhZmNmMGNlYjkzZTNiOGM5NWZiOGE4NzBkYjVkMjUwZDkxMTZmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApA
QCAtNDgsMTggKzQ4LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwog
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVT
ZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9k
ZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtOTUsNyArOTUsNyBAQCBjbGFz
cyBKU1Rlc3ROb2RlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAK
IHVzaW5nIEpTVGVzdE5vZGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9k
ZT47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROb2Rl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlz
ZUJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvZHksIFByb21pc2VFeGVjdXRp
b25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RXb3JrZXJQcm9taXNlIik7CiB9
CkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3UKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3Vs
dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Iik7CiB9
CkBAIC0zMjcsNyArMzI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBl
RnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9v
bGVhbiIpOwogfQpAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9k
ZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
VGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAidGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuIik7CiB9CkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEV4ZWNTdGF0
ZSogc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OnNlcmlhbGl6ZSgq
c3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGQ4MDk2OWUwNDA5
Mzg2NWJhOTRlNGFhYzc5N2UyYjc2NWRiNTJkOTguLjdkZDY3YjUyMDQ2YTVmNmU0ODc1MzY4MjY4
NGEzOGZkYjI3MTZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDIwLDE3OCArMTQyMCwxNzggQEAgdGVt
cGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkNvbmRpdGlvbmEKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3Mo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxv
bmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5T
UmVzb2x2ZXJQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZT
dHJpbmdBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmlu
Z0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3Ry
aW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5n
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvblJldHVybmluZ0xvbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNl
cHRpb25SZXR1cm5pbmdPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblByaXZhdGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZh
dGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhFeGVjU3RhdGVWb2lkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudChKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVVNWU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdB
bmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmdJc051bGwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsTG9uZ0xvbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bExvbmdMb25nSXNaZXJvKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxV
bnNpZ25lZExvbmdMb25nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxV
bnNpZ25lZExvbmdMb25nSXNaZXJvKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxz
ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRp
Y01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRo
QXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9k
V2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3Rl
dE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0
TWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2JqTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jl
c29sdmVyUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1B
cmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U3RhbmRhbG9uZUVudW1BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmlu
Z0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdB
cmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b25SZXR1cm5pbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2Qo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3Rl
bmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhFeGVjU3RhdGVWb2lkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3Vt
ZW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoQ2FsbGVyV2luZG93QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmRE
ZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNO
dWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3Ry
aW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5z
aWduZWRMb25nTG9uZ0lzWmVybyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQm9vbGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jl
c29sdmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsUmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QxKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5n
VW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1
aXNoaW5nVW5pb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9w
dGlvbmFsVW5pb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9u
YWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0
aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRo
b2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJh
eUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Uo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRTVkdEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQ
b2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFs
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21T
dHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVT
ZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVs
ZW1lbnRCeUlkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0
U1ZHRG9jdW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b252ZXJ0MShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdN
ZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BbnkoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldp
dGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQ
cm9taXNlUHJveHlGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKICNpZiBFTkFCTEUoQ09ORElUSU9OMSkgfHwgRU5BQkxFKENPTkRJVElPTjIpCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE92ZXJsb2FkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2Fk
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5n
bGVDb25kaXRpb25hbE92ZXJsb2FkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dS
b290KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5
UGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFs
RGljdGlvbmFyeVBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1p
emF0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3Jr
ZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE5NDAsNyArMTk0MCw3IEBA
IHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQgPT0gMHgxYWJjLCAiQ09OU1Rf
VkFMVUVfMTQgaW4gVGVzdE9iaiBkb2VzCiBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX0lN
UEwgPT0gMTUsICJDT05TVF9JTVBMIGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJv
bSBJREwiKTsKIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6cmVhZG9ubHkgPT0gMCwgInJlYWRvbmx5
IGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtMjU0Myw3ICsyNTQzLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNU
ZXN0T2JqMyhFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTVGVz
dE9iaihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SlNUZXN0T2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTU0NSw3ICs1NTQ1LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxl
ZEF0UnVudGltZU9wZXIKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRl
LCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogfQpAQCAtNTU2NSw3ICs1NTY1LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3AKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKTsKIH0KQEAgLTU1ODUsNyArNTU4NSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29yCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlRW5hYmxlZCIpOwogfQpAQCAtNTYwMyw3ICs1NjAzLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZp
Y01ldGhvZEIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V29ybGRTcGVjaWZpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZEJvZHk+KCpzdGF0ZSwgIndvcmxkU3BlY2lmaWNN
ZXRob2QiKTsKIH0KQEAgLTU2MTcsNyArNTYxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3Vs
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0
ZVNlY3JldFJlc3VsdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4
ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAiY2FsY3VsYXRlU2VjcmV0UmVz
dWx0Iik7CiB9CkBAIC01NjMwLDcgKzU2MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3Jl
dEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgImdldFNl
Y3JldEJvb2xlYW4iKTsKIH0KQEAgLTU2NDQsNyArNTY0NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0
U2VjcmV0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwu
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW4iKTsKIH0KQEAgLTU2NjAsNyArNTY2MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RCb2R5KEpTQzo6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRN
ZXRob2RCb2R5Pigqc3RhdGUsICJ2b2lkTWV0aG9kIik7CiB9CkBAIC01NjgyLDcgKzU2ODIsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAi
dm9pZE1ldGhvZFdpdGhBcmdzIik7CiB9CkBAIC01Njk1LDcgKzU2OTUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0
aG9kQm9keShKU0M6OgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihp
bXBsLmJ5dGVNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZEJvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2QiKTsKIH0K
QEAgLTU3MTYsNyArNTcxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUoYnl0ZUFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25C
eXRlTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKIH0K
QEAgLTU3MjksNyArNTcyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kQm9keShKU0M6CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRN
ZXRob2RCb2R5Pigqc3RhdGUsICJvY3RldE1ldGhvZCIpOwogfQpAQCAtNTc1MCw3ICs1NzUwLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKG9jdGV0QXJnKSwg
V1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRo
QXJnc0JvZHk+KCpzdGF0ZSwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKIH0KQEAgLTU3NjMsNyAr
NTc2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RCb2R5KEpTQzo6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kQm9keT4oKnN0YXRl
LCAibG9uZ01ldGhvZCIpOwogfQpAQCAtNTc4NCw3ICs1Nzg0LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdp
dGhBcmdzQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5s
b25nTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2Jq
QXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhv
ZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImxvbmdN
ZXRob2RXaXRoQXJncyIpOwogfQpAQCAtNTc5Nyw3ICs1Nzk3LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQm9k
eShKU0M6OkUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRl
c3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRo
b2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9iak1ldGhvZEJvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZCIpOwogfQpAQCAtNTgxOCw3ICs1ODE4
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3NCb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3Zl
KHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9iak1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzQm9keT4oKnN0
YXRlLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKIH0KQEAgLTU4MzEsNyArNTgzMSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5m
b3JnZWFibGVNZXRob2RCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExv
bmc+KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZEJv
ZHk+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CiB9CkBAIC01ODQ5LDcgKzU4NDksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KQEAgLTU4Njcs
NyArNTg2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJh
bWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXJCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyIik7CiB9CkBAIC01ODgwLDcgKzU4
ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFibGVT
dHJpbmdNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVN0cmluZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZEJvZHk+
KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7CiB9CkBAIC01ODkyLDcgKzU4OTIsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3Ry
aW5nU3RhdGljTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2RCb2R5Pigqc3RhdGUsICJudWxsYWJsZVN0cmlu
Z1N0YXRpY01ldGhvZCIpOwogfQpAQCAtNTkwOSw3ICs1OTA5LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJp
bmdTcGVjaWEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
RE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChXVEZN
b3ZlKGluZGV4KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z1NwZWNpYWxNZXRob2RCb2R5Pigqc3RhdGUsICJudWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2Qi
KTsKIH0KQEAgLTU5MjcsNyArNTkyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQm9kCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVt
QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEVudW1BcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRW51bUFyZyIpOwogfQpAQCAtNTk0NSw3
ICs1OTQ1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmUKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTdGFuZGFsb25l
RW51bUFyZyIpOwogfQpAQCAtNTk2MSw3ICs1OTYxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
RW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmciKTsKIH0KQEAgLTU5NzcsNyArNTk3Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CiB9CkBAIC01OTk2
LDcgKzU5OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3MoV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsK
IH0KQEAgLTYwMTQsNyArNjAxNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJp
bmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVU1ZTdHJpbmdBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoVVNWU3RyaW5nQXJn
Iik7CiB9CkBAIC02MDMyLDcgKzYwMzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVUwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZT
dHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnIik7CiB9CkBAIC02MDUwLDcgKzYw
NTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KQEAgLTYwNjgsNyArNjA2OCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhCeXRlU3RyaW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdCb2R5
Pigqc3RhdGUsICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyIpOwogfQpAQCAtNjA4Niw3ICs2MDg2
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOdWxs
YWJsZUJ5dGVTdHJpbmdBcmciKTsKIH0KQEAgLTYxMDQsNyArNjEwNCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmciKTsKIH0KQEAgLTYxMjIsNyArNjEyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1
ZUJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNl
cmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
ZXJpYWxpemVkVmFsdWVCb2R5Pigqc3RhdGUsICJzZXJpYWxpemVkVmFsdWUiKTsKIH0KQEAgLTYx
NDAsNyArNjE0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoUmVjb3JkIik7CiB9CkBAIC02MTU0LDcgKzYxNTQsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAibWV0
aG9kV2l0aEV4Y2VwdGlvbiIpOwogfQpAQCAtNjE2Nyw3ICs2MTY3LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvblIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvblJldHVybmluZ0xvbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJu
aW5nTG9uZyIpOwogfQpAQCAtNjE4MCw3ICs2MTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlv
blIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5t
ZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNl
cHRpb25SZXR1cm5pbmdPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
UmV0dXJuaW5nT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmpl
Y3RCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Iik7CiB9
CkBAIC02MTkyLDcgKzYxOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RCb2R5KEpTQwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kKCpzdGF0ZSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bU1ldGhvZEJvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZCIpOwogfQpAQCAtNjIwNCw3ICs2MjA0
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZFdpdGhBcmdzKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DdXN0b21NZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZFdpdGhBcmdz
Iik7CiB9CkBAIC02MjIxLDcgKzYyMjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keShKUwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5w
cml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZEJvZHksIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwgInByaXZhdGVNZXRob2QiKTsK
IH0KQEAgLTYyMzgsNyArNjIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRoCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnB1Ymxp
Y0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2
YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQm9keT4oKnN0YXRlLCAicHVibGljQW5kUHJpdmF0ZU1l
dGhvZCIpOwogfQpAQCAtNjI2MCw3ICs2MjYwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lckJvZHkK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRM
aXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZl
bnRMaXN0ZW5lckJvZHk+KCpzdGF0ZSwgImFkZEV2ZW50TGlzdGVuZXIiKTsKIH0KQEAgLTYyODIs
NyArNjI4Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJCCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJC
b2R5Pigqc3RhdGUsICJyZW1vdmVFdmVudExpc3RlbmVyIik7CiB9CkBAIC02Mjk2LDcgKzYyOTYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhFeGVjU3RhdGVWb2lkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkQm9keT4oKnN0YXRlLCAi
d2l0aEV4ZWNTdGF0ZVZvaWQiKTsKIH0KQEAgLTYzMDksNyArNjMwOSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVj
U3RhdGVPYmpCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFj
ZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0
aEV4ZWNTdGF0ZU9iaigqc3RhdGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqQm9keT4oKnN0
YXRlLCAid2l0aEV4ZWNTdGF0ZU9iaiIpOwogfQpAQCAtNjMyMyw3ICs2MzIzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZVZvaWRFeGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
RXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlv
bkJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uIik7CiB9CkBAIC02MzM2
LDcgKzYzMzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhFeGVjU3RhdGVPYmpFeGNlcHRp
b24oKnN0YXRlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4
Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KQEAg
LTYzNTMsNyArNjM1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25DCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRCb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCIpOwogfQpAQCAtNjM3MCw3ICs2MzcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUJvZHk+KCpzdGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlIik7CiB9CkBAIC02Mzg2LDcgKzYzODYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhj
ZXB0aW9uKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KQEAg
LTY0MDIsNyArNjQwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25DCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQm9keT4oKnN0YXRl
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzIik7CiB9
CkBAIC02NDIxLDcgKzY0MjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVu
dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1
bWVudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAid2l0aERvY3VtZW50QXJndW1lbnQiKTsKIH0KQEAg
LTY0MzgsNyArNjQzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3Vt
ZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVyRG9jdW1l
bnRBcmd1bWVudCIpOwogfQpAQCAtNjQ1Miw3ICs2NDUyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRv
d0FyZ3UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aENhbGxlcldpbmRvd0FyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0Fy
Z3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudEJvZHk+KCpzdGF0ZSwgIndp
dGhDYWxsZXJXaW5kb3dBcmd1bWVudCIpOwogfQpAQCAtNjQ2OCw3ICs2NDY4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogfQpAQCAtNjQ4NCw3ICs2NDg0LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQpAQCAtNjUwNCw3ICs2NTA0LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiB9CkBAIC02NTI2LDcgKzY1
MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRp
b25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9u
YWxBcmdzQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9u
YWxBcmdzIik7CiB9CkBAIC02NTQyLDcgKzY1NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nIik7CiB9CkBAIC02NTU4LDcgKzY1NTgsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxVUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxVU1ZTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5n
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7CiB9CkBAIC02NTc0
LDcgKzY1NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZyIpOwogfQpAQCAtNjU5MCw3ICs2NTkwLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQpAQCAtNjYwNiw3ICs2NjA2LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0
VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1
ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFs
dWUiKTsKIH0KQEAgLTY2MjIsNyArNjYyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiKTsKIH0KQEAgLTY2MzgsNyAr
NjYzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZp
bmVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogfQpAQCAtNjY1NCw3ICs2
NjU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVs
bChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbEJvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwiKTsKIH0KQEAgLTY2NzAsNyArNjY3MCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CkBAIC02Njg2LDcg
KzY2ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVUwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0Vt
cHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNF
bXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmlu
ZyIpOwogfQpAQCAtNjcwMiw3ICs2NzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXQKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CkBAIC02NzE4LDcgKzY3MTgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxEbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bERvdWJsZUlzTmFOQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4i
KTsKIH0KQEAgLTY3MzQsNyArNjczNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEZsb2F0SXNOYU4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElz
TmFOKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU5Cb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOIik7CiB9CkBAIC02NzUwLDcgKzY3NTAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxMbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsKIH0KQEAg
LTY3NjYsNyArNjc2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdM
b25nSXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1pl
cm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm9Cb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyIpOwogfQpAQCAtNjc4Miw3ICs2Nzgy
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKIH0KQEAgLTY3OTgsNyArNjc5OCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJv
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9Cb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvIik7CiB9CkBA
IC02ODE0LDcgKzY4MTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2UiKTsKIH0KQEAgLTY4MzAsNyArNjgzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFNlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZUlzRW1wdHlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1w
dHkiKTsKIH0KQEAgLTY4NDYsNyArNjg0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFu
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxCb29sZWFuIik7CiB9CkBAIC02ODYyLDcgKzY4NjIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2UiKTsKIH0KQEAgLTY4NzgsNyArNjg3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEFueShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9u
YWxBbnkiKTsKIH0KQEAgLTY4OTQsNyArNjg5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9i
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbE9iamVjdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxPYmplY3QiKTsKIH0KQEAgLTY5MTAsNyArNjkxMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXJCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZVdyYXBwZXIiKTsKIH0KQEAgLTY5MjYsNyArNjkyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGxCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXJJc051bGwiKTsKIH0KQEAgLTY5NDIsNyArNjk0Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFhQCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXJCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxY
UGF0aE5TUmVzb2x2ZXIiKTsKIH0KQEAgLTY5NTgsNyArNjk1OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFJlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQiKTsKIH0KQEAgLTY5NzQsNyArNjk3NCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFByCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21p
c2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlIik7CiB9CkBAIC02OTky
LDcgKzY5OTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiB9CkBAIC03MDEy
LDcgKzcwMTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsK
IH0KQEAgLTcwMjgsNyArNzAyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogfQpAQCAtNzA0Niw3
ICs3MDQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnUKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25Bcmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CiB9CkBAIC03MDY2LDcgKzcwNjYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFy
ZyIpOwogfQpAQCAtNzA4Miw3ICs3MDgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnUKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhD
YWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1
bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKIH0KQEAgLTcwOTcsNyArNzA5Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3Rh
dGljTWV0aG9kV2l0aENhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3Rh
dGUsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogfQpAQCAtNzEx
NCw3ICs3MTE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2EKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tB
cmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwgInN0YXRp
Y01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogfQpAQCAtNzEyOCw3ICs3MTI4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QxQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqc3RhdGUsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKIH0K
QEAgLTcxNDUsNyArNzE0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMkJvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDJCb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKIH0KQEAgLTcxNjIsNyAr
NzE2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kM0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNCb2R5Pigq
c3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKIH0KQEAgLTczNjMsNyArNzM2Myw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RPdmVyCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcj4o
KnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogfQpAQCAtNzQyMCw3ICs3NDIwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhP
cHRpb25hbFBhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogfQpAQCAtNzQ2Nyw3ICs3NDY3LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoRGlzdGluZ3Vpc2hpbmdVbmlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3Zlcmxv
YWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uIik7CiB9CkBAIC03NTE2LDcgKzc1MTYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zT3ZlcmxvYWREaXNwYXRjaGVyPigq
c3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOwogfQpA
QCAtNzU2NCw3ICs3NTY0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4g
YXJnc0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1Vu
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbk92
ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5n
dWlzaGluZ1VuaW9uIik7CiB9CkBAIC03NjEzLDcgKzc2MTMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhO
dWxsYWJsZQogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVu
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVy
bG9hZFdpdGhOdWxsYWJsZVVuaW9uIik7CiB9CkBAIC03NjYzLDcgKzc2NjMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZFdpdGhPcHRpb25hbAogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5p
b25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24i
KTsKIH0KQEAgLTc3MTIsNyArNzcxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlCiAgICAg
cmV0dXJuIGFyZ3NDb3VudCA8IDIgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rp
bmd1aXNoaW5nUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGlu
Z3Vpc2hpbmdQYXJhbWV0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0
aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiKTsKIH0KQEAgLTc3MjUsNyArNzcy
NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RCb2R5KEpTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNs
YXNzTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RCb2R5Pigqc3RhdGUsICJjbGFz
c01ldGhvZCIpOwogfQpAQCAtNzczOSw3ICs3NzM5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhP
cHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oVGVzdE9iajo6Y2xh
c3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhPcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNz
TWV0aG9kV2l0aE9wdGlvbmFsIik7CiB9CkBAIC03NzUxLDcgKzc3NTEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNz
TWV0aG9kMkJvZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpjbGFz
c01ldGhvZDIoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
Q2xhc3NNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRp
Yzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyQm9keT4oKnN0YXRlLCAi
Y2xhc3NNZXRob2QyIik7CiB9CkBAIC03ODA0LDcgKzc4MDQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxTwogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9k
MSIpOwogfQpAQCAtNzgyNiw3ICs3ODI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7
CiB9CkBAIC03ODQyLDcgKzc4NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhD
bGFtcE9uT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0
aW9uYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsQm9keT4oKnN0YXRl
LCAiY2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsIik7CiB9CkBAIC03ODYyLDcgKzc4NjIs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdl
Iik7CiB9CkBAIC03ODc4LDcgKzc4NzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
RW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFu
Z2VPbk9wdGlvbmFsQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25P
cHRpb25hbCIpOwogfQpAQCAtNzg5Niw3ICs3ODk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVk
TG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2ln
bmVkTG9uZ1NlcXVlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZUJv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSIpOwogfQpAQCAtNzkx
Myw3ICs3OTEzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkIKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXJyYXlGdW5jdGlv
bihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uQm9k
eT4oKnN0YXRlLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogfQpAQCAtNzkzMCw3ICs3OTMwLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPERPTVN0cmluZ0xpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5kb21TdHJpbmdMaXN0RnVuY3Rpb24oKnZhbHVl
cykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmlu
Z0xpc3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25Cb2R5Pigqc3RhdGUs
ICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKIH0KQEAgLTc5NDYsNyArNzk0Niw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9w
ZXJhdGlvbldpdGhPcHRpb25hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0
aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJvcGVyYXRpb25XaXRo
T3B0aW9uYWxVbmlvblBhcmFtZXRlciIpOwogfQpAQCAtNzk2Niw3ICs3OTY2LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEFuZFdpdGhvdXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhB
bmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIpOwogfQpAQCAtNzk4Myw3ICs3OTgzLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudEJ5SWRCb2R5KEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7CiB9CkBAIC03
OTk2LDcgKzc5OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudEJvZHkoSgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHRG9jdW1lbnQ+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgQmluZGluZ1NlY3VyaXR5OjpjaGVj
a1NlY3VyaXR5Rm9yTm9kZSgqc3RhdGUsIGltcGwuZ2V0U1ZHRG9jdW1lbnQoKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0
U1ZHRG9jdW1lbnRCb2R5Pigqc3RhdGUsICJnZXRTVkdEb2N1bWVudCIpOwogfQpAQCAtODAxNCw3
ICs4MDE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDFCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252
ZXJ0MShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MUJvZHk+KCpzdGF0ZSwgImNvbnZlcnQxIik7CiB9CkBAIC04
MDMyLDcgKzgwMzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MkJvZHkoSlNDOjpFeAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbnZlcnQyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQm9keT4oKnN0YXRlLCAiY29udmVydDIiKTsKIH0K
QEAgLTgwNTAsNyArODA1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keShKU0M6OkV4CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDNCb2R5Pigqc3RhdGUsICJjb252ZXJ0MyIp
OwogfQpAQCAtODA2OCw3ICs4MDY4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDRCb2R5KEpTQzo6RXgKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NEJvZHk+KCpzdGF0ZSwgImNvbnZl
cnQ0Iik7CiB9CkBAIC04MDgxLDcgKzgwODEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5j
dGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFi
bGVQb2ludEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uQm9keT4oKnN0YXRl
LCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKIH0KQEAgLTgwOTUsNyArODA5NSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9y
YW5nZUJvZHkoSlNDOjpFeGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9yYW5nZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2VC
b2R5Pigqc3RhdGUsICJvcmFuZ2UiKTsKIH0KQEAgLTgxMTUsNyArODExNSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljU3RyaW5nTWV0aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJp
bmdNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJp
YWRpY1N0cmluZ01ldGhvZCIpOwogfQpAQCAtODEzNSw3ICs4MTM1LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNE
b3VibGVNZXRob2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1l
dGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGlj
RG91YmxlTWV0aG9kIik7CiB9CkBAIC04MTU1LDcgKzgxNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVN
ZXRob2RCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY05vZGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kQm9keT4oKnN0YXRlLCAidmFyaWFkaWNOb2RlTWV0aG9k
Iik7CiB9CkBAIC04MTc1LDcgKzgxNzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kQgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9u
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1VuaW9uTWV0aG9kQm9keT4oKnN0YXRlLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOwogfQpA
QCAtODE5NSw3ICs4MTk1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55Qm9keShKU0M6OkV4ZWNTdGEKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QW55KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFueUJvZHk+KCpzdGF0ZSwgImFueSIpOwogfQpAQCAtODIwOSw3ICs4MjA5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbkIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21p
c2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3Rh
dGUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CiB9CkBAIC04MjI3LDcgKzgyMjcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudEJvZHksIFBy
b21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwogfQpAQCAtODI0MSw3ICs4MjQxLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvblcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9taXNlRXhlY3V0
aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbiIpOwogfQpAQCAtODI1Nyw3ICs4MjU3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvblcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRCb2R5
LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiKTsKIH0KQEAgLTgzMDIsNyArODMw
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEg
PyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VPdmVybG9hZGVkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21p
c2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uT3ZlcmxvYWREaXNwYXRjaGVyLCBQcm9taXNlRXhlY3V0aW9uU2Nv
cGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlv
biIpOwogfQpAQCAtODMxNSw3ICs4MzE1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUYKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNh
bGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVu
Y3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUs
ICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uIik7CiB9CkBAIC04MzI4LDcgKzgzMjgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblRlc3RTdGF0aWNQcm9taXNlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3Rh
dGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9u
V2l0aEV4Y2VwdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+
KCpzdGF0ZSwgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7CiB9CkBA
IC04MzQwLDcgKzgzNDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigqc3Rh
dGUsIFdURk1vdmUocHJvbWlzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVy
YXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbiIp
OwogfQpAQCAtODM1Miw3ICs4MzUyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHIKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6dGVzdFN0YXRpY0N1c3RvbVByb21pc2VG
dW5jdGlvbigqc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3Rv
bVByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21p
c2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RP
Ymo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3Vz
dG9tUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldv
cmtlcj4oKnN0YXRlLCAidGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbiIpOwogfQpAQCAt
ODM2NCw3ICs4MzY0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd24KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0
aW9uKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsUmV0dXJuaW5n
T3duUHJvbWlzZTxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3du
UHJvbWlzZUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNl
RnVuY3Rpb24iKTsKIH0KQEAgLTgzNzcsNyArODM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJv
bWlzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVm9pZD4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RSZXR1cm5zT3du
UHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJv
bWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNP
d25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFJldHVybmluZ093blByb21pc2U8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlG
dW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94
eUZ1bmN0aW9uIik7CiB9CkBAIC04NDMyLDcgKzg0MzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJs
b2FkTwogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJs
b2FkT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7CiB9
CkBAIC04NDgyLDcgKzg0ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZQogICAgIHJldHVy
biBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92
ZXJsb2FkT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJzaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkIik7CiB9CkBAIC04NTAwLDcgKzg1MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290Qm9keQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFk
b3dSb290KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hT
aGFkb3dSb290Qm9keT4oKnN0YXRlLCAiYXR0YWNoU2hhZG93Um9vdCIpOwogfQpAQCAtODUxOCw3
ICs4NTE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmEKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFy
eVBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25h
cnlQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFt
ZXRlckJvZHk+KCpzdGF0ZSwgIm9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0
ZXIiKTsKIH0KQEAgLTg1MzYsNyArODUzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJj
ZVBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJidWZmZXJTb3VyY2VQYXJhbWV0
ZXIiKTsKIH0KQEAgLTg1NTQsNyArODU1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkQm9kCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxl
ck5hbWVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5
Q2FsbGVyTmFtZWRCb2R5Pigqc3RhdGUsICJsZWdhY3lDYWxsZXJOYW1lZCIpOwogfQpAQCAtODU3
NSw3ICs4NTc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW0KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJldHVyblZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5Pigqc3RhdGUsICJ0ZXN0UmV0dXJuVmFsdWVPcHRp
bWl6YXRpb24iKTsKIH0KQEAgLTg1OTYsNyArODU5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9w
dGltCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXR1cm5WYWx1ZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0
dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFs
dWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJldHVyblZhbHVl
T3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQpAQCAtODYxMCw3ICs4NjEwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpOwogfQpAQCAtODYyNCw3ICs4NjI0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpOwogfQpAQCAtODYzOCw3ICs4NjM4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1
bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdv
cmtlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3Jr
ZXJGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRX
b3JrZXJGdW5jdGlvbiIpOwogfQpAQCAtODY1MSw3ICs4NjUxLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5
KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigq
c3RhdGUsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3Ry
aW5nIik7CiB9CkBAIC04Njg1LDcgKzg2ODUsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShFeGVjU3RhdGUqIHN0YQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpzZXJpYWxpemUoKnN0YXRlLCAq
dGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0
YXRlLCAidG9KU09OIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKaW5kZXggNTYxOTc2MDI4OGE5MGNlODAzYWU1YTQxMDg4ZWI2ZTNiMjE3ZjU2MC4u
MmQ1MTNmYjRjMTI0NWExOWY5ODhiYTMxNmQ5ZDA0YmZiMWVlNGMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczUoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0
ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAot
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1w
bGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHAKaW5kZXggMzc1ODkwMTdjY2E0NDJjY2ZlZWI3MzdlOWRiZTRmOTliYjU3YTlhZS4uNjM3MWJh
MGUwYjhlYTAyOGE0YjZlMzIxY2YwYWFjZTg0NTY4ZDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggNDRlZmM3MDg1MmUxNGIwMzVlYzliZDkxMmMxYmM0
NzJjMDYzMWNkZC4uMWViNzJkNTYwNjA0NzVhNDA2YTcxYzRlZDUzZmU3NGE3MmY0ZjJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0y
MzUsOSArMjM1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92
ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXQKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0oV1RGTW92ZShuYW1lKSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
RnVuY3Rpb25OYW1lZEl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVt
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKnN0YXRl
LCAibmFtZWRJdGVtIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZEl0ZW1Cb2R5PigqY2FsbEZyYW1lLCAibmFtZWRJdGVtIik7CiB9CiAKIHZvaWQgSlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAppbmRl
eCA1ZDY1YWRhY2FlYTRiOGZkZTgzYjIwN2I3YTRlMDkzZDhiMmM2YzUxLi5kNTU2YjJiMTM5ZDBh
OTBhNDlmNWFiZWE3NzE4ZDFkYjkyZTE5ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogCiB1c2luZyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKIAotdGVtcGxhdGU8PiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24u
Y3BwCmluZGV4IDVjMGQ3ODJiYjMyOWYxMTc5OTliMzdjZDJjYjI0ZDIxZDg3MDJmMTYuLjA0MWZj
M2E5NWVkZDY5NjM5YWUxYjkwYjViOGNkNTAxZDBkYTY1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8g
RnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJp
YWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBl
RnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
IC8vIEF0dHJpYnV0ZXMKIApAQCAtNjY1LDcgKzY2NSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShF
eGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemF0aW9uOjpzZXJp
YWxpemUoKnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2Vy
aWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5j
dGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb24+Ojpj
YWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpzdGF0
ZSwgInRvSlNPTiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5j
cHAKaW5kZXggN2ViMTUyNjA5ZWNlOTc0ZmU4NWE1YjZhZTIwZWQ3MjlhZGQ3MWQ0MC4uZWM3YmQ0
NTlhYzlmYWQ2MjNmODg0NWU1ZWViMWJlODFiZmRhZDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjIwLDcgKzIy
MCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90
eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNP
TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2Fs
bDxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4o
KnN0YXRlLCAidG9KU09OIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbC5jcHAKaW5kZXggY2YyNzFlMmFjYjhkYWYxNWZjNzQxOTZjMTYzN2NkMmNl
NmQ3MzQ5Yi4uNDNlMDg4N2RjMzY4ZjRhNDdmMmViMWMxYmQwOGZmNGU4YjczYWExYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtNDIs
NyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90
b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVu
Y3Rpb25Ub0oKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWw6OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25U
b0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OmNhbGw8
anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9k
eT4oKnN0YXRlLCAidG9KU09OIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU5YjVlZjZiNTE4NzMxODM2ZWRm
MmY3ZjU0NDU2MmY3N2FhZGM0YmIuLmIwYjBiOWRkNWNlYThjMzc3ZTcyNDIzOTBlYjg4Y2YxNmQ0
MzMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCkBAIC01MSw4ICs1MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25S
ZXR1cm5pbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzIzLDcgKzMy
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
OjpjYWxsPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJmdW5jdGlvbiIpOwogfQpAQCAtMzM2LDcgKzMzNiw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5mdW5jdGlvblJldHVybmluZygp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nQm9keT4oKnN0YXRlLCAiZnVuY3Rpb25SZXR1cm5pbmci
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCmluZGV4IGU1YzYyZTM5NjQzNTMxMjBmZWM3
YWI4MTk2YWM3YmFjNDZhYjBkNTYuLjBhMDBlYTU0OGRmM2UyMjFiOGM2YmE2YTAzZjhkZjVkZTY2
MzZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzcsNyArMTc3LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJQcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCmluZGV4
IDc1MmUyNjZjYmM3ODg5ZDMzYjZmNmRlMTNjZGY4MTE3MzJmMzdhOTguLmEzODBhZDQ1MGE1YWJi
ZWUwMjBiYjM2ZDQyOTYxNmY0ZjdkNGFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
IAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90
eXBlRnUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRleCBhMDJhMDIwM2EyY2Q4
MzZhNTgwMzU3ZjAyOTkzMWU5OWU0NmZhMWQ5Li41MzE4YTMyZDNjMTI4OTgwMTY1N2E3MDRhZmI3
NjI5M2YxZTY3ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24uY3BwCkBAIC00MSw4ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmli
dXRlcwogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGkKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRl
bnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNhbGw8anNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHk+KCpz
dGF0ZSwgImlkZW50aWZpZXIiKTsKIH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3Rv
dHlwZUZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+Ojpj
YWxsPGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXggZTZlZWE5
OWMwYzYwODY5NTgwYzkwZGEyNDliYjU4MDdhYjI2ZmQ0NS4uNTBmOWI3ZjhhY2JiNDZjMzFlM2E0
ZmE1NDVjOTE2NzAzMzg5ZjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTQxLDggKzQxLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90
b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmFsdGVy
bmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRl
bnRpZmllcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklk
ZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHk+KCpzdGF0ZSwgImlkZW50aWZpZXIi
KTsKIH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRl
cm5hdGVJZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcAppbmRleCBiY2EwZmFkODNjNTFmODk0MTMyYmI4Y2IwZjVmZjkyZWJiMjkxOGM4
Li43NDQyNDljOTc0Yzg4NzNmNjAyNWYyZGM2OGU2ODI5NzY4NTYyYTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNw
cApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMK
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC50b1N0cmluZygpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Y2FsbDxqc1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCBjZjBmMTFiMjlmMDQzZGRi
NmQ3ZTZhOWE3NmY5MTNjNDhhZGY4MjE3Li4wM2E0MTFiNzdmMzQ2NTRmNTdkMTQ4MDc1MDAyMGMw
YjM1ZTdmMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBA
IC0xOTksNyArMTk5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW4KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPjo6Y2FsbDxqc1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0
ZSwgInRvU3RyaW5nIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCA1N2NlYzg2YmVmZTdiNGFmNjhkMmQ1MWE1M2E0
YTI0Yzk1NDU4MDAxLi44YWU0MGUyOWNhMmJiODZmZGIxNjkwNzkxYjdjMTI0NDExM2M3YmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjE4LDcg
KzIxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAi
dG9TdHJpbmciKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDZiOGMwNGFjOGUxOGZlZGFi
ZGY1ODBkODViY2U0ZTI5NDM3YzE3NTguLjYxNTY3OWI1ZTA3MTI1ZWYyYmFiNTgxZWQyOWZlODVm
NDFjNThlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNjAsMjEgKzYwLDIxIEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhTZXF1ZW5jZUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNl
cXVlbmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNB
cmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVz
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0Fy
ZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jV2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRo
Q2xhbXBJblR5cGVkZWYoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuYyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU2V0U2hhZG93KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmco
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcElu
VHlwZWRlZihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
UG9pbnRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0
UmVxdWlyZXNJbmNsdWRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVz
W10gPQogICAgIHsgIlRlc3RTdWJPYmoiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUq
IHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ5Niw3ICs0
OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5KEpTQzo6RQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1
bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5Pigqc3RhdGUsICJmdW5jIik7CiB9CkBAIC01
MjIsNyArNTIyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dCb2R5KEoKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblNldFNoYWRvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZz
Pjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93Qm9keT4oKnN0
YXRlLCAic2V0U2hhZG93Iik7CiB9CkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoU2VxdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25n
TG9uZz4oaW1wbC5tZXRob2RXaXRoU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+
OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VB
cmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKIH0KQEAgLTU1Nyw3ICs1
NTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU2VxdWVuY2VBcmdCb2R5Pigqc3RhdGUsICJudWxsYWJsZVNlcXVlbmNlQXJnIik7CiB9CkBA
IC01NzUsNyArNTc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGEKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVz
QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keT4oKnN0YXRlLCAic2VxdWVuY2VP
Zk51bGxhYmxlc0FyZyIpOwogfQpAQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVT
ZXF1ZW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VPZk51bGxhYmxlc0FyZ0JvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZk51
bGxhYmxlc0FyZyIpOwogfQpAQCAtNjExLDcgKzYxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmNlT2ZVbmlvbnNBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVm
cz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VP
ZlVuaW9uc0FyZ0JvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyIpOwog
fQpAQCAtNjI5LDcgKzYyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdCb2R5KEpTCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHk+
KCpzdGF0ZSwgInVuaW9uQXJnIik7CiB9CkBAIC02NDksNyArNjQ5LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
V2l0aENsYW1wQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1w
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm9keT4oKnN0YXRlLCAiZnVuY1dpdGhD
bGFtcCIpOwogfQpAQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dp
dGhDbGFtcEluVHlwZWRlZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlw
ZWRlZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHk+KCpzdGF0
ZSwgImZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYiKTsKIH0KQEAgLTY4MCw3ICs2ODAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblBvaW50RnVuY3Rpb25CbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8U1ZHUG9pbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC5wb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlv
bkJvZHk+KCpzdGF0ZSwgInBvaW50RnVuY3Rpb24iKTsKIH0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFdURk1vdmUodmFs
dWVzKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2Vx
dWVuY2VGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24iKTsKIH0K
QEAgLTcxNCw3ICs3MTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdTZXF1ZW5j
ZUZ1bmN0aW9uMihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVu
Y3Rpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjJCb2R5Pigqc3RhdGUsICJzdHJp
bmdTZXF1ZW5jZUZ1bmN0aW9uMiIpOwogfQpAQCAtNzMxLDcgKzczMSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2Fs
bFdpdGhTZXF1ZW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KGltcGwuY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1ZW5j
ZUFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGVCb2R5
Pigqc3RhdGUsICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogfQpAQCAt
NzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb24i
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKaW5kZXggZmE0ODczMTU2ZGFmZjYy
Yjg1ODU0NTU5YmRhOTQ1MWZjMzk2ZGNjMy4uOWVkNzI1YjZmMjliMzM5YWViMDQyZjYxMTc5N2Qw
NzRiNTg2MjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKQEAgLTM1LDggKzM1
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxG
cmFtZTsKIGNsYXNzIElkZW50aWZpZXI7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAK
IG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQppbmRleCA4NDQwNjQ3NTJmOTNmZmIxNDdjYjI5MDRkYzZiNjk0N2E0ZjljMWU1
Li5hNWIwMTBiYTczYzJkOGE5YzBmZTEyYzVjYTA5MWVmODZlYThjN2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgYm9v
bCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxs
YmFja09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5jcHAKaW5kZXggZmQ2ZTVlZDcxZjJlMGJjYWYzNTRjZDYyY2UwMjcxOWE1M2FjMTc3OC4u
MjlmM2U1MGQ2ZTA0ZGQ3ZGYyMzQzMGY4ZjAyYjY5ODA2YmNlZGI5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBCaW5kaW5nczsKIAogV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVN
ZXRob2Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVNZXRob2Qp
IH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0
aG9kKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUnVudGltZU1l
dGhvZDo6UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgTWV0aG9kKiBtZXRob2QpCiAgICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMg
bmF0aXZlIG9iamVjdCAibWV0aG9kIi4KQEAgLTg1LDcgKzg1LDcgQEAgSXNvU3Vic3BhY2UqIFJ1
bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCiAgICAgcmV0dXJuICZzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5ydW50aW1lTWV0aG9kU3BhY2Uo
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVN
ZXRob2QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcAppbmRleCA4NzNiYTM0NmJjNGZhM2QyNzdhZDUwNGYyNzczMzBlMjk2MzQy
ZWMzLi5kYzAwMGE0NTA5YzI0YTY0YzBhYTk2MjYwODM0N2JmNjVhYTcwNTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBKU1Zh
bHVlIFJ1bnRpbWVPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIEFTU0VSVChleGVjLT5qc0NhbGxlZSgpLT5pbmhlcml0czxSdW50aW1lT2JqZWN0PihleGVj
LT52bSgpKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50
aW1lT2JqZWN0Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CkBA
IC0yNDYsNyArMjQ2LDcgQEAgQ2FsbFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxSdW50aW1lQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0g
ZXhlYy0+anNDYWxsZWUoKTsKICAgICBBU1NFUlQoY29uc3RydWN0b3ItPmluaGVyaXRzPFJ1bnRp
bWVPYmplY3Q+KGV4ZWMtPnZtKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9TdWJ0bGVDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaApp
bmRleCBmNTE4YzEyNmE4MDcyM2Q2NTJkNTg0NzE4ZjEyYWY2ZDgyZTQ0YjZlLi4zNWIxN2FlZjU5
NjlkYTgzZjFhZjczZGI5NDMzMTZjOTU1MWNlZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRs
ZUNyeXB0by5oCkBAIC0zOSw3ICszOSw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5
QnVmZmVyVmlldzsKIGNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
Q2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDY3NmZiYTg1MzJmNjBhOGM1
Y2Q0Yjc1MjQwY2ViOWJkOTM2YzhiM2QuLmY1MjJkZjRiYjEyNjcyMTBlODZmODUxYjZlYjY2MzYx
NmU4YTQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0zOCw3ICszOCw4IEBACiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmgKaW5kZXggNTg5Yzg0MWNjM2U4OGNlNzllNzQyZTdiMmJiMzRhZTll
NjlmMDhhYi4uMWY3ODI0MmM1OTYyZDg1MWIxYzBhOTI4YWQ2MzFjZDhiZTQyOGFkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKQEAgLTMy
LDcgKzMyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDEwZTM0ZDI1NTMyOWUzM2RkMDUzOTU2NzBiZGE5ZTBjZTNlZDI5ODYu
LjZiZjYxOWNkMTE2MTEyM2YzZmU1OTAzODQ2ZDczMzFmOTRkNjU0ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC04MSw4ICs4MSw5IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBJbnB1dEN1cnNvcjsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaAppbmRleCAyNjU2YmI0MzRjZWU2NzE3NWZkNmIxNWEwYmI5MmM4MzFh
MDhjY2E3Li4wYjVmM2Q4N2MwMTU4NDU1NjJiYzkyOWM3Y2Y4ZjhlYjc0ZGY0OTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtMzYsOSArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxG
cmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjBlNjU0YjczMGI5ZGUyYTY1MGNjZTUy
NDI4NDI2ZTA2YzljMTIyZS4uZWZiMDE2ZjU1YzUzMDRmZGE2YjQ1ZGE0YzE3MGM2MWRhYjNhMDhm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC00
MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVj
U3RhdGU7CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBWTTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBTdHJvbmc7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5o
CmluZGV4IGQxZjRlMjAyNTE2YzhhOTNjOGUzM2YyNjFiNmFlNzAxM2YzODQzNmEuLjQxNDZlZTdl
NjIzMzE0OGI1MGJhMDRlNjc0MDU0YTY0MWZkZTc2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oCmluZGV4
IDMxMTU0ODhlYzA2ZmUzNTg0MTU2MGNhMjFkNDI5MjI0YTg4Njg3Y2UuLjVlZjdlYzQxMDBlNjdi
N2Q2YWFlZWNkYWFjNmVkOTE1MjEzM2U3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xBbnkuaApAQCAtMzMsOCArMzMsOSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4
QXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggODA0ZjJiY2IyODk2ZmM5MDFjMzU1NGFk
NjgzNGFjMWJhYWE0NTNjMC4uMDM0ZTFlZjQ3MTU4MWY0NzFiZmY4MjhiNWQxMzZjZjczOTYxMmM0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtNDYsOCArNDYsOSBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiB9CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggMGMxMWQyODQzYzU1M2I5MDIyMzY2
YmJmZmJlY2Y4NDkwN2YyMzYyYS4uMTQ4N2IxMzFlNmI5ZjY4MGE4YjIyY2RjZjNiOTRmMTU0NTM3
NWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC0zNiw3ICszNiw4IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRl
eCA4OGUzMjdhZmY2OGQ3ZDJkNzM1NWMwYTAwMTBiMzQ4Y2FkMWM3YzUzLi5iNDgyMjRlYmYyZDY4
NjBjNDNjOTU5YTUxYjZlNWM0OGMzZmMzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAg
LTQyLDEwICs0MiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7
CiBjbGFzcyBKU1ZhbHVlOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCmluZGV4IGZmYmY2MmIyMDFmZTMxMjg1Mzgy
MTc4YzM0OWQwYWIyYjc0ZTU1NzAuLmQ1NmE2ZjVkMTE5ODBjYjRmYjI4N2ZhMmM3NWIxNmQyZDUz
OTUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKQEAgLTM3LDcg
KzM3LDggQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiB9CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaAppbmRleCA5M2ZlZTFlYmI0YTE5OTEyNmFiZjg3ODgwMzI2MzkyOTg2ZWVmMzBkLi5m
NTViZjZhMWM5MGFlOGE4YTc3YjFhZThlOTk2Mzk0NDJkZTU4YzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9U
eXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgU3Ryb25nOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oCmluZGV4IDZiNjQyZjE5MDc3N2MzMGNkMTI4MjRmZGZiNGE1ODgzNDQ4
ODg0YjguLmRjMDJiZjRmMzA2ZWFmMjhmOWY0YTRmMWNhYjMwOTU5YjY2ZDM0NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0zNyw3
ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAppbmRleCA3ZjdmNjQ0ZTQ3MTdkOTg5ZTEwZTU0ZGFl
NWUxMWU1YzAxZGZlZjI1Li4yZGVkZmE5NzI1Njg1MjA1ZGM1Yjg5YWEzNmU2NTU2OGZhYjI0OGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC0zMSw3
ICszMSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IDVmYWJkYWM2NDY3OGI2OWNiMTEwNDFlNmY3MGY5
ZjY4MmYzOWUwOTAuLmRhZjFkOTMxYmFmMTY0MWRiZWNlYjM4YzIzMTE3NDhiMmJhN2ZjZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKQEAgLTM2LDkgKzM2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBpZDsKICNlbmRpZgogCiBuYW1lc3BhY2UgSlND
IHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIHVzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgKaW5kZXggZWUzMWM3Y2VjNWVmZTlmZmZiYTc0MGNjMDVjM2I1ODBmNzBjZjkyNC4uOGUz
YmZhODdlYzU4ZjA2OGEzMjk4NDA5YWE1NmIxNGY5YzAwNjBkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdI
YXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmluZGV4IDM4NDZkMjcxYjY4YmQ2OTgyMDAwYjUy
YjlhYmFiOTc2NzY3NjE0NjkuLmNiN2RmNjc0YWUwODIwNWMxOTE5ZTQ2M2Q2ZmMzYTdlNGJjMGVl
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCkBA
IC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCmluZGV4
IDBlZTgxNzZlYzU5OWY3OTQxZWY3Y2VjYjA5MTRlZGVlYTg1N2UzMTEuLjkzYThlYWRkNzAzMDBj
ZWM4YzU4YmNmMmJhYzExZDk0N2IzMjhjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAtMzUsOCArMzUs
OSBAQAogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKaW5kZXggNjMxZGFlOTkwMWFj
OWE0M2QyMDg2OWVhNWQ4MWZjMzM0NThjOGU5MC4uMWJiNzEzZDcwOWExZDY4MjhkYWE3MjQ5Zjk0
YTdmYmNlYmZkMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBN
ZXRob2QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5jcHAKaW5kZXggZTA3NDNlNGExYjBlNjE4OTRmNTk3MDE5OWNlMjNhNTVhMGQ0Zjg4
My4uMDQ4MDM3ZTQ4NGQwM2Y3NzY5MDc3NDYyOTIyYmFiMmY4NTRjMDVjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhv
ZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTTlBNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gSlNOUE1ldGhvZDo6c19pbmZv
ID0geyAiTlBNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTlBNZXRob2QpIH07CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIEpTTlBNZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5QSWRlbnRpZmllciBucElkZW50aWZpZXIp
CiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBj
YWxsTWV0aG9kLCBudWxscHRyKQpAQCAtNjYsNyArNjYsNyBAQCBJc29TdWJzcGFjZSogSlNOUE1l
dGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKICAgICByZXR1cm4gJnBlclZNLmdldCgpLmZv
clZNKHZtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBlNTcxNTFjMDg0MGZk
MThmNTlkMTlhYzBlMDkzMGIyYzllYTAzZWNmLi42Y2M1YjJmODBkM2UwYTdmMTU5NDhkYjRiMjNh
OWUyZDI1M2I5MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIEpTVmFs
dWUgSlNOUE9iamVjdDo6Y2FsbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxO
UEpTT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxOUEpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5qc0NhbGxl
ZSgpOwogICAgIEFTU0VSVChvYmplY3QtPmluaGVyaXRzPEpTTlBPYmplY3Q+KGV4ZWMtPnZtKCkp
KTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBKU0M6OkNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxE
YXRhKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YQogICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU09i
amVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwogICAgIEFTU0VSVChjb25zdHJ1
Y3Rvci0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZXhlYy0+dm0oKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuaAppbmRleCA2OWNhNTExODE0MzlkZmU5YzFkMTY1NzNlNTg2OTAxM2FmN2EwY2Fl
Li42NmYxZmM0MDliMTY1YTMxNDE5YjY1OTA1M2I0NTI3MjFiODg5MDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RN
YXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaApAQCAtMzgsMTEgKzM4LDEyIEBAIHN0cnVjdCBOUE9iamVjdDsKIHR5
cGVkZWYgc3RydWN0IF9OUFZhcmlhbnQgTlBWYXJpYW50OwogCiBuYW1lc3BhY2UgSlNDIHsKLSAg
ICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIFZNOwog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNz
IEpTVmFsdWU7CisgICAgdXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIuaAppbmRleCA4MzU3ZDkxY2E1YzVjMjRlN2Q2NDczNmNlZWVlM2E1YjBk
NjY1YWU1Li43OWMyYTY5MThlYjRjOGE3MDk4YTVkNTliYjAwNWM1NjA1ODI4YWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5o
CkBAIC0zNiwxMSArMzYsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgeworICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBEZWJ1Z2dlckNhbGxG
cmFtZTsKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgQXJnTGlzdDsKKyAgICB1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIEBjbGFzcyBXZWJTY3JpcHRDYWxsRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380200</attachid>
            <date>2019-10-04 02:04:10 -0700</date>
            <delta_ts>2019-10-04 02:56:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-202569-20191004020409.patch</filename>
            <type>text/plain</type>
            <size>1286803</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YWNkZDAwZWE0OTRmMGQ5M2NkZTM5YzYxMDk1OTUzYWM1OTE4ZGIyLi43Y2ViZmRjNzkxNGQwODVm
Yjk0ZDA1YzQ0NWJhODk0NGZmNzYzM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NzcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAg
ICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvQVBJQ2FzdC5oOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9i
YWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNCYXNlSW50ZXJu
YWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUu
aDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRy
eS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
QXR0cmlidXRlRXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVy
YXRvckVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldElu
dGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3Bl
RGVzY3JpcHRpb25zKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU291cmNlSUQpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVl
ZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxs
ZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxl
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxv
Y2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVC
bG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjpyZWdpc3RlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZU9yRW50cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnJldHVyblBDIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNSZXR1cm5QQyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJSZXR1cm5QQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFic3RyYWN0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnRvcE9mRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENh
bGxlckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJl
c3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVj
a2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3Vt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnZXRBcmd1bWVudFVuc2Fm
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldFRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4
ZWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpz
ZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0ZXJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9yUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgorICAg
ICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5oOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAg
ICAgICAqIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6
OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnRTdGRPdXQpOgorICAgICAgICAoZnVuY3Rpb25Qcmlu
dFN0ZEVycik6CisgICAgICAgIChmdW5jdGlvbkRlYnVnKToKKyAgICAgICAgKGZ1bmN0aW9uRGVz
Y3JpYmUpOgorICAgICAgICAoZnVuY3Rpb25EZXNjcmliZUFycmF5KToKKyAgICAgICAgKGZ1bmN0
aW9uU2xlZXBTZWNvbmRzKToKKyAgICAgICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAo
ZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcFNpemUpOgorICAgICAgICAo
ZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspOgorICAgICAgICAoZnVuY3Rpb25BZGRyZXNzT2YpOgor
ICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6CisgICAgICAg
IChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAg
ICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdG
bGFncyk6CisgICAgICAgIChmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyk6CisgICAgICAgIChm
dW5jdGlvbkdldFJhbmRvbVNlZWQpOgorICAgICAgICAoZnVuY3Rpb25TZXRSYW5kb21TZWVkKToK
KyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNl
T3JpZ2luKToKKyAgICAgICAgKGZ1bmN0aW9uUmVhZGxpbmUpOgorICAgICAgICAoZnVuY3Rpb25Q
cmVjaXNlVGltZSk6CisgICAgICAgIChmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pOgorICAg
ICAgICAoZnVuY3Rpb25Ob0RGRyk6CisgICAgICAgIChmdW5jdGlvbk5vRlRMKToKKyAgICAgICAg
KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyk6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCk6CisgICAgICAgIChmdW5jdGlvbkRv
bGxhckNyZWF0ZVJlYWxtKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6Cisg
ICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOgorICAgICAgICAoZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
cG9ydCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U2xlZXApOgorICAgICAgICAoZnVu
Y3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50
R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKToKKyAgICAg
ICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3cpOgorICAgICAgICAoZnVuY3Rpb25X
YWl0Rm9yUmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcENhcGFjaXR5KToKKyAgICAgICAg
KGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKToKKyAgICAgICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKGZ1bmN0aW9uTWFsbG9jSW5BTG9vcCk6CisgICAgICAgIChm
dW5jdGlvblRvdGFsQ29tcGlsZVRpbWUpOgorICAgICAgICAoZnVuY3Rpb25KU0NPcHRpb25zKToK
KyAgICAgICAgKGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KToKKyAgICAgICAgKGZ1
bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3
Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1bmN0aW9uUXVpdCk6CisgICAgICAgIChmdW5jdGlvbkZh
bHNlKToKKyAgICAgICAgKGZ1bmN0aW9uVW5kZWZpbmVkMSk6CisgICAgICAgIChmdW5jdGlvblVu
ZGVmaW5lZDIpOgorICAgICAgICAoZnVuY3Rpb25Jc0ludDMyKToKKyAgICAgICAgKGZ1bmN0aW9u
SXNQdXJlTmFOKToKKyAgICAgICAgKGZ1bmN0aW9uSWRlbnRpdHkpOgorICAgICAgICAoZnVuY3Rp
b25FZmZlY3RmdWw0Mik6CisgICAgICAgIChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAg
ICAgIChmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAoZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Mp
OgorICAgICAgICAoZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMpOgorICAgICAgICAoZnVuY3Rpb25J
czMyQml0UGxhdGZvcm0pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblBs
YXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAgICAgKGZ1bmN0aW9uR2VuZXJh
dGVIZWFwU25hcHNob3QpOgorICAgICAgICAoZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZv
ckdDRGVidWdnaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6
CisgICAgICAgIChmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChmdW5jdGlv
blN0YXJ0U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyk6CisgICAgICAgIChmdW5jdGlvbk1heEFyZ3VtZW50cyk6CisgICAgICAg
IChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KToKKyAgICAgICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFz
c2VkKToKKyAgICAgICAgKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKToKKyAgICAgICAg
KGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAocnVuV2l0
aE9wdGlvbnMpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENh
bGwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEFy
cmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAg
IChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNT
cGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OmF0b21pY3NGdW5jQWRkKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNB
bmQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0NvbXBhcmVFeGNoYW5nZSk6CisgICAgICAg
IChKU0M6OmF0b21pY3NGdW5jRXhjaGFuZ2UpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0lz
TG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0xvYWQpOgorICAgICAgICAoSlND
OjphdG9taWNzRnVuY09yKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNTdG9yZSk6CisgICAg
ICAgIChKU0M6OmF0b21pY3NGdW5jU3ViKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWl0
KToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWtlKToKKyAgICAgICAgKEpTQzo6YXRvbWlj
c0Z1bmNYb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsQmlnSW50Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpiaWdJbnRD
b25zdHJ1Y3RvckZ1bmNBc1VpbnROKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29uc3RydWN0b3JG
dW5jQXNJbnROKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgIChKU0M6OmJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKToKKyAg
ICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoQm9vbGVh
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlh
dGVCb29sZWFuKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29s
ZWFuUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlQ2xpZW50Lmg6CisgICAgICAgICog
cnVudGltZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc29sZUxvZ1dpdGhM
ZXZlbCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNEZWJ1Zyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNFcnJvcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1
bmNMb2cpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jSW5mbyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNXYXJuKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVu
Y0NsZWFyKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Rpcik6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNEaXJYTUwpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGFibGUpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVHJhY2UpOgorICAgICAg
ICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVBy
b3RvRnVuY0NvdW50KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQp
OgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jUHJvZmlsZSk6CisgICAgICAgIChKU0M6
OmNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1Rha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGlt
ZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY1RpbWVFbmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGltZVN0YW1wKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY0dyb3VwRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1JlY29yZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQpOgor
ICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdCk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbERhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUGFyc2UpOgorICAgICAgICAo
SlNDOjpkYXRlTm93SW1wbCk6CisgICAgICAgIChKU0M6OmRhdGVOb3cpOgorICAgICAgICAoSlND
OjpkYXRlVVRDKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9U
aW1lU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAgICAg
KEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51dGVz
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vj
b25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRNaWxsaVNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTWlsbGlz
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNTZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0SG91cnMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jU2V0RGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldE1vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY1NldFVUQ01vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldEZ1bGxZ
ZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0pTT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjYWxsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkVycm9yQ29u
c3RydWN0b3I6OnB1dCk6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRp
b25GdXp6Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbEZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Q
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Omluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAg
IChKU0M6OkludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0SW50bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRvcik6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yRnVuY0NvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVH
ZXR0ZXJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6
CisgICAgICAgIChKU0M6OmNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxO
dW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JG
dW5jU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjppbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJ
bnRsUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFBsdXJhbFJ1bGVzKToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KToKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdN
b2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlCdWZm
ZXIpOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlckZ1bmNJc1ZpZXcpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OnNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aCk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3Vu
ZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OmlzQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc0luc3RhbmNlQm91bmRG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6
CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAoSlNDOjpkYXRhVmll
d1Byb3RvR2V0dGVyQnVmZmVyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCk6CisgICAgICAgIChKU0M6
OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3Rv
RnVuY0dldEludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KToKKyAgICAgICAgKEpT
Qzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEZs
b2F0NjQpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDgpOgorICAgICAg
ICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZp
ZXdQcm90b0Z1bmNTZXRJbnQzMik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNik6CisgICAg
ICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1
bmNTZXRGbG9hdDY0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmll
dyk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
bGljZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3Vi
YXJyYXlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6YXNzZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OmVu
cXVldWVKb2IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQYXJzZUludCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQYXJzZUZsb2F0KToKKyAgICAg
ICAgKEpTQzo6Z2xvYmFsRnVuY0RlY29kZVVSSSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNE
ZWNvZGVVUklDb21wb25lbnQpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRW5jb2RlVVJJKToK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudCk6CisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNFc2NhcGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVW5lc2NhcGUp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jQnVpbHRpbkxvZyk6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNCdWlsdGluRGVzY3JpYmUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAg
ICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5j
RGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSk6
CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVy
UmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3Rk
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU09OT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKEpT
Qzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJheVZpZXcp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAgICAgIChK
U0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xh
c3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY1RvU3RyaW5nVGFnKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbE1hcCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAg
IChKU0M6Om1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCk6CisgICAgICAgIChKU0M6Om1hcFBy
aXZhdGVGdW5jTWFwQnVja2V0TmV4dCk6CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFw
QnVja2V0S2V5KToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TWFwKToKKyAgICAgICAgKEpTQzo6
bWFwUHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNEZWxldGUpOgor
ICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNIYXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQWJzKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0FDb3MpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbik6CisgICAgICAgIChKU0M6
Om1hdGhQcm90b0Z1bmNBVGFuKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4yKToK
KyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0NlaWwpOgorICAgICAgICAoSlNDOjptYXRoUHJv
dG9GdW5jQ2x6MzIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ29zKToKKyAgICAgICAg
KEpTQzo6bWF0aFByb3RvRnVuY0V4cCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNGbG9v
cik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNIeXBvdCk6CisgICAgICAgIChKU0M6Om1h
dGhQcm90b0Z1bmNMb2cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4KToKKyAgICAg
ICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNQ
b3cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUmFuZG9tKToKKyAgICAgICAgKEpTQzo6
bWF0aFByb3RvRnVuY1JvdW5kKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NpZ24pOgor
ICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU2luKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY1NxcnQpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuKToKKyAgICAgICAgKEpT
Qzo6bWF0aFByb3RvRnVuY0lNdWwpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQUNvc2gp
OgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbmgpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jQVRhbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ2JydCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDb3NoKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0V4cG0xKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Zyb3VuZCk6CisgICAgICAgIChK
U0M6Om1hdGhQcm90b0Z1bmNMb2cxcCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cx
MCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cyKToKKyAgICAgICAgKEpTQzo6bWF0
aFByb3RvRnVuY1NpbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuaCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUcnVuYyk6CisgICAgICAgICogcnVudGltZS9NYXRoT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9NaWNyb3Rhc2suaDoKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok5hdGl2ZUZ1bmN0aW9uOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFnZ2VkTmF0
aXZlRnVuY3Rpb246Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNh
bGxSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1
cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OmNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2Fm
ZUludGVnZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCk6CisgICAgICAgIChKU0M6Om51
bWJlclByb3RvRnVuY1RvRml4ZWQpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1By
ZWNpc2lvbik6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JBc3NpZ24pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVu
c2libGUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJv
cGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAg
ICAgIChKU0M6OnByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0UHJveHlPYmplY3QpOgorICAgICAgICAoSlNDOjpjYWxsUHJveHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3Jt
UHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
UmV2b2tlKToKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpyZWZsZWN0T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0SXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktl
eXMpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMpOgorICAg
ICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dFNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaCk6
CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKToKKyAgICAgICAgKEpT
Qzo6cmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yUmlnaHRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0
b3JJbnB1dCk6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToK
KyAgICAgICAgKEpTQzo6ZXNTcGVjUmVnRXhwQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbFJlZ0V4cENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90
b0Z1bmNUZXN0RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0Z1bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVyTXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJEb3RB
bGwpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclN0aWNreSk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3Rv
R2V0dGVyRmxhZ3MpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclNvdXJjZSk6Cisg
ICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QpOgorICAgICAgICAoSlNDOjpy
ZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAoSlND
OjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRl
RnVuY1NldEJ1Y2tldE5leHQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEtleSk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jQWRkKToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jQ2xlYXIp
OgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNEZWxldGUpOgorICAgICAgICAoSlNDOjpzZXRQ
cm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJv
bUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNh
bGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3Vic3RySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cik6CisgICAgICAgIChKU0M6OmJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1RvTG93ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9VcHBl
ckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6dG9Mb2NhbGVDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
VG9Mb2NhbGVMb3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvY2Fs
ZVVwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RyaW0pOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNUcmltRW5kKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nSW5jbHVkZXNJbXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5j
bHVkZXMpOgorICAgICAgICAoSlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjYWxsU3ltYm9sKToKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JGb3IpOgor
ICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvcktleUZvcik6CisgICAgICAgICogcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0dldHRlckRl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Ro
cm93U2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAg
ICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtSZWYpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
ZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRXZWFrUmVmKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1Jl
ZkRlcmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNhbGxXZWFrU2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6
CisgICAgICAgICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0V2Vha1NldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxldGUpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldEFkZCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OkRPTUpJVEdldHRlckNvbXBsZXg6OmZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6RE9NSklURnVuY3Rpb25PYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVD
aGVjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVz
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpOgor
ICAgICAgICAoSlNDOjpmdW5jdGlvbkNyYXNoKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25CcmVh
a3BvaW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25ERkdUcnVlKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25GVExUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVNZmVuY2UpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNwdVJkdHNjKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVD
cHVpZCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1UGF1c2UpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkNwdUNsZmx1c2gpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxMaW50VHJ1ZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uSklUVHJ1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTm9J
bmxpbmUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdDKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25FZGVuR0MpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
b2RlQmxvY2tGb3JGcmFtZSk6CisgICAgICAgIChKU0M6OmNvZGVCbG9ja0Zyb21BcmcpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
RHVtcFNvdXJjZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6ZG9QcmludCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGF0YUxvZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJpbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1
bXBDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdGFjayk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uRHVtcFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVt
cENlbGwpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblZhbHVl
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRQSUQpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkhhdmVBQmFkVGltZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVQcm94eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUnVu
dGltZUFycmF5KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVOdWxsUm9wZVN0cmluZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyQ29tcGxleE9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
RnVuY3Rpb25PYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRl
ckJhc2VKU09iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWlu
Z1BhcnNlcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVCdWlsdGluKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25HZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVJvb3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdldEVsZW1lbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVNpbXBsZU9i
amVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblNldEhpZGRlblZhbHVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25TaGFk
b3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0R2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3cpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUmV0dXJu
VHlwZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRW5hYmxl
RGVidWdnZXJNb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkRpc2FibGVEZWJ1
Z2dlck1vZGVXaGVuSWRsZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdo
ZW5JZGxlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxvYWRHZXR0
ZXJGcm9tR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21U
ZXN0R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0
ZXJmbGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uVG90YWxHQ1RpbWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblBhcnNlQ291bnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbklzV2FzbVN1
cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRW1iZWRkZXIuaDoKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVG
dW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2Vt
Ymx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlNZW1vcnkpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVs
ZUN1c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRz
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dl
YkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKEpT
Qzo6Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAg
IChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24pOgorICAgICAgICAqIHlhcnIvWWFyckVycm9yQ29kZS5oOgor
CiAyMDE5LTEwLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggdGVzdG1hc20gZmFpbHVyZSBvbiBBU2FuIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjRkNjIw
Mzg2Nzk4ZmM5YzU0MWUzZTVjYjFmOTg1OTAwODRjY2NlLi5jNzM3ODFjMjg3MmJiN2FlMzRhYjVl
YmQ2YzFhNzM0ZmE1MGZlNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDE5IEBACisyMDE5LTEw
LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
Q2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFu
dFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlSYW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250
ZXh0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5Lmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUNvbnN0cnVjdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsVGhyb3dUeXBlRXJy
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyk6
CisgICAgICAgIChXZWJDb3JlOjppc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okl0
ZXJhdG9yVHJhaXRzPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0bGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxsUGx1Z2luKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0
SGFuZGxlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1N0cnVjdHVyZWRD
bG9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogYmluZGluZ3MvanMv
U3RydWN0dXJlZENsb25lLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBvbGluZURlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbik6CisgICAgICAg
IChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKToKKyAgICAgICAgKEdlbmVyYXRlTGVn
YWN5Q2FsbGVyRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUl0ZXJhYmxlRGVmaW5pdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMpOgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25HZXQpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25IYXMpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDRVJlYWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lm
aWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFy
aWFudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5
cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blJlZ3VsYXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRp
bWVGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0
U2VjcmV0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
Mik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbklt
cGxlbWVudHNNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFt
ZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlw
ZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5z
dGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVu
Y3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9k
ZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsSlNUZXN0T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
blN0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNl
Y3JldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldFNlY3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRo
b2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZVN0cmluZ1NwZWNpYWxNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVU1ZTdHJpbmdBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0Fy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Qcml2YXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRl
T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4
ZWNTdGF0ZVZvaWRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2Jq
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2Fs
bGVyRG9jdW1lbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFy
Z0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0Vt
cHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG9uZ0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9u
Z0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTZXF1ZW5jZUlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFs
c2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBbnkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9u
YWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0
YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNo
aW5nVW5pb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbkNsYXNzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25P
cHRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25Q
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Mik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFy
Z3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVu
Y3Rpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0
b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE92ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9u
YXJ5UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlMSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlv
blRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5j
dGlvblRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmlu
Zyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU2VxdWVuY2VPZlVuaW9uc0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blN0cmluZ1NlcXVlbmNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAgICogYnJpZGdlL2MvY191
dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRob2Qp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpjYWxsUnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxs
UnVudGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xBbnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5oOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdCYXNlLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50Lmg6CisK
IDIwMTktMTAtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICBbaU9T
XSBXZWJDb250ZW50IHByb2Nlc3MgY2FuIGJlIGludGVycnVwdGVkIGR1cmluZyBzdXNwZW5zaW9u
OyBsb3NlcyAiTm93IFBsYXlpbmciIHN0YXR1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMTk2OGU1ZDFhNGY3ODFh
NTgzODFjMzY0M2FmMjE5ZWEzNGFlMzYxLi5lOTA2MjllYTNiNjUzMmFkOTVkMDlmZmNjMmY5ODAw
ZTgzNGEyOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTA0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQ2hhbmdlIHNpZ25h
dHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxs
TWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhbGxOUEpTT2JqZWN0KToKKyAgICAgICAgKFdlYktp
dDo6Y29uc3RydWN0V2l0aENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisKIDIwMTktMTAtMDMgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFNvY2tldCBSV0kgY2xp
ZW50IHNob3VsZCBhY3F1aXJlIGJhY2tlbmQgY29tbWFuZHMgZnJvbSBzZXJ2ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBiY2U2MzQ2MzlkNzg5NzI5NDgxNjUyYzA4MzdlYTUwODE3
MjE0NjgxLi40NDY5ZGM5MzgyNDE2ZDE0NjNmOWI2NTkwYzhjNjM4YTE3MDFhOWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMDQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2ln
bmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLmg6CisKIDIwMTktMTAtMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvdmlkZSBUQVBJIHRoZSBmdWxsIHRhcmdl
dCB0cmlwbGUgaW5zdGVhZCBvZiBqdXN0IHRoZSBhcmNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGU1MjgzYjViNDJjZDNjOGRhYTYz
ZjI5ZmMyZmU5ODg2MTNkNmM4ZGUuLmVhNzg0OGRlZTFhYjY1MThlYTdkN2M1NWVmMWRlM2IxMWUz
YjU4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oCkBAIC0zNiw3MiArMzYsNzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBBUElD
YWxsYmFja0Z1bmN0aW9uIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNT
dGF0ZSopOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNh
bGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxs
YmFja0Z1bmN0aW9uOjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwotICAgIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmpl
Y3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSkpOworICAgIEpTQ29udGV4dFJlZiBleGVj
UmVmID0gdG9SZWYoY2FsbEZyYW1lKTsKKyAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRv
UmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9
IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgTm90U3RyaWN0TW9kZSkpKTsKIAotICAgIGludCBhcmd1bWVudENvdW50ID0gc3Rh
dGljX2Nhc3Q8aW50PihleGVjLT5hcmd1bWVudENvdW50KCkpOworICAgIGludCBhcmd1bWVudENv
dW50ID0gc3RhdGljX2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAg
VmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50OyBpKyspCi0gICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9S
ZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJndW1lbnRz
LnVuY2hlY2tlZEFwcGVuZCh0b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoaSkpKTsKIAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVl
UmVmIHJlc3VsdDsKICAgICB7Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhleGVjKTsKKyAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGNh
bGxGcmFtZSk7CiAgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxUKj4odG9KUyhmdW5jdGlvblJlZikp
LT5mdW5jdGlvbkNhbGxiYWNrKCkoZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFy
Z3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAgIH0KICAgICBp
ZiAoZXhjZXB0aW9uKQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29w
ZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwogCiAgICAgLy8gcmVzdWx0IG11c3QgYmUg
YSB2YWxpZCBKU1ZhbHVlLgogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTKGV4ZWMsIHJlc3VsdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhjYWxs
RnJhbWUsIHJlc3VsdCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlv
bjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEpTQ29u
dGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBj
YWxsRnJhbWUtPmpzQ2FsbGVlKCk7CisgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGNhbGxG
cmFtZSk7CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rv
cik7CiAKICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2sgPSBq
c0Nhc3Q8VCo+KGNvbnN0cnVjdG9yKS0+Y29uc3RydWN0Q2FsbGJhY2soKTsKICAgICBpZiAoY2Fs
bGJhY2spIHsKLSAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENv
dW50KCk7CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAg
ICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAg
ICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpKSk7CisgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRv
UmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogCiAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgSlNPYmplY3RSZWYgcmVzdWx0
OwogICAgICAgICB7Ci0gICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoZXhlYyk7CisgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
Y2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3RydWN0
b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGNhbGxGcmFtZSwg
ZXhjZXB0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gcmVzdWx0IG11c3QgYmUgYSB2YWxp
ZCBKU1ZhbHVlLgogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMocmVzdWx0KSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9BUElDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3Qu
aAppbmRleCBiMmYzODg4YjY1MWI5N2QzOWM0YzVlMTg0ZjUwMjdkYmRjMDhlMmIwLi4zYjgyMGU5
ZTZmMzRmYjYyZWJmYTg3MjVjOGIzNzk2OWRlNmNiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0FQSUNhc3QuaApAQCAtMzMsMTEgKzMzLDEyIEBACiAjaW5jbHVkZSAiSGVhcENlbGxJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBD
YWxsRnJhbWU7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgVk07CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICB1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4
dEdyb3VwKiBKU0NvbnRleHRHcm91cFJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IGYwN2EyZGFiYjMwZjU4ZTgxYzZjOGY5OTcyMmZj
NzUzZWQ1NmY1N2UuLmQ5YTQzMzYzMTE5NDM1YmU1Njc4ZmE2NjE5NWViNGQ0ODhkZmQ5MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAt
MTc3LDE3ICsxNzcsMTcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJu
IGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vIG1vZHVsZSBsb2Fk
ZXIgcHJvdmlkZWQuIikpOwogCiAgICAgYXV0byBkZWZlcnJlZFByb21pc2UgPSBTdHJvbmc8SlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZD4odm0sIGRlZmVycmVkKTsKLSAgICBhdXRvKiByZXNvbHZl
ID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZXNv
bHZlIiwgWz1dIChFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBhdXRvKiByZXNvbHZlID0gSlNOYXRp
dmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZXNvbHZlIiwgWz1d
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgewog
ICAgICAgICAvLyBUaGlzIGNhcHR1cmVzIHRoZSBnbG9iYWxPYmplY3QgYnV0IHRoYXQncyBvayBi
ZWNhdXNlIG91ciBzdHJ1Y3R1cmUga2VlcHMgaXQgYWxpdmUgYW55d2F5LgotICAgICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2Jh
bENvbnRleHRSZWY6dG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpXTsKLSAg
ICAgICAgaWQgc2NyaXB0ID0gdmFsdWVUb09iamVjdChjb250ZXh0LCB0b1JlZihleGVjLCBleGVj
LT5hcmd1bWVudCgwKSkpOworICAgICAgICBpZCBzY3JpcHQgPSB2YWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIHRvUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogCiAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAKICAgICAgICAgYXV0byByZWplY3RQcm9taXNl
ID0gWyZdIChTdHJpbmcgbWVzc2FnZSkgewotICAgICAgICAgICAgYXJncy5hcHBlbmQoY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKLSAgICAgICAgICAgIGNhbGwoZXhlYywgZGVmZXJy
ZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3Vs
ZCBuZXZlciBiZSBzZWVuLi4uIik7CisgICAgICAgICAgICBhcmdzLmFwcGVuZChjcmVhdGVUeXBl
RXJyb3IoY2FsbEZyYW1lLCBtZXNzYWdlKSk7CisgICAgICAgICAgICBjYWxsKGNhbGxGcmFtZSwg
ZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlz
IHNob3VsZCBuZXZlciBiZSBzZWVuLi4uIik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7CiAgICAgICAgIH07CiAKQEAgLTIwNiwxNSArMjA2LDE1IEBAIEpTSW50ZXJu
YWxQcm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZShtYWtlU3Ry
aW5nKCJUaGUgc2FtZSBKU1NjcmlwdCB3YXMgcHJvdmlkZWQgZm9yIHR3byBkaWZmZXJlbnQgaWRl
bnRpZmllcnMsIHByZXZpb3VzbHk6ICIsIG9sZE1vZHVsZUtleSwgIiBhbmQgbm93OiAiLCBtb2R1
bGVLZXkuc3RyaW5nKCkpKTsKIAogICAgICAgICBhcmdzLmFwcGVuZChzb3VyY2UpOwotICAgICAg
ICBjYWxsKGV4ZWMsIGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUo
KSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKKyAgICAgICAgY2FsbChj
YWxsRnJhbWUsIGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUoKSwg
YXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1VuZGVmaW5lZCgpOwogICAgIH0pOwogCi0gICAgYXV0byogcmVqZWN0ID0gSlNOYXRp
dmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZWplY3QiLCBbPV0g
KEV4ZWNTdGF0ZSogZXhlYykgeworICAgIGF1dG8qIHJlamVjdCA9IEpTTmF0aXZlU3RkRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAicmVqZWN0IiwgWz1dIChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7Ci0gICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAg
ICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKLSAgICAgICAgY2FsbChl
eGVjLCBkZWZlcnJlZFByb21pc2UtPkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUs
IGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdCgpLCBhcmdzLCAiVGhp
cyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5k
ZWZpbmVkKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlSW50
ZXJuYWwuaAppbmRleCBhMjc0YWY5NmU4YzQwOTk3Njc2NWMxMzM4ZjJlZjJhMWZiZWQxNmZkLi5h
MmZjYzVjZGJkOTc4ZDJhMzRkZTk5MTI5YWZiY2NmODFjMDQwNzk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZUludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRlcm5hbC5oCkBAIC0yOSw5ICsyOSwxMCBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTTG9ja0hvbGRlcjsKLWNsYXNzIEV4ZWNTdGF0
ZTsKIGNsYXNzIFNvdXJjZUNvZGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IGV4dGVybiAiQyIgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0SW50ZXJuYWwoY29uc3QgSlND
OjpKU0xvY2tIb2xkZXImLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQ29udGV4dFJlZiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5k
ZXggYjgzYjEzMzE0MWIxMDE1NTZiODQ4Y2UzZmZkZmVkNWU3YjhiOGMzMC4uMzcyM2U0MGZlY2I1
MTc2ZDk0N2MxZTllMjQ3MzNiNTAzNTZlZjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIxOCw4ICsyMTgsOCBAQCBjbGFzcyBKU0NhbGxi
YWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tP
YmplY3QqIGFzQ2FsbGJhY2tPYmplY3QoSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tP
YmplY3QqIGFzQ2FsbGJhY2tPYmplY3QoRW5jb2RlZEpTVmFsdWUpOwogIAotICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7Ci0gICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNTdGF0ZSopOworICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAgIAogICAgIEpTVmFsdWUg
Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgc3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGM3MjM2MzM5NWIwNDc1YjhlYzE2MmIw
NTA4ZDIzYmRhMjc4MTdkMTEuLmM1NTdmOThmZjdhNTU4ZWZlYWE4OTBiNzE3ZDQzZTc3MGFiNmZl
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCkBAIC00NDEsMzAgKzQ0MSwzMCBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0
cnVjdAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotRW5jb2RlZEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9y
ID0gZXhlYy0+anNDYWxsZWUoKTsKLSAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4
ZWMpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsK
KyAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CiAgICAgSlNPYmpl
Y3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7CiAgICAgCiAgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4o
Y29uc3RydWN0b3IpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFy
ZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFj
ayBjYWxsQXNDb25zdHJ1Y3RvciA9IGpzQ2xhc3MtPmNhbGxBc0NvbnN0cnVjdG9yKSB7Ci0gICAg
ICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCk7CiAgICAgICAgICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAg
ICAgICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0g
ICAgICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNo
ZWNrZWRBcHBlbmQodG9SZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAg
ICBKU09iamVjdCogcmVzdWx0OwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAgICAgICAgICAgICBKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSB0b0pTKGNhbGxBc0NvbnN0cnVjdG9yKGV4ZWNSZWYsIGNvbnN0cnVjdG9yUmVm
LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIHRvSlMoY2FsbEZyYW1lLCBl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTUxNCwzMCArNTE0LDMwIEBAIENhbGxUeXBlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYo
ZXhlYyk7Ci0gICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihleGVjLT5qc0NhbGxl
ZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CisgICAg
SlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihjYWxsRnJhbWUpOworICAgIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBKU09iamVj
dFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBOb3RTdHJpY3RNb2RlKSkpOwogICAgIAogICAgIGZv
ciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+
KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2Fs
bGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewotICAgICAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAg
ICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OwogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgICAg
ICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAg
ICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVj
a2VkQXBwZW5kKHRvUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChp
KSkpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpS
ZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKKyAgICAg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSB0b0pTKGNhbGxGcmFtZSwgY2FsbEFzRnVuY3Rpb24o
ZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IDhk
ZWZjMjY3MGMxODJhOTU1YmZiNjUxN2FjZTQ2NjA0YzVkZjcxNWUuLmQwYTA3NGFiZTU5YzMwYTI3
MGJhMTU4Y2NhYjNjZDllOTdlNzU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTM3LDggKzM3LDkgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgSlNGdW5jdGlvbjsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgZW51bSBLaW5kIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggMzFhNmUwZGZkYmQ2ZmU0ODI1
NGE5ZDE2OTllYzI3MWRmYmRiNDBlOC4uMWU1ZWFhOTJjMGEwZjA2Y2JkMmUyOGM5YzQwNTVlZjNk
NGIwNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAg
LTM0LDE0ICszNCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFZNOwogCi10
eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJp
dGhNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCmluZGV4
IDBhNjQ0NDg2ZTM0ZjcyOWNhM2U0Y2RmOTA1NzdjNTk4NDM4ZTg2NDkuLjNlYmFjYWI3OGEyYmFh
NDc5NTg4ZjhlYmEwZTU3NTZmOGE2ZWFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcml0aE1vZGUuaApAQCAtMjksNyArMjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogdXNpbmcgRW5jb2RlZEpTVmFsdWUgPSBpbnQ2NF90OwogCiBuYW1lc3BhY2UgREZHIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggNzNjODEyYzFkNTUxNmUwZWQ1MmI2ZGRlN2M0NzIzNTkxZjc2NTE1Yi4uMjMzM2MyODRjODkz
MjY5MzJiYmM1NmFlNTFlYzkxNDA1ZTc2NDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICBpZiAoZnVu
Y3Rpb24tPmNsYXNzSW5mbygpICE9IGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCptX3ZtKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpCisgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICAvLyBXZSBvbmx5IGhhdmUgYW4gaW50cmluc2ljIGZvciB0aGUgY2FzZSB3aGVyZSB5
b3Ugc2F5OgpAQCAtMzczNCw3ICszNzM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
VHlwZWRBcnJheUNvbnN0cnVjdG9yKAogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAhPSAyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFmdW5jdGlvbi0+
Z2xvYmFsT2JqZWN0KCptX3ZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
KSkKKyAgICBpZiAoIWZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVy
ZUNvbmN1cnJlbnRseSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW5zZXJ0
Q2hlY2tzKCk7CkBAIC0zNzY1LDcgKzM3NjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgfQogCiAgICAgaWYgKGZ1bmN0aW9uLT5j
bGFzc0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKLSAgICAgICAgaWYgKGZ1
bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3Qo
KSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsK
QEAgLTM4MDYsNyArMzgwNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50
SW50ZXJuYWxGdW5jdGlvbigKICAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENh
bGxTdHJpbmdDb25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCkKLSAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09i
amVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9i
amVjdCgqbV92bSktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdE5vZGUpOworICAg
ICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdE5vZGUpOwogICAgICAgICAKICAgICAgICAgc2V0
KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzgzMiw5ICsz
ODMyLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0
aW9uKAogCiAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGU7CiAgICAgICAgIGlmIChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA8PSAxKQotICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3Jh
cGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+
Z2xvYmFsT2JqZWN0KCptX3ZtKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3Io
KSkpKTsKKyAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJ
bmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5v
YmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3Is
IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSkpLCBP
cEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdp
c3Rlck9mZnNldCkpKTsKKyAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENhbGxP
YmplY3RDb25zdHJ1Y3RvciwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxP
YmplY3QoKSkpLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9k
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAppbmRleCAyNmJkNzI4NmRmZmZlNjJhZjY0NDJmYjc4MzIxYjc1NDUyZWU1NGUwLi4x
NWFmNDFiZTA0ZTJiYzgzZjljYjc4YmZmN2UzMGVjMTBlMTBhZjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCkBAIC01Miw3ICs1Miw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBTaW5nbGVSb290R3JhcGg7CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJs
b2NrOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5oCmluZGV4IDUwY2IwNjA1YzEwNjdkZTdiZGEyZmUxOGM5ZmNkYzU5MzUx
ZWFlNzIuLjE3ZjhhZWUxZTJkODg4NjkyOTYxZWY5YWVhZGQzNDU3Y2QzMjE3NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKQEAgLTMzLDggKzMzLDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IENvZGVCbG9jazsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIERG
RyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNWYwNWVlMTVmMjRkYzY1OTU3MTA2OTQ3ZjVkN2U2YjEwNmIzNjMxMi4uOWQwMzhi
NWYzMmM1NjY5MDQyNzE3MjIzMjVhNjJmY2U3NDk5ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMzUsNiArNzIzNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVz
dWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNo
YWluKCkpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkpOwogICAgIG1faml0LnN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAppbmRleCA3YjBjODlhOTRjYTMyOGVlOTZlZWUwZjRiOTZmZTIyN2NkN2QxZGM4
Li4xMDM2OWU0ZTQ5NDUyNjBkYTdjYzRjMTNhM2Y3MTg2YTZlNDIzNTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApA
QCAtODEsNiArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFj
cm8oSlNDZWxsX3VzZWZ1bEJ5dGVzLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQo
KSkgXAogICAgIG1hY3JvKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0X2NsYXNzSW5mbywgSlNEZXN0cnVj
dGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9l
eGVjdXRhYmxlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkgXAorICAgIG1hY3Jv
KEpTRnVuY3Rpb25fZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9zY29wZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZT
Y29wZUNoYWluKCkpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZlJhcmVEYXRhKCkpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdF9yZWdFeHBH
bG9iYWxEYXRhX2NhY2hlZFJlc3VsdF9sYXN0UmVnRXhwLCBKU0dsb2JhbE9iamVjdDo6cmVnRXhw
R2xvYmFsRGF0YU9mZnNldCgpICsgUmVnRXhwR2xvYmFsRGF0YTo6b2Zmc2V0T2ZDYWNoZWRSZXN1
bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0YTVjNTQ1
ZTYwYzM5MzA3ZmU0MmYzNTVjNGI3MjE0M2U0M2Y1ZmQ1Li5lNDFiZmMyN2VkMDEyYzZmZmI5MTQz
YTM2NThjN2YyN2ZhZTA4NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC01NjA1LDYgKzU2MDUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBtX291dC5zdG9yZVB0cihzY29wZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1
bmN0aW9uX3Njb3BlKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZXhlY3V0
YWJsZSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKICAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgbV9oZWFwcy5K
U0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIo
c3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlv
bl9nbG9iYWxPYmplY3QpOwogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKIAogICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5oCmluZGV4IDQzOWM0YzIwYWU3YTY0YWI5MzEx
MzA1NTU3YzlkODgwZGY1ZGQyZTkuLjVmMDljYjc3MjQyMzlhM2ViOWVkMjI2ZTMxOGQ1ZTY5ZDk4
MTRjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmgKQEAgLTI5LDgg
KzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENv
ZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogbmFtZXNwYWNlIEZUTCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCA2MjM3OGVmNDM0ZmRmZDNhNDg3NTNmMjg0Yjg0Yjgz
YmU1NDJmMWQxLi5kYWMzZGQ1ZGJkOWViZTc4OTE0YjUxMWI3MTkyZWI5NDczNWYyNWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBA
IC0zOCw3ICszOCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cAppbmRleCA1NjhiY2FiYzZiMjliN2U4NDY0OWU4MTZjZTk0YTcxYzAzYWQzOTY0Li43ODFlNjYy
N2E3YjljYjg1YjNkMmM4Yzg3Zjk0NjEwOGNmMjU1YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCkBAIC0xMDgs
MTUgKzEwOCwxNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIGF1dG8qIHNjcmlwdFN0
YXRlID0gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOwogICAgIEpTQzo6Vk0m
IHZtID0gc2NyaXB0U3RhdGUtPnZtKCk7CiAKLSAgICBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb24q
IGpzRnVuY3Rpb247Ci0KKyAgICBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb24qIGpzRnVuY3Rpb24g
PSBudWxscHRyOworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxw
dHI7CiAgICAgewogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAg
ICAgIGpzRnVuY3Rpb24gPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAg
ICAgIGlmICghZXhlYykKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAganNGdW5jdGlvbiA9IEpTQzo6SlNOYXRpdmVTdGRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJiwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lKSB7CisgICAgICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAg
ICAgICAgICBjaGVja0FzeW5jQ2FsbFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRp
b24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKSwgY2FsbGJhY2spOwotICAgICAgICAgICAgZWxzZSBp
ZiAoYXV0byByZXN1bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKCpleGVjLCBleGVjLT5h
cmd1bWVudCgwKSkpCisgICAgICAgICAgICBlbHNlIGlmIChhdXRvIHJlc3VsdEpTT05WYWx1ZSA9
IHRvSW5zcGVjdG9yVmFsdWUoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAg
ICAgICAgICAgICAgICAgY2hlY2tBc3luY0NhbGxSZXN1bHQocmVzdWx0SlNPTlZhbHVlLCBjYWxs
YmFjayk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2hlY2tBc3luY0NhbGxS
ZXN1bHQoSlNPTjo6VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCJPYmplY3QgaGFzIHRvbyBsb25n
IHJlZmVyZW5jZSBjaGFpbiAobXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gIiwgSlNPTjo6VmFsdWU6
Om1heERlcHRoLCAnKScpKSwgY2FsbGJhY2spOwpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sCiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgLy8gU2luY2UgYGNh
bGxiYWNrYCBpcyBtb3ZlZCBhYm92ZSwgd2UgY2FuJ3QgY2FsbCBpdCBpZiB0aGVyZSdzIGFuIGV4
Y2VwdGlvbiB3aGlsZSB0cnlpbmcgdG8KICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgYEpTTmF0aXZl
U3RkRnVuY3Rpb25gIGluc2lkZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcy4KLSAgICAgICAganNG
dW5jdGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkobnVsbHB0cik7Cisg
ICAgICAgIGpzRnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigpKGds
b2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA3ZTIw
Mzk5YzhhNzNmMWJhOGY5ZDE0MGE0ZTg2MDQ0ODQwZjZjYzk1Li5kZDNmM2Q2ODJkZjUyZWRlMTEz
OGFiMTUwYzhlZTM0NzExYjY3MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTM5LDcgKzM5LDggQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKaW5kZXggZjBmZmM0NWRkOWZhNmNkZjYxN2YwMzgxZTQ2ZjhkY2ViZmVmM2M4
Yy4uMjM3ODdlYTdjOTFiMTM5M2I3YTQ4YWQxNTAxNDAyNTczYTkwYTI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zOCwxMCArMzgsMTEgQEAKICNlbmRpZgog
CiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7
CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCmluZGV4IDBlMWNmOGE5OThiNjc2
NDk4ODAzYWNmYzQ4YTVhNzA1MjVlYzdkZWEuLjdjZmNmODg0ZTJjMTk5MTAxYmQ5Y2RjZDBiMDE2
OTJhNjRmNzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCkBAIC0zOCwy
NCArMzgsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5h
bFByb3BlcnRpZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlv
bihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRp
dmVHZXR0ZXJUeXBlRXJyb3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJn
ZXRWYWx1ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFr
U2V0RW50cmllcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0
dHJpYnV0ZUV2YWx1YXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZlZFJlc3Vs
dEFsaWFzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3Bl
cnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRl
cm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94
eVRhcmdldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uV2Vha01hcFNpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25XZWFrTWFwRW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvbldlYWtTZXRTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRS
ZXN1bHRBbGlhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0lu
Zm8gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkluamVjdGVkU2Ny
aXB0SG9zdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUpIH07CiAKQEAgLTg0LDIyNSArODQs
MjI1IEBAIHZvaWQgSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lU
SE9VVF9UUkFOU0lUSU9OKCJzYXZlZFJlc3VsdEFsaWFzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVBdHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZh
bHVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGUoZXhlYykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGUoY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+c2F2ZWRSZXN1bHRBbGlhcyhleGVjKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zYXZlZFJlc3VsdEFsaWFzKGNhbGxGcmFtZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0b3JOYW1lKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29u
c3RydWN0b3JOYW1lKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxD
b2xsZWN0aW9uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmlzSFRNTEFsbENvbGxlY3Rpb24oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJvbWlz
ZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1Byb21pc2VSZWpl
Y3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+aXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlw
ZUVycm9yKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdldFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0
ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5wcm94eVRhcmdldFZhbHVlKGV4ZWMp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnByb3h5VGFyZ2V0VmFs
dWUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha01hcFNpemUoZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha01hcFNpemUoY2FsbEZyYW1lKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBF
bnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+d2Vha01hcEVudHJpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+d2Vha01hcEVudHJpZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtT
ZXRTaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
ICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoZXhl
YykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUo
Y2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoY2FsbEZyYW1lKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25JdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3Rl
ZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGNhbGxGcmFtZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25RdWVyeUluc3RhbmNlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUlu
c3RhbmNlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9z
dCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRo
aXMtPnF1ZXJ5SW5zdGFuY2VzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPnF1ZXJ5SW5zdGFuY2VzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVy
eUhvbGRlcnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlIb2xkZXJz
KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnF1ZXJ5SG9s
ZGVycyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1
ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjYWxsRnJhbWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uU3VidHlwZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VidHlw
ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdWJ0eXBl
KGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uRGV0YWlscyhjYWxsRnJh
bWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVj
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5nZXRJbnRlcm5hbFBy
b3BlcnRpZXMoY2FsbEZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCmluZGV4IGI4OTkxY2QyYzdjYjUxNWM3MTMx
MDdiODkyZDdlYTZkYjhjYjVjMDQuLmY4ODdlYzc4M2UwNTFhZWU3OWE5MmQwZDkyMGJkNDg1NzI5
MzEzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKQEAgLTM3LDE5ICsz
NywxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIC8v
IEZ1bmN0aW9ucy4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9u
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzLgotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlQ2FsbGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVB
dHRyaWJ1dGVMaW5lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlRnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVU
eXBlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNK
YXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNh
bGxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVTY29wZUNoYWluKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVUaGlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVU
eXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkphdmFTY3JpcHRDYWxsRnJhbWUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZSkgfTsKIApAQCAtNzIsMTQ3ICs3MiwxNDcgQEAgdm9pZCBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2IKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04o
ImlzVGFpbERlbGV0ZWQiLCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5l
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNj
b3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0
aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+c2NvcGVEZXNjcmlwdGlvbnMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+c2NvcGVEZXNjcmlwdGlvbnMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVy
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZh
U2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jYWxsZXIoZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y2FsbGVyKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJj
ZUlEKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNvdXJjZUlEKGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNvdXJjZUlEKGNhbGxGcmFtZSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJp
YnV0ZUxpbmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5saW5lKGV4ZWMpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmxpbmUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29s
dW1uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y29sdW1uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1
bmN0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
ICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFt
ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFT
Y3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2Nv
cGVDaGFpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJh
bWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+c2NvcGVDaGFpbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5zY29wZUNoYWluKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxs
RnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT50aGlzT2JqZWN0KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoY2FsbEZyYW1lKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRl
VHlwZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnR5cGUoZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlw
dENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+aXNUYWlsRGVsZXRlZChleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1RhaWxEZWxldGVkKGNhbGxGcmFtZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCmluZGV4IDYwN2ZlYWZiMjA2NjNiNmNjNjg0YTVi
MDgzMmM0ZGQwYjQ5MTg5NzUuLjYwMmM4YmE0YzQ4OTdiOWU2YzI4MGRmYmI5MWU3MjM5MzA0ZTZi
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJn
dW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaApAQCAtMzcsOCArMzcsOSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCmluZGV4IDU1Y2E0ZDU3OGYwMzdiNDQ3MDA4
MTc3ZmRjOTViZTc4ZDE5YzJjMzcuLjIzYmIyMTVkYjJjZDE0OTFlZmIxMmIyNmVkZjFkZjVhNWQ4
ZWRkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCkBAIC0zNSw5ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
RXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXgg
MWVlYjRmOGE4YzY1MzI3NTBkOGUyZjkzM2FhNjA0NjA1MjBhZTE0MS4uN2VhMmY5YzJmNTM0NGE1
ZDc4MGUzYTUwNzgwNWQ5N2JlNmRhNGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzgsOSArMzgsMTAgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNz
IFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYzg1N2NkZGZlYmQ3NzEzM2Q5
MzIxZDBiY2ZhYzk3ZjBhMTIyMzhlNy4uYmJmMThiNTU1ZmY4M2YyZGRkNDIzZjBiYTU1ZjZmZmNh
YWJjMTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTM2LDcgKzM2LDggQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCmluZGV4IDQ4MzJkNmRlODI1Mzg1NmNkYjBlNTEy
NTQzOWE5Zjk3OTQ2ZDhmNjguLjQzNTViMjM1NGNjNDk2MDk5YzhkYjUyYTMyYzY3ODU4NTc5ZWEw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFj
dFBDLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMu
aApAQCAtMjksOCArMjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgVk07Ci1jbGFzcyBFeGVjU3RhdGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEFic3RyYWN0UEMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IGRkMjAwZTFhMzUx
MDczMTJkMWQwNWUyNTIyMjQzMzc1YTQ5NDUyODEuLmQwMGMzYzliODI3N2M2Yjc4NDViZDUzZmMy
NGZlMDdjMTcyMGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIGNs
YXNzIEFyZ3VtZW50czsKLSAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1l
OwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTQ2FsbGVlOwogICAgIGNsYXNz
IEpTU2NvcGU7CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIHN0cnVj
dCBJbnN0cnVjdGlvbjsKIAotICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKKyAgICB1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKICAgICBjbGFzcyBDYWxsU2l0ZUluZGV4IHsK
ICAgICBwdWJsaWM6CkBAIC05OCw3ICs5OCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIC8v
IFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAv
LyBQYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgotICAgIGNs
YXNzIEV4ZWNTdGF0ZSA6IHByaXZhdGUgUmVnaXN0ZXIgeworICAgIGNsYXNzIENhbGxGcmFtZSA6
IHByaXZhdGUgUmVnaXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBoZWFkZXJTaXplSW5SZWdpc3RlcnMgPSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICsg
MTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBz
ZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxs
ZXJGcmFtZSA9IGZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0
ZXJPZmZzZXQsIEpTU2NvcGUqIHNjb3BlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylb
c2NvcGVSZWdpc3Rlck9mZnNldF0gPSBzY29wZTsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGlu
aXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxl
ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGluaXRHbG9iYWxFeGVjKENhbGxGcmFtZSogZ2xvYmFs
RXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSk7CiAKICAgICAgICAgLy8gUmVhZCBhIHJlZ2lz
dGVyIGZyb20gdGhlIGNvZGVmcmFtZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29kZUJsb2NrKS4K
ICAgICAgICAgUmVnaXN0ZXImIHIoaW50KTsKQEAgLTMwMyw4ICszMDMsOCBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAKICAgICBwcml2YXRlOgogCi0gICAgICAgIEV4ZWNTdGF0ZSgpOwotICAgICAgICB+
RXhlY1N0YXRlKCk7CisgICAgICAgIENhbGxGcmFtZSgpOworICAgICAgICB+Q2FsbEZyYW1lKCk7
CiAKICAgICAgICAgUmVnaXN0ZXIqIHRvcE9mRnJhbWVJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA1ZGYw
NDhjOTk3NzgzYWE0ZDcxOWIyZDczNDJjYzcyZTVmZGY3YTUzLi5iNjAxZGNmNzAzY2Q5ZWE0YTNi
NTNlODhiZWQ4YjNjNTJkNDVhMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENhbGxG
cmFtZSogY2FsbEZyYQogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAx
KTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwgdGhpc09iaiwgMSk7CisgICAgcHJvdG9D
YWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzY29wZSksIHRoaXNPYmosIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0
aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTg5NCw3ICs4OTQsNyBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNP
YmplY3QqIGZ1bmN0aW9uLCBDYWxsVAogICAgIH0KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlv
biwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICBwcm90b0NhbGxGcmFt
ZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBh
cmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKQEAg
LTk2NSw3ICs5NjUsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3Qo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1YwogICAgIH0KIAogICAgIFBy
b3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3
Q29kZUJsb2NrLCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgp
KTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBj
b25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKIAogICAgIEpT
VmFsdWUgcmVzdWx0OwogICAgIHsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIENhbGxGcmFtZUNsb3N1
cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FCiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7CiAKLSAgICBwcm90b0NhbGxGcmFtZS0+aW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9u
LCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICBwcm90b0NhbGxG
cmFtZS0+aW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSwgZnVuY3Rp
b24sIGpzVW5kZWZpbmVkKCksIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwogICAgIC8vIFJldHVy
biB0aGUgc3VjY2Vzc2Z1bCBjbG9zdXJlOgogICAgIENhbGxGcmFtZUNsb3N1cmUgcmVzdWx0ID0g
eyBjYWxsRnJhbWUsIHByb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxl
LCAmdm0sIHNjb3BlLCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgfTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE0OSw4ICsxMTQ5LDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KIAorICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBQ
cm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNv
ZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCh2bSksIHNj
b3BlKSwgdGhpc1ZhbHVlLCAxKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwg
dGhpc1ZhbHVlLCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7CkBAIC0xMTk5LDggKzEyMDAsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
QwogICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAu
CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1l
bnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0Nh
bGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwgc2NvcGUpLCBqc1VuZGVm
aW5lZCgpLCAxKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwganNVbmRlZmlu
ZWQoKSwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9D
YWxsRnJhbWUuaAppbmRleCA1M2U5OGM2MGYzYzZkYTdlNTk3NzU0ZDEwYzRlM2FmYzQ2NDM0NzJh
Li43ZGJjNTFjMTY5ZGNkMGMyMTY5MTAyZTc3MTY5YTQzODc2OTdkYTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaApAQCAtNDUs
MTQgKzQ1LDIyIEBAIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAg
ICAgdWludDMyX3QgcGFkZGVkQXJnQ291bnQ7CiAgICAgYm9vbCBoYXNBcml0eU1pc21hdGNoOwog
ICAgIEpTVmFsdWUgKmFyZ3M7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdDsKIAot
ICAgIHZvaWQgaW5pdChDb2RlQmxvY2sqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1
ZSogb3RoZXJBcmdzID0gMCk7CisgICAgdm9pZCBpbml0KENvZGVCbG9jayosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90aGVyQXJncyA9IDApOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBjb2RlQmxvY2tWYWx1
ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykgeyBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVCbG9jazsgfQogCiAgICAgSlNP
YmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIGNhbGxlZVZhbHVlLlJlZ2lzdGVyOjpvYmpl
Y3QoKTsgfQotICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgY2FsbGVlVmFs
dWUgPSBjYWxsZWU7IH0KKyAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQorICAg
IHsKKyAgICAgICAgY2FsbGVlVmFsdWUgPSBjYWxsZWU7CisgICAgfQorICAgIHZvaWQgc2V0R2xv
YmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBnbG9iYWxP
YmplY3QgPSBvYmplY3Q7CisgICAgfQogCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCkgY29uc3QgeyByZXR1cm4gYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWUucGF5bG9hZCgp
OyB9CiAgICAgaW50IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpIC0gMTsgfQpAQCAtNzgsMTEgKzg2LDEyIEBAIHN0cnVjdCBKU19FWFBP
UlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgfQogfTsKIAotaW5saW5lIHZvaWQgUHJv
dG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBjYWxsZWUs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBv
dGhlckFyZ3MpCitpbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxlZSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMsIEpTVmFsdWUqIG90
aGVyQXJncykKIHsKICAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdzOwogICAgIHRoaXMtPnNldENv
ZGVCbG9jayhjb2RlQmxvY2spOwogICAgIHRoaXMtPnNldENhbGxlZShjYWxsZWUpOworICAgIHRo
aXMtPnNldEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIHRoaXMtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgaWYgKGNvZGVC
bG9jayAmJiBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkKICAgICAgICAgdGhpcy0+aGFzQXJpdHlNaXNtYXRjaCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCmluZGV4IDYwMzg5YjRiYTdlNTYwY2U3
N2Y4MmFhZGI4YzMzMDNlNDk2NmNjMjYuLjlkZDNhY2U1OGQwMmViYmFjYTA0OGFkZDQ0ZjIxZDhj
MmIzZjczNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ci5oCkBAIC0zNCwxMyArMzQsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBD
YWxsRnJhbWU7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBj
bGFzcyBKU1Njb3BlOwogCi0gICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOworICAgIHVz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogICAgIGNsYXNzIFJlZ2lzdGVyIHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaAppbmRleCA4NGI1MmU4MDJlMWFiZmE3MDZhMmU4
N2ZhMTYzNDE2ZGYwYjBmODBkLi4yMDg4MGE2M2M5NzQ1YzllZWJlZGJhNDJiODkzYjA3Y2VkYmQw
ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93
Q2hpY2tlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmgKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQXJy
YXk7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTU2NvcGU7CkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFNsb3RWaXNpdG9yOwogY2xhc3MgVk07
CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogLy8gU2hhZG93Q2hpY2tlbiBpcyBhIGxvZyB0aGF0IGNhbiBiZSB1c2VkIHRvIHBy
b2R1Y2UgYSBzaGFkb3cgc3RhY2sgb2YgQ0hJQ0tFTi1zdHlsZSBzdGFjayBmcmFtZXMuCiAvLyBU
aGlzIGVuYWJsZXMgdGhlIGRlYnVnZ2VyIHRvIGFsbW9zdCBhbHdheXMgc2VlIHRoZSB0YWlsLWRl
bGV0ZWQgc3RhY2sgZnJhbWVzLCBzbyBsb25nIGFzIHdlIGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCA2ODY4MzJmM2IyOTYz
NjU2MGE5NzdjY2YwODUxN2E2MzVhMmQyM2E0Li5hMzQxYjdhOWQ1Y2M3OTE1NzRkY2VhNjBlYTg1
ZTM2M2Y1OWNhZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1N0YWNrVmlzaXRvci5oCkBAIC0zNiwxNiArMzYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1
Y3QgRW50cnlGcmFtZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiAKK2NsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVPcmlnaW47Ci1jbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0Z1bmN0aW9uOwogY2xhc3MgQ2xvbmVkQXJndW1lbnRz
OwogY2xhc3MgUmVnaXN0ZXI7CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIAotdHlwZWRl
ZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBj
bGFzcyBTdGFja1Zpc2l0b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKaW5kZXggNjcyMTg4ZTg5MGIwOTQyOTE0NWQ4
NGUxNDE1YmRiMzA1MWExMzkxZS4uYmU3YmY4ODk4NzlkOTU1ZDhmNDQ4NmQ4MzQxMTAxOTY2Y2Fj
YWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50
cnlSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRy
eVJlY29yZC5oCkBAIC0zMCw3ICszMCw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEVu
dHJ5RnJhbWU7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CitjbGFzcyBKU0ds
b2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgVk07CiAKQEAgLTQwLDcgKzQxLDcg
QEAgc3RydWN0IFZNRW50cnlSZWNvcmQgewogICAgICAqIGFmdGVyIGNhbGxlZSBzYXZlIHJlZ2lz
dGVycyB3aGVyZSBsb2NhbCB2YXJpYWJsZXMgd291bGQgZ28uCiAgICAgICovCiAgICAgVk0qIG1f
dm07Ci0gICAgRXhlY1N0YXRlKiBtX3ByZXZUb3BDYWxsRnJhbWU7CisgICAgQ2FsbEZyYW1lKiBt
X3ByZXZUb3BDYWxsRnJhbWU7CiAgICAgRW50cnlGcmFtZSogbV9wcmV2VG9wRW50cnlGcmFtZTsK
ICAgICBKU09iamVjdCogbV9jYWxsZWU7CiAKQEAgLTUyLDggKzUzLDggQEAgc3RydWN0IFZNRW50
cnlSZWNvcmQgewogICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbMV07
CiAjZW5kaWYKIAotICAgIEV4ZWNTdGF0ZSogcHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1f
cHJldlRvcENhbGxGcmFtZTsgfQotICAgIFNVUFBSRVNTX0FTQU4gRXhlY1N0YXRlKiB1bnNhZmVQ
cmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CisgICAgQ2Fs
bEZyYW1lKiBwcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9
CisgICAgU1VQUFJFU1NfQVNBTiBDYWxsRnJhbWUqIHVuc2FmZVByZXZUb3BDYWxsRnJhbWUoKSB7
IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KIAogICAgIEVudHJ5RnJhbWUqIHByZXZUb3BF
bnRyeUZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wRW50cnlGcmFtZTsgfQogICAgIFNVUFBSRVNT
X0FTQU4gRW50cnlGcmFtZSogdW5zYWZlUHJldlRvcEVudHJ5RnJhbWUoKSB7IHJldHVybiBtX3By
ZXZUb3BFbnRyeUZyYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aAppbmRleCBiZTljMTMwODVkMjk3NTIyOWZhNWQ4ZjdkZWU2OTIxZWM2MTc0ZTRhLi5jMGQ0MmJj
Nzk2ZGE2ZDc0OGE0YzE0OWJkYzgwYzlhZDk1ZmNmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTQxLDggKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZGVmaW5lIFBPS0VfQVJHVU1FTlRfT0ZGU0VUIDAKICNlbmRpZgogCi1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBTdHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3RhdGUgPSBD
YWxsRnJhbWU7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAppbmRleCBlNWQyOWY5
YjQzZWY5NTlkNzI2NzQ1MzBlYjZlYWM5YzMwYzdlYjQxLi5kMDkxNzIzOGRlZGJhMDJmY2Q2NzI2
MmYxMjU5ODU0NGI2MzJlNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuaApAQCAtMjcsOCArMjcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBD
YWxsRnJhbWU7CiAKIHZvaWQgZ2VuZXJpY1Vud2luZChWTSYsIEV4ZWNTdGF0ZSopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA2NTZlN2RkODZh
YjIzYzk2OGZlOWI3ODFlZGFhYzRhNWE1ZmJiZDJhLi42Mzk0NjNjOTllOWZkYmI0Nzg5MGVmNjQ5
MGM4YjJiMWI1ZWVmNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkgewogICAgICAgICAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAgICAgICAgICB2bS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5n
bG9iYWxPYmplY3Qodm0pLCBleGVjQ2FsbGVlKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dCgKICAgICAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1
dGFibGVBZGRyZXNzKCksCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxs
ZWUsCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewogICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAgICB2bS5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChj
YWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBleGVjQ2FsbGVlKSk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCiAgICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxs
U2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFi
bGVBZGRyZXNzKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IGQyNTMyMzE0YWY3M2Q5MjU4MDg0MTIwZjZhNWU0OTQxN2ZlY2VlNmIuLjlkYjY3MzQxOTIz
ZGRlMTE1MjI0ZTIwZmQ1YzgwNWE3Y2Q3OGIyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zOSw5ICszOSw5IEBAIHR5cGVkZWYgaW50NjRfdCBFbmNv
ZGVkSlNWYWx1ZTsKIGNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiBjbGFzcyBBcnJheVBy
b2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlu
a0luZm87CiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0FycmF5
OwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNGdW5jdGlvbjsKQEAgLTY2LDcgKzY2LDcgQEAgc3Ry
dWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBBcml0aFBy
b2ZpbGU7CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogZXh0ZXJuICJDIiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwOGNkMWQwZWNmODA0ODZhMDA3NDZmM2FhNmE4
NTU3ZjVkNjQzMWQyLi4zYmI3MzljZTEzOGFkN2RlY2U0NjUxNjdkYjU0YjIzZWMyZjAyMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0y
NzEsMzIgKzI3MSwzOSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0mIHZtLCBUaHVua0Z1bgogI2lmIENQVShYODZfNjQp
CiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uOiAgICAgIGYoZWRp
LCBlc2ksIGVkeCwgZWN4LCAuLi4pOwotICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBm
KEV4ZWNTdGF0ZSopOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgWDg2UmVnaXN0ZXJzOjplZGkpOworICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJl
OiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3RlcnM6OmVzaSk7CiAKLSAgICBqaXQu
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZS
ZWdpc3RlcnM6OmVzaSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplZGkpOwogICAgIGlmICh0aHVua0Z1
bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBq
aXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzaSwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAg
ICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZGks
IEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Cisg
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6
ZWRpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgWDg2UmVnaXN0ZXJzOjpl
ZGkpOwogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdp
c3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIFg4NlJlZ2lzdGVyczo6cjkp
OwotICAgIH0gZWxzZQotICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhYODZSZWdpc3RlcnM6OmVzaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5j
dGlvbkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWRpLCBJ
bnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgWDg2UmVn
aXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KFg4NlJlZ2lzdGVyczo6ZWRpLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgWDg2UmVnaXN0ZXJzOjplZGkpOworICAgIH0KICAgICBqaXQuY2FsbChYODZSZWdpc3Rl
cnM6OnI5LCBKU0VudHJ5UHRyVGFnKTsKIAogI2Vsc2UKICAgICAvLyBDYWxsaW5nIGNvbnZlbnRp
b246ICAgICAgZihlY3gsIGVkeCwgcjgsIHI5LCAuLi4pOwotICAgIC8vIEhvc3QgZnVuY3Rpb24g
c2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgIC8vIEhvc3QgZnVuY3Rp
b24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgaml0Lm1v
dmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3RlcnM6OmVkeCk7
CiAKICAgICAvLyBMZWF2ZSBzcGFjZSBmb3IgdGhlIGNhbGxlZSBwYXJhbWV0ZXIgaG9tZSBhZGRy
ZXNzZXMuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgc3RhY2sgaXMgYWxpZ25lZCB0byAxNiBi
eXRlcywgYnV0IGlmIHRoaXMgY2hhbmdlcyBhdCBzb21lIHBvaW50LCB3ZSBuZWVkIHRvIGVtaXQg
Y29kZSB0byBhbGlnbiBpdC4KICAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tMzIoNCAqIHNpemVvZihpbnQ2NF90KSksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6OmVkeCk7CisgICAgaml0LmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjpl
Y3gpOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNG
dW5jdGlvbikgewotICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhY
ODZSZWdpc3RlcnM6OmVkeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZS
ZWdpc3RlcnM6OnI5KTsKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0VudHJ5UHRy
VGFnKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3MoWDg2UmVnaXN0ZXJzOjplZHgsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVu
Y3Rpb25Gb3Ioa2luZCkpLCBKU0VudHJ5UHRyVGFnKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJ
bnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRy
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICBqaXQu
bG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRh
YmxlT2Zmc2V0VG9GdW5jdGlvbiksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6
ZWN4LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwg
WDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpB
ZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgIH0KKyAgICBqaXQuY2FsbChYODZS
ZWdpc3RlcnM6OnI5LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgpAQCAtMzA2LDE1ICszMTMsMTggQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJh
dG9yKFZNJiB2bSwgVGh1bmtGdW4KICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6
eDEgIT0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBUM19ub3RfdHJhbXBsZWRfYnlfYXJnXzEpOwog
ICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjp4MiAhPSBKU0ludGVyZmFjZUpJVDo6
cmVnVDMsIFQzX25vdF90cmFtcGxlZF9ieV9hcmdfMik7CiAKLSAgICAvLyBIb3N0IGZ1bmN0aW9u
IHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAgLy8gSG9zdCBmdW5j
dGlvbiBzaWduYXR1cmU6IGYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp4
MSk7CiAKLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlLCBBUk02NFJlZ2lzdGVyczo6eDEpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MCk7
CiAgICAgaWYgKHRodW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0
aW9uKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0
UmVnaXN0ZXJzOjp4MSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJl
Z2lzdGVyczo6eDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhBUk02NFJlZ2lzdGVyczo6eDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwg
QVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgQVJNNjRSZWdpc3RlcnM6OngwKTsKICAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRl
cmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngyLCBleGVjdXRhYmxlT2Zmc2V0VG9G
dW5jdGlvbiksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5s
b2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MSwgSW50ZXJu
YWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEFSTTY0UmVnaXN0
ZXJzOjp4Mik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VK
SVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRP
Zk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICAgICAg
aml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBJ
bnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgQVJNNjRSZWdpc3RlcnM6
OngwKTsKKyAgICB9CiAgICAgaml0LmNhbGwoQVJNNjRSZWdpc3RlcnM6OngyLCBKU0VudHJ5UHRy
VGFnKTsKIAogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQpAQCAtMzIzLDE2ICsz
MzMsMjMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0
aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwgVGh1bmtGdW4KICAgICBqaXQuc3ViUHRyKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tMzIoMTYpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogI2VuZGlmCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEpTSW50ZXJmYWNlSklUOjpyZWdU
MiAhPSBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKKwogICAgIC8vIENhbGxpbmcgY29u
dmVudGlvbiBpcyBmKGFyZ3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCAuLi4pLgotICAgIC8vIEhv
c3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGYoRXhlY1N0YXRlKikuCi0gICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRH
UFIwKTsKKyAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CiAKLSAgICBqaXQuZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU0ludGVyZmFjZUpJ
VDo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKICAg
ICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24p
IHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZh
Y2VKSVQ6OmFyZ3VtZW50R1BSMSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDIpOwotICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6cmVnVDIsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
KSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5jYWxsKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBKU0VudHJ5UHRyVGFnKTsK
KyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VK
SVQ6OmFyZ3VtZW50R1BSMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBKU0lu
dGVyZmFjZUpJVDo6cmVnVDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpyZWdU
MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9m
TmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOworICAgICAg
ICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIwLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgSlNJ
bnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgaml0LmNhbGwoSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKIAogI2lmIENQVShNSVBTKQogICAgIC8v
IFJlc3RvcmUgc3RhY2sgc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggY2I0YWJhZmU0MTkx
NmIxMTg3MTYwMGJiMTI2YzdlMDU4YTcwMDcxZC4uMDI0YTgzZWQyNWY3NDQ4YzYwNDM4OTU0MzQ4
NWNlZDExY2M1ZjE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NCwxMDMgKzI5NCwxMDIg
QEAgY2xhc3MgV29ya2VycyB7CiB9OwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0
ZEVycihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRlc2NyaWJlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TbGVlcFNlY29uZHMoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0
YWNrKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQ0FuZFN3ZWVwKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU1lbW9yeUZv
b3RwcmludChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2YoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNpb24oRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3Ry
aW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Mb2FkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Q
cmVjaXNlVGltZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9ERkcoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRG
dXp6aW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxs
ZXJJc09NR0NvbXBpbGVkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlvblJldHJ5Q291bnQoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRy
YW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25RdWl0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25GYWxzZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNJbnQzMihFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJl
TmFOKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRpdHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJv
cGVydGllcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVh
c2VXZWFrUmVmcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1T
dXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhl
YXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50
U3RkT3V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRl
YnVnKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJl
QXJyYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpT
Q1N0YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVs
bEdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IZWFwU2l6ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290cHJpbnQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UmVzZXRNZW1vcnlQZWFrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJlc3NPZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25WZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5T
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1l
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Tm9ERkcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9GVEwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0
RnV6emluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVySXNP
TUdDb21waWxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5
QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgTk9fUkVUVVJOX1dJVEhfVkFMVUUgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFsc2Uo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzSW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFOKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklkZW50aXR5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0
b21Qcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFz
ZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5z
dXJlQXJyYXlTdG9yYWdlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgRU5BQkxF
KFNBTVBMSU5HX1BST0ZJTEVSKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNl
cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2VuZGlmCiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRzKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25B
c3luY1Rlc3RTdGFydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQXN5bmNUZXN0U3RhcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVt
b3J5TW9kZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2xlYXJTYW1w
bGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxp
bmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2VuZGlmCiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0UmFu
ZG9tU2VlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSXNSb3BlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4oRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJEZXRhY2hBcnJheUJ1ZmZlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFy
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRTbGVlcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJBZ2VudExlYXZpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TW9ub3RvbmljTm93KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25IZWFwQ2FwYWNpdHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25N
YWxsb2NJbkFMb29wKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNh
bGxiYWNrKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25HZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRvbVNlZWQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlclNvdXJjZU9yaWdp
bihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJFdmFsU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRvbGxhckFnZW50UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xlZXAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9s
bGFyQWdlbnRHZXRSZXBvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TW9ub3RvbmljTm93KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldhaXRGb3JSZXBvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcENhcGFjaXR5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJj
ZUluZm8oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25U
b3RhbENvbXBpbGVUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogc3RydWN0IFNjcmlwdCB7
CiAgICAgZW51bSBjbGFzcyBTdHJpY3RNb2RlIHsKQEAgLTYxOSw3ICs2MTgsNyBAQCBjbGFzcyBH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBwdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkMjYyIiksIGRvbGxhcik7CiAgICAgICAg
IAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY3JlYXRlUmVhbG0iLCBmdW5jdGlv
bkRvbGxhckNyZWF0ZVJlYWxtLCAwKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwg
ImRldGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlciwgMSk7
CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJkZXRhY2hBcnJheUJ1ZmZlciIsIGZ1
bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlciwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBk
b2xsYXIsICJldmFsU2NyaXB0IiwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAxKTsKICAgICAg
ICAgCiAgICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZ2xvYmFsIiksIHRoaXMpOwpAQCAtMTI3NCw0NyArMTI3Myw0NyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgcHJpbnRJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIEZJTEUqIG91dCkKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoRXhlY1N0YXRlKiBleGVjKSB7
IHJldHVybiBwcmludEludGVybmFsKGV4ZWMsIHN0ZG91dCk7IH0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZEVycihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJu
IHByaW50SW50ZXJuYWwoZXhlYywgc3RkZXJyKTsgfQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpIHsgcmV0dXJuIHByaW50SW50ZXJuYWwoY2FsbEZyYW1lLCBzdGRvdXQpOyB9CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRFcnIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gcHJpbnRJbnRlcm5hbChjYWxsRnJh
bWUsIHN0ZGVycik7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRl
YnVnKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25EZWJ1ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBzdHJpbmcgPSBjU3RyaW5nRnJvbVZpZXdXaXRo
U3RyaW5nKGV4ZWMsIHNjb3BlLCB2aWV3V2l0aFN0cmluZyk7CisgICAgYXV0byBzdHJpbmcgPSBj
U3RyaW5nRnJvbVZpZXdXaXRoU3RyaW5nKGNhbGxGcmFtZSwgc2NvcGUsIHZpZXdXaXRoU3RyaW5n
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBmcHJpbnRmKHN0ZGVyciwgIi0tPiAlc1xuIiwgc3RyaW5nLmRhdGEoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHRvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDAp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHRvU3RyaW5nKGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
dm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIjxub3Qgb2JqZWN0
PiJfcykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCB0b1N0cmluZygiPEJ1dHRlcmZseTogIiwgUmF3UG9pbnRlcihvYmplY3QtPmJ1dHRlcmZseSgp
KSwgIjsgcHVibGljIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRBcnJheUxlbmd0aCgpLCAiOyB2ZWN0
b3IgbGVuZ3RoOiAiLCBvYmplY3QtPmdldFZlY3Rvckxlbmd0aCgpLCAiPiIpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TbGVlcFNlY29uZHMoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25k
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgU2Vjb25kcyBzZWNvbmRzID0g
U2Vjb25kcyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CisgICAgaWYgKGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgU2Vjb25kcyBzZWNvbmRzID0g
U2Vjb25kcyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgc2xlZXAoc2Vjb25kcyk7CiAgICAgfQpAQCAtMTMzOSw0NCArMTMzOCw0NCBAQCBjbGFzcyBG
dW5jdGlvbkpTQ1N0YWNrRnVuY3RvciB7CiAgICAgU3RyaW5nQnVpbGRlciYgbV90cmFjZTsKIH07
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2so
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBTdHJpbmdCdWls
ZGVyIHRyYWNlOwogICAgIHRyYWNlLmFwcGVuZExpdGVyYWwoIi0tPiBTdGFjayB0cmFjZTpcbiIp
OwogCiAgICAgRnVuY3Rpb25KU0NTdGFja0Z1bmN0b3IgZnVuY3Rvcih0cmFjZSk7Ci0gICAgZXhl
Yy0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHRyYWNlLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgdm0uaGVhcC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29w
ZTo6RnVsbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLnNp
emVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxHQyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICB2bS5o
ZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5H
QyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25T
Y29wZTo6RWRlbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFw
LnNpemVBZnRlckxhc3RFZGVuQ29sbGVjdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25IZWFwU2l6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLnNpemUoKSkpOwogfQpA
QCAtMTQyNywxNCArMTQyNiwxNCBAQCBjbGFzcyBKU0NNZW1vcnlGb290cHJpbnQgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogCiBjb25zdCBDbGFzc0luZm8gSlNDTWVtb3J5Rm9vdHBy
aW50OjpzX2luZm8gPSB7ICJNZW1vcnlGb290cHJpbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ01lbW9yeUZvb3RwcmludCkgfTsKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU1lbW9yeUZvb3Rwcmlu
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlTWVtb3J5Rm9vdHByaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNDTWVtb3J5Rm9vdHByaW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNDTWVtb3J5Rm9v
dHByaW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEV4ZWNTdGF0ZSopCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBNZW1vcnlGb290cHJpbnQ6OnJlc2V0UGVhaygpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDQzLDkgKzE0
NDIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQ
ZWFrKEV4ZWNTdGF0ZSopCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBnZW5lcmFsbHkgdmVyeSBo
ZWxwZnVsIGluIDY0LWJpdCBjb2RlIGFzIHRoZSB0YWcgYW5kIHBheWxvYWQKIC8vIHNoYXJlIGEg
cmVnaXN0ZXIuIEJ1dCBpbiAzMi1iaXQgSklUZWQgY29kZSB0aGUgdGFnIG1heSBub3QgYmUgY2hl
Y2tlZCBpZiBhbgogLy8gb3B0aW1pemF0aW9uIHJlbW92ZXMgdHlwZSBjaGVja2luZyByZXF1aXJl
bWVudHMsIHN1Y2ggYXMgaW4gPT09LgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQWRkcmVzc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
Ly8gTmVlZCB0byBjYXN0IHRvIHVpbnQ2NF90IHNvIGJpdHdpc2VfY2FzdCB3aWxsIHBsYXkgYWxv
bmcuCkBAIC0xNDU0LDE1NiArMTQ1MywxNTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihF
eGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNpb24o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIC8vIFdlIG5lZWQgdGhpcyBmdW5j
dGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBNb3ppbGxhIEpTIHRlc3RzIGJ1dCBmb3Ig
bm93CiAgICAgLy8gd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55IHZlcnNpb24tc3BlY2lmaWMgaGFu
ZGxpbmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFy
PiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5h
bWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJf
cykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJDb3VsZCBub3Qgb3BlbiBmaWxl
LiJfcykpKTsKIAotICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0
OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSks
IFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgp
KSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKLSAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIDApOworICAgIEpTQXJyYXkqIGFy
cmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShyZWFsbS0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAg
YXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwg
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGFycmF5LT5wdXRE
aXJlY3RJbmRleChyZWFsbS0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIH0KLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgcmVhbG0t
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIpLCBh
cnJheSk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0
Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgpOwotICAgIGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4geyBh
YnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24p
OworICAgIGV2YWx1YXRlKHJlYWxtLT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIFNv
dXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgZmlsZU5hbWUpLCBKU1ZhbHVl
KCksIGV4Y2VwdGlvbik7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IHNjb3BlLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihyZWFsbS0+Z2xvYmFs
RXhlYygpLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2UgPSBleGVj
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgR2xv
YmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIAotICAg
IEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgMCk7CisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHJl
YWxtLT5nbG9iYWxFeGVjKCksIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1
bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OyArK2kpIHsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KHJlYWxtLT5nbG9iYWxFeGVj
KCksIGkgLSAxLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQotICAgIGds
b2JhbE9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXJn
dW1lbnRzIiksIGFycmF5KTsKKyAgICByZWFsbS0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwotICAgIGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc291cmNlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUo
KSwgZXhjZXB0aW9uKTsKKyAgICBldmFsdWF0ZShyZWFsbS0+Z2xvYmFsRXhlYygpLCBqc2NTb3Vy
Y2Uoc291cmNlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBl
eGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBzY29wZS50aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
c2NvcGUudGhyb3dFeGNlcHRpb24ocmVhbG0tPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVhbG0pOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uTG9hZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNo
U2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9y
KGNhbGxGcmFtZSwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwogCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAK
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNl
KHNjcmlwdCwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFt
ZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25F
eGNlcHRpb24pCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgZXZh
bHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBT
dHJpbmcgc291cmNlQ29kZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgIFN0cmluZyBzb3VyY2VDb2RlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigp
KSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291cmNlQ29k
ZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGJvb2wgaXNCaW5hcnkgPSBm
YWxzZTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkgewotICAgICAgICBTdHJp
bmcgdHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAo
dHlwZSAhPSAiYmluYXJ5IikKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
c2NvcGUsICJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJFeHBlY3RlZCAnYmlu
YXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CiAgICAgICAgIGlzQmluYXJ5ID0gdHJ1ZTsKICAg
ICB9CiAKICAgICBSZWZQdHI8VWludDhBcnJheT4gY29udGVudCA9IGZpbGxCdWZmZXJXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZU5hbWUpOwogICAgIGlmICghY29udGVudCkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNvdWxkIG5vdCBvcGVu
IGZpbGUuIik7CiAKICAgICBpZiAoIWlzQmluYXJ5KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+bGVuZ3RoKCkpKSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVy
ZShUeXBlVWludDgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCk7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpT
VWludDhBcnJheTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoY29udGVudCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2Ny
aXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBz
Y3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7
Ci0KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkNvdWxkIG5vdCBvcGVu
IGZpbGUuIl9zKSkpOwogCiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2gu
c3RhcnQoKTsKQEAgLTE2MTMsMjUgKzE2MDcsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBzdG9wV2F0Y2gu
c3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKIH0KIAogI2lmIEVOQUJM
RShTQU1QTElOR19GTEFHUykKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
ZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhlYykpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7CisgICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAg
aWYgKChmbGFnID49IDEpICYmIChmbGFnIDw9IDMyKSkKICAgICAgICAgICAgIFNhbXBsaW5nRmxh
Z3M6OnNldEZsYWcoZmxhZyk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2xlYXJT
YW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1l
bnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgdW5zaWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgdW5zaWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBp
ZiAoKGZsYWcgPj0gMSkgJiYgKGZsYWcgPD0gMzIpKQogICAgICAgICAgICAgU2FtcGxpbmdGbGFn
czo6Y2xlYXJGbGFnKGZsYWcpOwogICAgIH0KQEAgLTE2MzksNDAgKzE2MzMsNDAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3Rh
dGUqIGV4ZWMpCiB9CiAjZW5kaWYKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkdldFJhbmRvbVNlZWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRvbVNlZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbSgpLnNlZWQoKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2xvYmFsT2JqZWN0LT53ZWFrUmFuZG9tKCku
c2VlZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRS
YW5kb21TZWVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIHNlZWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQz
MihleGVjKTsKKyAgICB1bnNpZ25lZCBzZWVkID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1VJ
bnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbSgp
LnNldFNlZWQoc2VlZCk7CisgICAgZ2xvYmFsT2JqZWN0LT53ZWFrUmFuZG9tKCkuc2V0U2VlZChz
ZWVkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1JvcGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgIGNvbnN0IFN0cmluZ0ltcGwq
IGltcGwgPSBhc1N0cmluZyhhcmd1bWVudCktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFpbXBsKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmln
aW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IHN0YXRlLT5jYWxsZXJTb3VyY2VPcmln
aW4oKTsKKyAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4oKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHN0YXRlLT52bSgpLCBzb3VyY2VPcmlnaW4uc3RyaW5nKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgc291cmNl
T3JpZ2luLnN0cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25SZWFkbGluZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVhZGxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKICAgICBWZWN0b3I8Y2hhciwgMjU2PiBsaW5lOwogICAgIGludCBjOwpAQCAtMTY4
Myw2MSArMTY3Nyw2MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVh
ZGxpbmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBsaW5lLmFwcGVuZChjKTsKICAgICB9CiAg
ICAgbGluZS5hcHBlbmQoJ1wwJyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLT52bSgpLCBsaW5lLmRhdGEoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBsaW5lLmRhdGEoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKikKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmVjaXNlVGltZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZl
cklubGluZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlcklubGluZShleGVjKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlcklubGluZShjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2V0TmV2ZXJPcHRpbWl6ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
ZXROZXZlck9wdGltaXplKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTm9GVEwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rpb24oZXhl
Yy0+YXJndW1lbnQoMCkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkgewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlRm9y
RnVuY3Rpb24oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChleGVjdXRhYmxl
KQogICAgICAgICAgICAgZXhlY3V0YWJsZS0+c2V0TmV2ZXJGVExPcHRpbWl6ZSh0cnVlKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhpdEZ1enppbmcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhp
dEZ1enppbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldENhbm5vdFVzZU9TUkV4aXRGdXp6aW5nKGV4ZWMpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldENhbm5vdFVzZU9TUkV4aXRGdXp6aW5nKGNh
bGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uT3B0
aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0
aW1pemVOZXh0SW52b2NhdGlvbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShv
cHRpbWl6ZU5leHRJbnZvY2F0aW9uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21waWxlcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21waWxl
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyT2ZERkdDb21waWxlcyhleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShudW1iZXJPZkRGR0NvbXBpbGVzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVy
SXNPTUdDb21waWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBpZiAoIU9wdGlvbnM6OnVzZUJCUVRpZXJVcENoZWNrcygpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAKICAgICBDYWxsZXJGdW5jdG9y
IHdhc21Ub0pTRnJhbWU7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChleGVjLCAmdm0sIHdhc21U
b0pTRnJhbWUpOworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCAmdm0sIHdhc21U
b0pTRnJhbWUpOwogICAgIGlmICghd2FzbVRvSlNGcmFtZS5jYWxsZXJGcmFtZSgpLT5pc0FueVdh
c21DYWxsZWUoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgImNh
bGxlciBpcyBub3QgYSB3YXNtLT5qcyBpbXBvcnQgZnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiY2FsbGVyIGlzIG5vdCBhIHdhc20tPmpz
IGltcG9ydCBmdW5jdGlvbiIpOwogCiAgICAgLy8gV2UgaGF2ZSBhIHdyYXBwZXIgZnJhbWUgdGhh
dCB3ZSBnZW5lcmF0ZSBmb3IgaW1wb3J0cy4gSWYgd2UgZXZlciBjYW4gZGlyZWN0IGNhbGwgZnJv
bSB3YXNtIHdlIHdvdWxkIG5lZWQgdG8gY2hhbmdlIHRoaXMuCiAgICAgQVNTRVJUKCF3YXNtVG9K
U0ZyYW1lLmNhbGxlckZyYW1lKCktPmNhbGxlZSgpLmlzV2FzbSgpKTsKQEAgLTE4NjIsNDUgKzE4
NTYsNDAgQEAgV29ya2VycyYgV29ya2Vyczo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gKnJlc3Vs
dDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckNyZWF0
ZVJlYWxtKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIEdsb2JhbE9iamVjdCogcmVzdWx0ID0gR2xvYmFsT2JqZWN0Ojpj
cmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0LT5nZXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkIikpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckRldGFjaEFycmF5QnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVy
KGV4ZWMpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
RXZhbFNjcmlwdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlQ29kZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2VDb2RlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIEdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxHbG9iYWxPYmplY3QqPih2bSwKLSAgICAgICAgZXhl
Yy0+dGhpc1ZhbHVlKCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9i
YWwiKSkpOworICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBqc0R5bmFtaWNDYXN0PEdsb2JhbE9i
amVjdCo+KHZtLAorICAgICAgICBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9iYWwiKSkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xv
YmFsIG9iamVjdCJfcykpKTsKKyAgICBpZiAoIXJlYWxtKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNh
bGxGcmFtZSwgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGdsb2JhbCBvYmplY3QiX3Mp
KSk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFs
dWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0
ZShyZWFsbS0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291cmNlQ29kZSwgY2FsbEZyYW1lLT5j
YWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAg
ICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRG9sbGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlQ29kZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpLmlzb2xhdGVkQ29weSgpOworICAgIFN0cmluZyBz
b3VyY2VDb2RlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUp
Lmlzb2xhdGVkQ29weSgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIAogICAgIExvY2sgZGlkU3RhcnRMb2NrOwpAQCAtMTk0MiwxNiArMTkz
MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRT
dGFydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgY2FsbGJh
Y2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKHZtLCBjYWxsYmFjaywgY2FsbERhdGEpOwogICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGNh
bGxiYWNrIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0
aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkV4cGVjdGVkIGNh
bGxiYWNrIl9zKSkpOwogICAgIAogICAgIFJlZlB0cjxNZXNzYWdlPiBtZXNzYWdlOwogICAgIHsK
QEAgLTE5NjEsMjIgKzE5NTAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMKICAgICAKICAg
ICBhdXRvIG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVsZWFz
ZUNvbnRlbnRzKCkpOwogICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBu
YXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCk7Ci0gICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIg
PSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikp
OworICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92
ZShuYXRpdmVCdWZmZXIpKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGFyZ3MuYXBwZW5kKGpzQnVmZmVyKTsKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihtZXNz
YWdlLT5pbmRleCgpKSk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ3MuaGFzT3ZlcmZsb3dlZCgpKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdz
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzTnVsbCgpLCBhcmdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyByZXBvcnQgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgcmVwb3J0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIFdvcmtlcnM6OnNp
bmdsZXRvbigpLnJlcG9ydChyZXBvcnQpOwpAQCAtMTk4NCwyOSArMTk3MywyOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFNsZWVwKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFNsZWVwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMSkgewotICAgICAgICBTZWNvbmRz
IHNlY29uZHMgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkg
eworICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBzbGVlcChz
ZWNvbmRzKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50
QnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNBcnJh
eUJ1ZmZlcioganNCdWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFqc0J1ZmZlciB8fCAhanNCdWZmZXItPmlz
U2hhcmVkKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBTaGFyZWRBcnJheUJ1ZmZl
ciJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJFeHBlY3RlZCBTaGFyZWRB
cnJheUJ1ZmZlciJfcykpKTsKICAgICAKLSAgICBpbnQzMl90IGluZGV4ID0gZXhlYy0+YXJndW1l
bnQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGluZGV4ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgV29ya2Vyczo6c2luZ2xldG9uKCkuYnJv
YWRjYXN0KApAQCAtMjAyMSw5ICsyMDEwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVw
b3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAg
ICBTdHJpbmcgc3RyaW5nID0gV29ya2Vyczo6c2luZ2xldG9uKCkudHJ5R2V0UmVwb3J0KCk7CiAg
ICAgaWYgKCFzdHJpbmcpCkBAIC0yMDMyLDE5ICsyMDIxLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgc3RyaW5nKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmco
RXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJB
Z2VudExlYXZpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhFeGVjU3RhdGUqKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TW9ub3RvbmljTm93
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWls
bGlzZWNvbmRzKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyBzdHJpbmc7CiAgICAgewpAQCAtMjA1Nywy
MCArMjA0NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZv
clJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgc3RyaW5nKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25IZWFwQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
dm0uaGVhcC5jYXBhY2l0eSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgZG91YmxlIHNsZWVwVGltZU1zID0g
MDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgc2xlZXBU
aW1lTXMgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICBpZiAoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBzbGVlcFRpbWVNcyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCkBAIC0yMDgxLDEz
ICsyMDcwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGFzaEhl
YXBBY2Nlc3MoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
aXNhYmxlUmljaFNvdXJjZUluZm8oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKQogewogICAgIHN1cHBvcnRzUmljaFNvdXJjZUluZm8gPSBmYWxzZTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChFeGVjU3RhdGUqKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKQogewogICAgIFZlY3Rvcjx2b2lkKj4gcHRyczsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQpAQCAtMjA5Nyw3ICsyMDg2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoRXhlY1N0YXRlKikKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShFeGVjU3RhdGUqKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihKSVQ6OnRvdGFsQ29tcGlsZVRpbWUoKS5taWxsaXNl
Y29uZHMoKSkpOwpAQCAtMjExNSwxMCArMjEwNCwxMCBAQCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2Z1bmRhbWVudGFsPFZhbHVlVHlwZT46OnZhbHVlPjo6dHlwZSBhZGRPcHRpb24o
VgogICAgIG9wdGlvbnNPYmplY3QtPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNWYWx1ZSh2
YWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0
aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSlNDT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiBvcHRp
b25zT2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRpb25zT2JqZWN0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICNkZWZpbmUgUkVBRF9PUFRJT04odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBhZGRP
cHRpb24odm0sIG9wdGlvbnNPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1l
XyksIE9wdGlvbnM6Om5hbWVfKCkpOwogICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oUkVBRF9PUFRJ
T04pCkBAIC0yMTI2LDI5ICsyMTE1LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG9wdGlvbnNPYmplY3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlvblJldHJ5Q291bnQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
PCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IAotICAgIENvZGVCbG9jayogYmxvY2sgPSBnZXRTb21lQmFzZWxpbmVDb2RlQmxvY2tGb3JGdW5j
dGlvbihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgQ29kZUJsb2NrKiBibG9jayA9IGdldFNvbWVC
YXNlbGluZUNvZGVCbG9ja0ZvckZ1bmN0aW9uKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IGlmICghYmxvY2spCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkp
OwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYmxvY2stPnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyJfcykpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2Nv
cGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOwog
ICAgIAotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1
ZmZlcio+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVy
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYW4g
YXJyYXkgYnVmZmVyIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkV4cGVj
dGVkIGFuIGFycmF5IGJ1ZmZlciJfcykpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
IGR1bW15Q29udGVudHM7CiAgICAgYnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyVG8odm0sIGR1bW15
Q29udGVudHMpOwpAQCAtMjE1NiwxNiArMjE0NSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0Nv
ZGVCbG9jayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIHZtLnNldEZhaWxOZXh0TmV3Q29kZUJsb2NrKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblF1aXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblF1aXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICB2bS5jb2RlQ2FjaGUoKS0+d3JpdGUodm0pOwogCiAgICAganNjRXhpdChFWElU
X1NVQ0NFU1MpOwpAQCAtMjE3NiwyMyArMjE2NSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqIGV4ZWMpCiAjZW5kaWYKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEV4ZWNTdGF0ZSopIHsgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOyB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQxKEV4ZWNTdGF0ZSopIHsgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSXNJbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGVjLT5hcmd1
bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmlzSW50
MzIoKSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KGkpLmlzSW50MzIo
KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUHVyZU5hTihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFO
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoaSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVy
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkp
OwogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIoKTsKQEAgLTIyMDQsNDkg
KzIxOTMsNDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUHVyZU5h
TihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRp
dHkoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+YXJndW1l
bnQoMCkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRpdHko
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOyB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDQyKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VN
YXNxdWVyYWRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShNYXNx
dWVyYWRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShN
YXNxdWVyYWRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3Bl
cnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUg
dmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICh2YWx1ZS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdCh2YWx1
ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoZXhlYy0+dm0oKSkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QodmFsdWUpLT5oYXNDdXN0b21Qcm9wZXJ0
aWVzKGdsb2JhbE9iamVjdC0+dm0oKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5kdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3Jv
dGFza3MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmZpbmFsaXplU3luY2hyb25v
dXNKU0V4ZWN1dGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxh
dGZvcm0oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25J
czMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTQzo6SlNWYWx1
ZTo6SlNGYWxzZSkpOwpAQCAtMjI1NSwzNCArMjI0NCwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopCiAjZW5kaWYKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVj
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShHbG9iYWxPYmplY3Q6OmNyZWF0
ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9y
PFN0cmluZz4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsK
ICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGJv
b2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLCBqc2NTb3VyY2Uoc291cmNl
LCB7IH0sIFVSTCgpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpN
b2R1bGUpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4
KGNhbGxGcmFtZSwganNjU291cmNlKHNvdXJjZSwgeyB9LCBVUkwoKSwgVGV4dFBvc2l0aW9uKCks
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHN0b3BXYXRjaC5zdG9w
KCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygiU3ludGF4RXJyb3I6ICIs
IGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9TdHJpbmco
IlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3IubGluZSgpKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRN
UygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9y
bVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNUcnVl
KSk7CkBAIC0yMjkxLDkgKzIyODAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKgogI2VuZGlm
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBT
bmFwc2hvdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjMwMSwxNCAr
MjI5MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVI
ZWFwU25hcHNob3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHNuYXBzaG90QnVpbGRlci5idWlsZFNu
YXBzaG90KCk7CiAKICAgICBTdHJpbmcganNvblN0cmluZyA9IHNuYXBzaG90QnVpbGRlci5qc29u
KCk7Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJz
ZShleGVjLCBqc29uU3RyaW5nKSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1
ZTo6ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsKICAgICBzY29wZS5y
ZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JH
Q0RlYnVnZ2luZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2luZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3Ry
aW5nIGpzb25TdHJpbmc7CkBAIC0yMzI0LDY2ICsyMzEzLDY2IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEV4
ZWNTdGF0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwganNvblN0cmlu
ZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBl
clNhbXBsZXJTdGF0ZShFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogICAgIHJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVBcnJheVN0b3JhZ2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KGkpKSkKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoaSkpKQogICAg
ICAgICAgICAgb2JqZWN0LT5lbnN1cmVBcnJheVN0b3JhZ2Uodm0pOwogICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAjaWYgRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0
U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU2FtcGxpbmdQcm9maWxlciYgc2FtcGxp
bmdQcm9maWxlciA9IHZtLmVuc3VyZVNhbXBsaW5nUHJvZmlsZXIoV1RGOjpTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKTsKICAgICBzYW1wbGluZ1Byb2ZpbGVyLm5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4
ZWN1dGlvblRocmVhZCgpOwogICAgIHNhbXBsaW5nUHJvZmlsZXIuc3RhcnQoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW1wbGluZ1By
b2ZpbGVyU3RhY2tUcmFjZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgaWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4
ZWMsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRlZCJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVFcnJvcihjYWxsRnJhbWUsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRl
ZCJfcykpKTsKIAogICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9maWxlcigp
LT5zdGFja1RyYWNlc0FzSlNPTigpOwotICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFs
dWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOworICAgIEVuY29kZWRKU1Zh
bHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoY2FsbEZyYW1lLCBqc29uU3Ry
aW5nKSk7CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoRXhlY1N0YXRlKikK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoSlNDOjptYXhBcmd1bWVudHMpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RTdGFydChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG51bWJlck9mQXN5bmNQ
YXNzZXMgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG51bWJlck9mQXN5bmNQYXNz
ZXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghbnVtYmVyT2ZBc3luY1Bhc3Nl
cy5pc1VJbnQzMigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAi
RXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhIHVpbnQzMiJfcyk7CiAKICAgICBhc3luY1Rlc3RFeHBlY3RlZFBhc3NlcyArPSBu
dW1iZXJPZkFzeW5jUGFzc2VzLmFzVUludDMyKCk7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVm
aW5lZCgpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNU
ZXN0UGFzc2VkKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQXN5bmNUZXN0UGFzc2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBh
c3luY1Rlc3RQYXNzZXMrKzsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBAIC0y
MzkxLDM2ICsyMzgwLDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25B
c3luY1Rlc3RQYXNzZWQoRXhlY1N0YXRlKikKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1l
bW9yeU1vZGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3Nl
bWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJs
eSBvcHRpb24gaXMgc2V0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBzaG91bGQgb25seSBiZSBjYWxs
ZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlvbiBpcyBzZXQiX3MpOwogCi0gICAgaWYgKEpT
T2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKSkgeworICAgIGlm
IChKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKSkg
ewogICAgICAgICBpZiAoYXV0byogbWVtb3J5ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5
TWVtb3J5Kj4odm0sIG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKHZtLCBtYWtlU3RyaW5nKG1lbW9yeS0+bWVtb3J5KCkubW9kZSgpKSkpOwogICAg
ICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSo+KHZtLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyh2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOwogICAgIH0K
IAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHlN
ZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9yIFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlIl9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1i
bHkuTWVtb3J5IG9yIFdlYkFzc2VtYmx5Lkluc3RhbmNlIl9zKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
ayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5h
cmd1bWVudCgwKS5nZXRPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYg
KCFvYmplY3QgfHwgIW9iamVjdC0+aXNGdW5jdGlvbih2bSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PnNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKHZtLCBvYmplY3QpOworICAgIGdsb2JhbE9i
amVjdC0+c2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sodm0sIG9iamVjdCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjY2NiwxMyArMjY1
NSwxMyBAQCBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvbwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAotICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVs
ZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgU3RyaW5nKCksIFsmc3VjY2VzcywgJm9wdGlvbnMsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0
ZSogZXhlYykgewotICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGV4ZWMsIGpzQ2FzdDxH
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBpc0xhc3RGaWxlLCBm
YWxzZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2VzcywgJm9wdGlvbnMsIGlzTGFz
dEZpbGVdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSB7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oY2FsbEZyYW1lLCBqc0Nhc3Q8R2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgaXNMYXN0RmlsZSwgZmFsc2UsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgSlNGdW5jdGlvbiogcmVqZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwgWyZzdWNjZXNzLCAmb3B0aW9ucywg
aXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tFeGNl
cHRpb24oZXhlYywganNDYXN0PEdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSksIGlzTGFzdEZpbGUsIHRydWUsIGV4ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNj
ZXNzKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHJlamVjdEhhbmRsZXIgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2Vz
cywgJm9wdGlvbnMsIGlzTGFzdEZpbGVdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oY2Fs
bEZyYW1lLCBqc0Nhc3Q8R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgaXNMYXN0RmlsZSwg
dHJ1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgb3B0aW9ucywgc3VjY2Vzcyk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAg
ICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgKaW5kZXggMmI3MzYwMmE4MzJkMGFkNGFmZjQ2N2I2NTFmNjNiMTJiMmU2YTQ2Yy4uMmEzZTc1
ZGM0YTdkOGVlZTUwZWRhY2MwNmMyNzc2MTI1YTFmZDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaApAQCAtMjksNyArMjksOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCiBuYW1lc3BhY2Ug
TExJbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggYzBiMzE2MWE2OGI2MTVmMmI4NDU1YmYwZWY1ZjE3OTIzZjdmMjkzOC4uMzRlNjUx
NzdmNzBiZTAxYWUzOWI5ODE0NDhkNmM5NzY1YmY1ZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBz
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6
SG9zdCkgewogICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Y0NhbGxlZSk7CiAgICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2Fs
bGVlKSk7Ci0gICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICB2
bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBleGVjQ2FsbGVlKSk7
CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBM
TEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFn
KTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1Zh
bHVlIGNhbGxlZSwKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0
KSB7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUp
OwogICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICB2bS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGFz
T2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQ
dHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBj
MjRjMmQ4NjFhNmRlOWVhYmU0ZmExMmJkNmYwYmE5NzgzOGY1ODU0Li5hZTc4ZjRhOGM1YzBhZGU2
ODU4NWVhZDNhY2RiNDMzYTg4ZDJiNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaApAQCAtMzAsNyArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFByb3RvQ2FsbEZyYW1lOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCmluZGV4IDY1ZjkyNGZiZDUwNTQ4M2YyMDJlMTJmOWM0NWU0MzZlYmMy
NGNjODAuLmU0YjhlNTAyNTU0MGMxZGFmNjc5NGEyOTRkZTk0YzgwZGY1MzE0MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCkBAIC0yNjIsNyArMjYyLDcgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQog
ICAgIHN0b3JlcCBzcCwgVk06OnRvcENhbGxGcmFtZVt2bV0KICAgICBzdG9yZXAgY2ZyLCBWTTo6
dG9wRW50cnlGcmFtZVt2bV0KIAotICAgIG1ha2VDYWxsKGVudHJ5LCB0MywgdDQpCisgICAgbWFr
ZUNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0MywgdDQpCiAKICAgICBpZiBBUk12NwogICAg
ICAgICB2bUVudHJ5UmVjb3JkKGNmciwgdDMpCkBAIC0zMTksNyArMzE5LDggQEAgbWFjcm8gZG9W
TUVudHJ5KG1ha2VDYWxsKQogICAgIHJldAogZW5kCiAKLW1hY3JvIG1ha2VKYXZhU2NyaXB0Q2Fs
bChlbnRyeSwgdGVtcCwgdW51c2VkKQorIyBhMCwgYTIsIHQzLCB0NAorbWFjcm8gbWFrZUphdmFT
Y3JpcHRDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAg
Q2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dGVtcCwgMHhiYWQwZGMwMikKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgpAQCAtMzMxLDI0
ICszMzIsMjggQEAgbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQp
CiAgICAgc3VicCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCi1tYWNybyBtYWtlSG9z
dEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcDEsIHRlbXAyKQorIyBhMCwgYTIsIHQzLCB0NAorbWFj
cm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVt
cDIpCiAgICAgbW92ZSBlbnRyeSwgdGVtcDEKICAgICBzdG9yZXAgY2ZyLCBbc3BdCiAgICAgaWYg
Q19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgbW92ZSBzcCwgYTAKKyAgICAgICAgbG9hZHAg
UHJvdG9DYWxsRnJhbWU6Omdsb2JhbE9iamVjdFtwcm90b0NhbGxGcmFtZV0sIGEwCisgICAgICAg
IG1vdmUgc3AsIGExCiAgICAgICAgIHN0b3JlcCBsciwgUHRyU2l6ZVtzcF0KICAgICAgICAgY2xv
b3BDYWxsTmF0aXZlIHRlbXAxCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4KLSAgICAgICAgIyBQ
dXQgY2FsbGVlIGZyYW1lIHBvaW50ZXIgb24gc3RhY2sgYXMgYXJnMCwgYWxzbyBwdXQgaXQgaW4g
ZWN4IGZvciAiZmFzdGNhbGwiIHRhcmdldHMKKyAgICAgICAgIyBQdXQgY2FsbGVlIGZyYW1lIHBv
aW50ZXIgb24gc3RhY2sgYXMgYXJnMSwgYWxzbyBwdXQgaXQgaW4gZWN4IGZvciAiZmFzdGNhbGwi
IHRhcmdldHMKICAgICAgICAgbW92ZSAwLCB0ZW1wMgogICAgICAgICBtb3ZlIHRlbXAyLCA0W3Nw
XSAjIHB1dCAwIGluIFJldHVyblBDCi0gICAgICAgIG1vdmUgc3AsIGEwICMgYTAgaXMgZWN4Ci0g
ICAgICAgIHB1c2ggdGVtcDIgIyBQdXNoIGR1bW15IGFyZzEKKyAgICAgICAgbW92ZSBzcCwgYTEg
IyBhMSBpcyBlZHgKKyAgICAgICAgbG9hZHAgUHJvdG9DYWxsRnJhbWU6Omdsb2JhbE9iamVjdFtw
cm90b0NhbGxGcmFtZV0sIGEwCisgICAgICAgIHB1c2ggYTEKICAgICAgICAgcHVzaCBhMAogICAg
ICAgICBjYWxsIHRlbXAxCiAgICAgICAgIGFkZHAgOCwgc3AKICAgICBlbHNlCi0gICAgICAgIG1v
dmUgc3AsIGEwCisgICAgICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RbcHJv
dG9DYWxsRnJhbWVdLCBhMAorICAgICAgICBtb3ZlIHNwLCBhMQogICAgICAgICBjYWxsIHRlbXAx
CiAgICAgZW5kCiBlbmQKQEAgLTE5OTcsMTIgKzIwMDIsMTMgQEAgbWFjcm8gbmF0aXZlQ2FsbFRy
YW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2Vk
QmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1h
cmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MwogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6
dG9wQ2FsbEZyYW1lW3QzXQotICAgICAgICBtb3ZlIGNmciwgYTAgICMgYTAgPSBlY3gKLSAgICAg
ICAgc3RvcmVwIGEwLCBbc3BdCi0gICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDEKLSAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEK
KyAgICAgICAgbW92ZSBjZnIsIGExICAjIGExID0gZWR4CisgICAgICAgIHN0b3JlcCBhMSwgW3Nw
XQorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEwCisgICAgICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVthMF0sIGEyCisgICAgICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2EwXSwgYTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50
ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCi0gICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNl
dFRvRnVuY3Rpb25bdDFdCisgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25b
YTJdCiAgICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICAg
ICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9v
dGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92bVt0M10sIHQzCkBAIC0yMDIwLDE0
ICsyMDI2LDE1IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uKQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9h
ZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3Qx
XSwgdDEKICAgICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0MV0KLSAgICAgICAg
bW92ZSBjZnIsIGEwCi0gICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwg
dDEKLSAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICAg
ICAgbW92ZSBjZnIsIGExCisgICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgYTAKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW2EwXSwgYTIKKyAg
ICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTBdLCBhMAogICAgICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAgICAgICAgaWYgQ19M
T09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBleGVjdXRhYmxl
T2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBleGVjdXRh
YmxlT2Zmc2V0VG9GdW5jdGlvblthMl0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJs
ZU9mZnNldFRvRnVuY3Rpb25bYTJdCiAgICAgICAgIGVuZAogICAgICAgICBsb2FkcCBDYWxsZWUg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0
MwpAQCAtMjA2NSwxMSArMjA3MiwxMiBAQCBtYWNybyBpbnRlcm5hbEZ1bmN0aW9uQ2FsbFRyYW1w
b2xpbmUob2Zmc2V0T2ZGdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQx
CiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZv
b3Rlcjo6bV92bVt0MV0sIHQzCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVb
dDNdCi0gICAgICAgIG1vdmUgY2ZyLCBhMCAgIyBhMCA9IGVjeAotICAgICAgICBzdG9yZXAgYTAs
IFtzcF0KLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAg
ICAgICBtb3ZlIGNmciwgYTEgICMgYTEgPSBlZHgKKyAgICAgICAgc3RvcmVwIGExLCBbc3BdCisg
ICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTIKKyAgICAgICAgbG9h
ZHAgSW50ZXJuYWxGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTJdLCBhMAogICAgICAgICBjaGVj
a1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKLSAgICAgICAgY2FsbCBvZmZz
ZXRPZkZ1bmN0aW9uW3QxXQorICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bYTJdCiAgICAg
ICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICAgICAgYW5kcCBN
YXJrZWRCbG9ja01hc2ssIHQzCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0
ICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92bVt0M10sIHQzCkBAIC0yMDgwLDEzICsyMDg4LDE0
IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9u
KQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9hZHAgTWFya2Vk
QmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwgdDEKICAg
ICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0MV0KLSAgICAgICAgbW92ZSBjZnIs
IGEwCi0gICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICAg
ICAgbW92ZSBjZnIsIGExCisgICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgYTIKKyAgICAgICAgbG9hZHAgSW50ZXJuYWxGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTJd
LCBhMAogICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkK
ICAgICAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgICAgIGNsb29wQ2FsbE5h
dGl2ZSBvZmZzZXRPZkZ1bmN0aW9uW3QxXQorICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9m
ZnNldE9mRnVuY3Rpb25bYTJdCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGwgb2Zmc2V0
T2ZGdW5jdGlvblt0MV0KKyAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAg
ICAgICAgZW5kCiAgICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMK
ICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDdmNGViODM3
ZjcxZWExZmI5NTcwMTlhZDNlMzJhYTdkNzFjM2MzYWYuLjFmOGRiZmM2M2RhMzY3MjRiNGFhMjY4
ZGVjZmEwM2E2YTBkYjUzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yNTUsNyArMjU1LDcgQEAgbWFjcm8g
ZG9WTUVudHJ5KG1ha2VDYWxsKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoZXh0
cmFUZW1wUmVnLCAweGJhZDBkYzAyKQogCi0gICAgbWFrZUNhbGwoZW50cnksIHQzLCB0NCkKKyAg
ICBtYWtlQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHQzLCB0NCkKIAogICAgICMgV2UgbWF5
IGhhdmUganVzdCBtYWRlIGEgY2FsbCBpbnRvIGEgSlMgZnVuY3Rpb24sIHNvIHdlIGNhbid0IHJl
bHkgb24gc3AKICAgICAjIGZvciBhbnl0aGluZyBidXQgdGhlIGZhY3QgdGhhdCBvdXIgb3duIGxv
Y2FscyAoaWUgdGhlIFZNRW50cnlSZWNvcmQpIGFyZQpAQCAtMjk3LDcgKzI5Nyw4IEBAIG1hY3Jv
IGRvVk1FbnRyeShtYWtlQ2FsbCkKIGVuZAogCiAKLW1hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChl
bnRyeSwgdGVtcCwgdW51c2VkKQorIyBhMCwgYTIsIHQzLCB0NAorbWFjcm8gbWFrZUphdmFTY3Jp
cHRDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAgMTYs
IHNwCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5j
dGlvbiBlbnRyeQpAQCAtMzA3LDIwICszMDgsMjIgQEAgbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxs
KGVudHJ5LCB0ZW1wLCB1bnVzZWQpCiAgICAgc3VicCAxNiwgc3AKIGVuZAogCi1tYWNybyBtYWtl
SG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcCwgdW51c2VkKQotICAgIG1vdmUgZW50cnksIHRl
bXAKKyMgYTAsIGEyLCB0MywgdDQKK21hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBw
cm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQorICAgIG1vdmUgZW50cnksIHRlbXAxCiAgICAg
c3RvcmVwIGNmciwgW3NwXQotICAgIG1vdmUgc3AsIGEwCisgICAgbG9hZHAgUHJvdG9DYWxsRnJh
bWU6Omdsb2JhbE9iamVjdFtwcm90b0NhbGxGcmFtZV0sIGEwCisgICAgbW92ZSBzcCwgYTEKICAg
ICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBzdG9yZXAgbHIsIDhbc3BdCi0gICAg
ICAgIGNsb29wQ2FsbE5hdGl2ZSB0ZW1wCisgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0ZW1wMQog
ICAgIGVsc2lmIFg4Nl82NF9XSU4KICAgICAgICAgIyBXZSBuZWVkIHRvIGFsbG9jYXRlIDMyIGJ5
dGVzIG9uIHRoZSBzdGFjayBmb3IgdGhlIHNoYWRvdyBzcGFjZS4KICAgICAgICAgc3VicCAzMiwg
c3AKLSAgICAgICAgY2FsbCB0ZW1wLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGNhbGwgdGVtcDEs
IEpTRW50cnlQdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKICAgICBlbHNlCi0gICAgICAgIGNh
bGwgdGVtcCwgSlNFbnRyeVB0clRhZworICAgICAgICBjYWxsIHRlbXAxLCBKU0VudHJ5UHRyVGFn
CiAgICAgZW5kCiBlbmQKIApAQCAtMjEyMywxOSArMjEyNiwyMCBAQCBtYWNybyBuYXRpdmVDYWxs
VHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICBpZiBBUk02NCBvciBB
Uk02NEUgb3IgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgc3RvcmVwIGxyLCBSZXR1cm5Q
Q1tjZnJdCiAgICAgZW5kCi0gICAgbW92ZSBjZnIsIGEwCi0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0s
IHQxCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICBtb3Zl
IGNmciwgYTEKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgYTAKKyAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2V4ZWN1dGFibGVbYTBdLCBhMgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZ2xvYmFsT2Jq
ZWN0W2EwXSwgYTAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAw
MSkKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICBjbG9vcENhbGxOYXRpdmUg
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCisgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0KICAgICBlbHNlCiAgICAgICAgIGlmIFg4Nl82
NF9XSU4KICAgICAgICAgICAgIHN1YnAgMzIsIHNwCi0gICAgICAgICAgICBjYWxsIGV4ZWN1dGFi
bGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgY2FsbCBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0sIEpTRW50cnlQdHJUYWcKICAgICAgICAgICAg
IGFkZHAgMzIsIHNwCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9m
ZnNldFRvRnVuY3Rpb25bdDFdLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBjYWxsIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQKICAg
ICBlbmQKIApAQCAtMjE2MywxOCArMjE2NywxOSBAQCBtYWNybyBpbnRlcm5hbEZ1bmN0aW9uQ2Fs
bFRyYW1wb2xpbmUob2Zmc2V0T2ZGdW5jdGlvbikKICAgICBpZiBBUk02NCBvciBBUk02NEUgb3Ig
Q19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgc3RvcmVwIGxyLCBSZXR1cm5QQ1tjZnJdCiAg
ICAgZW5kCi0gICAgbW92ZSBjZnIsIGEwCi0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCisgICAg
bW92ZSBjZnIsIGExCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIGEyCisgICAgbG9hZHAgSW50ZXJu
YWxGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTJdLCBhMAogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0g
ICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBvZmZzZXRPZkZ1bmN0aW9uW3QxXQorICAgICAgICBjbG9v
cENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAgICBlbHNlCiAgICAgICAgIGlmIFg4
Nl82NF9XSU4KICAgICAgICAgICAgIHN1YnAgMzIsIHNwCi0gICAgICAgICAgICBjYWxsIG9mZnNl
dE9mRnVuY3Rpb25bdDFdLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBjYWxsIG9mZnNldE9m
RnVuY3Rpb25bYTJdLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgICAgICBhZGRwIDMyLCBzcAogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bdDFdLCBKU0VudHJ5
UHRyVGFnCisgICAgICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bYTJdLCBKU0VudHJ5UHRy
VGFnCiAgICAgICAgIGVuZAogICAgIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDM5ZmU2YmJmZjU2NmI5MTU5YmE2MzcxOTNj
NjgzYTNiY2MyZGMxZWUuLmY4OWJmZWRjZTNmYWZmNjM1NzRjNDE1YmJlOTMwNWFlNjBlMjkzOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5o
CkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0FycmF5QnVmZmVy
VmlldzsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBBcnJheUJ1ZmZl
clZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggYjkyYTc2MmE0MDA2Mjk5ZWI3YjQ1OTgwNjQwMmM5OGEwNGExYjk1NS4uOGQwMDkwNjI0
MmU4OWZkZTUxMzEzYzkyOWY2MTUyOWQwMTEzNDQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDggKzUwLDggQEAg
Y29uc3QgQ2xhc3NJbmZvIEFycmF5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb246OnNfaW4KIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0
b3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
QXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlD
b25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxG
dW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsQXJyYXlDb25zdHJ1Y3RvciwgY29uc3RydWN0V2l0
aEFycmF5Q29uc3RydWN0b3IpCkBAIC04NCwxMSArODQsOCBAQCBKU0FycmF5KiBjb25zdHJ1Y3RB
cnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxl
KiBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3QsIG4sIG5ld1RhcmdldCkpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGlu
ZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVl
IG5ld1RhcmdldCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwotCiAgICAgLy8gYSBzaW5nbGUgbnVtZXJpYyBhcmd1
bWVudCBkZW5vdGVzIHRoZSBhcnJheSBzaXplICghKQogICAgIGlmIChhcmdzLnNpemUoKSA9PSAx
KQogICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIG51bGxw
dHIsIGdsb2JhbE9iamVjdCwgYXJncy5hdCgwKSwgbmV3VGFyZ2V0KTsKQEAgLTk3LDE2ICs5NCwx
NiBAQCBzdGF0aWMgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpcwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShl
eGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QsIGFyZ3MsIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVj
LCBhcmdzLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJr
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBhcmdz
LCBKU1ZhbHVlKCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgYXJncywgSlNWYWx1ZSgpKSk7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNBcnJheVNsb3dJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm94eU9iamVjdCogcHJv
eHkpCkBAIC0xNDAsMTAgKzEzNywxMCBAQCBib29sIGlzQXJyYXlTbG93KEV4ZWNTdGF0ZSogZXhl
YywgUHJveHlPYmplY3QqIGFyZ3VtZW50KQogCiAvLyBFUzYgNy4yLjIKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3coRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0
ZUZ1bmNJc0FycmF5U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxQcm94eU9iamVjdCo+KGV4
ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oaXNBcnJheVNsb3dJbmxpbmUoZXhlYywganNDYXN0PFByb3h5T2JqZWN0Kj4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFs
T2JqZWN0LCBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oaXNBcnJheVNsb3dJbmxpbmUoY2FsbEZyYW1lLCBqc0Nhc3Q8UHJveHlPYmplY3QqPihj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmgKaW5kZXggNzVhYzQ1OTIxMzYxNGEzNjU1ZjA2ZjJkNGUzYjQyY2MzMDcyNjM1MC4uNzcyMzNh
ZGU3YjM5YWVkNWVlOGYxNmMwOTgwMzhiMDExOGIyYmM3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBBcnJheUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
CiBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFs
dWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNB
cnJheVNsb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIGJvb2wgaXNBcnJheVNsb3co
RXhlY1N0YXRlKiwgUHJveHlPYmplY3QqIGFyZ3VtZW50KTsKIAogLy8gRVM2IDcuMi4yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXgg
ZWRiNzYxOWI1MTBhYzYzYzQxNzg4NjcyMjA0MmE5MjA0YjBmMjUyMS4uNzk0ODQyMWFhNWVjN2U1
OTgyYTcwZTBkZTk4YmIyODFkNDBjNDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNDgsMTcgKzQ4LDE3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNV
blNoaWZ0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNKb2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NsaWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXJyYXlQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0y
NjcsMTQgKzI2NywxNCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0Nv
bnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzQ29uc3RydQogICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0LCBuZXdPYmpl
Y3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3Bl
Y2llc0NyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkuYXNOdW1iZXIoKSk7CisgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLmFzTnVtYmVyKCkpOwogCi0gICAgc3RkOjpwYWlyPFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25z
dHJ1Y3RBcnJheShleGVjLCBvYmplY3QsIGxlbmd0aCk7CisgICAgc3RkOjpwYWlyPFNwZWNpZXND
b25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1
Y3RBcnJheShjYWxsRnJhbWUsIG9iamVjdCwgbGVuZ3RoKTsKICAgICBFWENFUFRJT05fQVNTRVJU
KCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0Nv
bnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKHNwZWNpZXNSZXN1
bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTI4MiwxMSArMjgyLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzcGVjaWVzUmVzdWx0LnNlY29uZCk7CiAKICAgICBp
ZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7Ci0gICAg
ICAgIHRocm93UmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIkFycmF5IHNpemUgaXMgbm90IGEgc21h
bGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3Np
dGl2ZSBpbnRlZ2VyLiJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCBudWxscHRyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFy
cmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkpKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3Rh
cnRPckVuZChFeGVjU3RhdGUqIGV4ZWMsIGludCBhcmd1bWVudCwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IDApCkBAIC01OTMsMTkgKzU5MywxOSBAQCBpbmxpbmUg
Ym9vbCBjYW5Vc2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcoVk0mIHZtLCBKU09iamVjdCog
dGhpc09iamVjdCkKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmUoc3RydWN0dXJlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogCiAg
ICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0
aGUgdGhpcyB2YWx1ZS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgaWYgKCFjYW5Vc2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcodm0s
IHRoaXNPYmplY3QpKSB7CiAgICAgICAgIC8vIDIuIExldCBmdW5jIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyB0aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgYXJyYXkgd2l0aCBhcmd1bWVu
dCAiam9pbiIuCi0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3Qp
LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKKyAgICAgICAgSlNWYWx1ZSBmdW5j
dGlvbiA9IEpTVmFsdWUodGhpc09iamVjdCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1l
cy0+am9pbik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgICAgIC8vIDMuIElmIElzQ2FsbGFibGUoZnVuYykgaXMgZmFsc2UsIHRo
ZW4gbGV0IGZ1bmMgYmUgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZCBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nICgxNS4yLjQuMikuCkBAIC02MTgsMTEgKzYxOCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAgICAgY3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAgICAgICAgIGlmIChVTkxJ
S0VMWShjdXN0b21Kb2luQ2FzZSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QsIHZt
KSwgIl0iKSkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJbb2JqZWN0ICIsIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QsIHZtKSwgIl0i
KSkpOwogCiAgICAgICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
Q2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUgdGhp
cyB2YWx1ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgICAgIGlmICghaXNKU0Fy
cmF5KHRoaXNPYmplY3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCi0gICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNh
bGxGcmFtZSwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgKnZtLmVt
cHR5TGlzdCkpKTsKICAgICB9CiAKICAgICBBU1NFUlQoaXNKU0FycmF5KHRoaXNWYWx1ZSkpOwpA
QCAtNjMwLDcgKzYzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzQXJyYXktPmxlbmd0aCgpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2Vy
KGV4ZWMsIHRoaXNBcnJheSk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNh
bGxGcmFtZSwgdGhpc0FycmF5KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFy
bHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwpAQCAtNjQ5LDcgKzY0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KIAogICAgICAgICBib29sIHNhd0hvbGVzID0gZmFsc2U7
Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEpvaW4oKmV4ZWMsIHRoaXNBcnJheSwgeyAm
Y29tbWEsIDEgfSwgbGVuZ3RoLCAmc2F3SG9sZXMpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGZhc3RKb2luKCpjYWxsRnJhbWUsIHRoaXNBcnJheSwgeyAmY29tbWEsIDEgfSwgbGVuZ3RoLCAm
c2F3SG9sZXMpOwogCiAgICAgICAgIGlmICghc2F3SG9sZXMgJiYgcmVzdWx0ICYmIGlzSlNTdHJp
bmcocmVzdWx0KSAmJiBpc0NvVykgewogICAgICAgICAgICAgQVNTRVJUKEpTSW1tdXRhYmxlQnV0
dGVyZmx5Ojpmcm9tQnV0dGVyZmx5KHRoaXNBcnJheS0+YnV0dGVyZmx5KCkpID09IGltbXV0YWJs
ZUJ1dHRlcmZseSk7CkBAIC02NTksNjggKzY1OSw2OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgSlNTdHJpbmdKb2lu
ZXIgam9pbmVyKCpleGVjLCAnLCcsIGxlbmd0aCk7CisgICAgSlNTdHJpbmdKb2luZXIgam9pbmVy
KCpjYWxsRnJhbWUsICcsJywgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewogICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzQXJyYXktPnRyeUdldElu
ZGV4UXVpY2tseShpKTsKICAgICAgICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAgICAgICBlbGVt
ZW50ID0gdGhpc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICBlbGVtZW50ID0gdGhp
c0FycmF5LT5nZXQoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGpvaW5lci5h
cHBlbmQoKmV4ZWMsIGVsZW1lbnQpOworICAgICAgICBqb2luZXIuYXBwZW5kKCpjYWxsRnJhbWUs
IGVsZW1lbnQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqb2luZXIuam9pbigqZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqb2luZXIuam9pbigqY2FsbEZyYW1lKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRv
TGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3Ro
KGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIo
ZXhlYywgdGhpc09iamVjdCk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNh
bGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVh
cmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIEpTU3RyaW5nSm9p
bmVyIHN0cmluZ0pvaW5lcigqZXhlYywgJywnLCBsZW5ndGgpOworICAgIEpTU3RyaW5nSm9pbmVy
IHN0cmluZ0pvaW5lcigqY2FsbEZyYW1lLCAnLCcsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICNpZiBFTkFCTEUoSU5UTCkKLSAg
ICBBcmdMaXN0IGFyZ3VtZW50cyhleGVjKTsKKyAgICBBcmdMaXN0IGFyZ3VtZW50cyhjYWxsRnJh
bWUpOwogI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmplY3QtPmdldEluZGV4KGV4ZWMsIGkp
OworICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5nZXRJbmRleChjYWxsRnJh
bWUsIGkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgaWYgKGVsZW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
ICAgIGVsZW1lbnQgPSBqc0VtcHR5U3RyaW5nKHZtKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlIGNvbnZlcnNpb25GdW5jdGlvbiA9IGVsZW1lbnQuZ2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nKTsKKyAgICAgICAgICAgIEpTVmFsdWUgY29udmVy
c2lvbkZ1bmN0aW9uID0gZWxlbWVudC5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b0xvY2FsZVN0cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY29udmVyc2lvbkZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKICNpZiBFTkFCTEUoSU5UTCkKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChl
eGVjLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgYXJn
dW1lbnRzKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChjYWxsRnJhbWUsIGNvbnZl
cnNpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOwog
I2Vsc2UKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChleGVjLCBjb252ZXJzaW9uRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgKnZtLmVtcHR5TGlzdCk7CisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoY2FsbEZyYW1lLCBjb252ZXJzaW9uRnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgKnZtLmVtcHR5TGlzdCk7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5k
KCpleGVjLCBlbGVtZW50KTsKKyAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZCgqY2FsbEZyYW1l
LCBlbGVtZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc3RyaW5nSm9pbmVyLmpvaW4oKmV4ZWMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nSm9pbmVyLmpvaW4oKmNhbGxGcmFtZSkp
KTsKIH0KIAogc3RhdGljIEpTVmFsdWUgc2xvd0pvaW4oRXhlY1N0YXRlJiBleGVjLCBKU09iamVj
dCogdGhpc09iamVjdCwgSlNTdHJpbmcqIHNlcGFyYXRvciwgdWludDY0X3QgbGVuZ3RoKQpAQCAt
NzcxLDI4ICs3NzEsMjggQEAgc3RhdGljIEpTVmFsdWUgc2xvd0pvaW4oRXhlY1N0YXRlJiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNTdHJpbmcqIHNlcGFyYXQKICAgICByZXR1cm4gcjsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0pvaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Ly8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRo
aXNPYmplY3QpOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUs
IHRoaXNPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8
IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVy
blZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKICAgICAvLyAyLiBMZXQgbGVuIGJlID8g
VG9MZW5ndGgoPyBHZXQoTywgImxlbmd0aCIpKS4KLSAgICBkb3VibGUgbGVuZ3RoID0gdG9MZW5n
dGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgZG91YmxlIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxG
cmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyAzLiBJZiBzZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCBsZXQg
c2VwYXJhdG9yIGJlIHRoZSBzaW5nbGUtZWxlbWVudCBTdHJpbmcgIiwiLgotICAgIEpTVmFsdWUg
c2VwYXJhdG9yVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHNlcGFyYXRv
clZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoc2VwYXJhdG9yVmFsdWUu
aXNVbmRlZmluZWQoKSkgewogICAgICAgICBjb25zdCBMQ2hhciBjb21tYSA9ICcsJzsKIApAQCAt
ODAyLDExNyArODAyLDExNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBKU1N0cmluZyoganNTZXBh
cmF0b3IgPSBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgY29tbWEpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpl
eGVjLCB0aGlzT2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqY2FsbEZy
YW1lLCB0aGlzT2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB1bnNpZ25lZCB1bnNpZ25lZExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZW5ndGgpOwogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPih1bnNpZ25lZExlbmd0
aCkgPT0gbGVuZ3RoKTsKIAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVjdCwgeyAmY29tbWEsIDEgfSwgdW5z
aWduZWRMZW5ndGgpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGZhc3RKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3QsIHsgJmNvbW1hLCAxIH0s
IHVuc2lnbmVkTGVuZ3RoKSkpOwogICAgIH0KIAogICAgIC8vIDQuIExldCBzZXAgYmUgPyBUb1N0
cmluZyhzZXBhcmF0b3IpLgotICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IHNlcGFyYXRvclZh
bHVlLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IHNlcGFyYXRv
clZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobGVuZ3RoID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8ICFjYW5Vc2VGYXN0Sm9pbih0aGlzT2Jq
ZWN0KSkpIHsKICAgICAgICAgdWludDY0X3QgbGVuZ3RoNjQgPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4obGVuZ3RoKTsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4obGVuZ3RoNjQp
ID09IGxlbmd0aCk7CiAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIGpzU2VwYXJhdG9yLCBsZW5ndGg2
NCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c2xvd0pvaW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkp
OwogICAgIH0KIAotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBqc1NlcGFyYXRvci0+dmlld1dp
dGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBqc1Nl
cGFyYXRvci0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVj
dCwgdmlld1dpdGhTdHJpbmcudmlldywgbGVuZ3RoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3Qs
IHZpZXdXaXRoU3RyaW5nLnZpZXcsIGxlbmd0aCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2Rl
KTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKLSAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZXhl
YykpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
YXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoY2FsbEZyYW1lKSkpOwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmog
PSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09i
aikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVu
Z3RoKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAobGVuZ3RoID09IDApIHsKICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpzTnVt
YmVyKGxlbmd0aCkpOworICAgICAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwg
anNOdW1iZXIobGVuZ3RoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhl
YywgbGVuZ3RoIC0gMSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqLT5nZXQoY2FsbEZy
YW1lLCBsZW5ndGggLSAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBjYWxsRnJhbWUsIGxlbmd0aCAtIDEpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2Vz
cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFVuYWJsZVRvRGVsZXRl
UHJvcGVydHlFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwogICAgIH0KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVuZ3RoKGV4ZWMs
IHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CisgICAgcHV0TGVuZ3RoKGNhbGxG
cmFtZSwgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKLSAgICBp
ZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9
PSAxKSkgeworICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0Fy
cmF5KHRoaXNWYWx1ZSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYXJyYXkt
PnB1c2hJbmxpbmUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgICAgICBh
cnJheS0+cHVzaElubGluZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5n
dGgoKSkpOwogICAgIH0KICAgICAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50
b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywg
dGhpc09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlz
T2JqKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBleGVjLT5hcmd1bWVudENvdW50KCk7IG4r
KykgeworICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsgbisrKSB7CiAgICAgICAgIC8vIENoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93OyB3aGVy
ZSBzYWZlIHdlIGNhbiBkbyBhIGZhc3QgcHV0IGJ5IGluZGV4LgogICAgICAgICBpZiAobGVuZ3Ro
ICsgbiA+PSBsZW5ndGgpCi0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1
dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQobiksIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KHRoaXNPYmosIGNhbGxGcmFtZSwgbGVuZ3RoICsgbiwgY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChuKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVj
KSk7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dCh0aGlzT2JqLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKKyAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkpOworICAgICAgICAgICAgdGhpc09i
ai0+bWV0aG9kVGFibGUodm0pLT5wdXQodGhpc09iaiwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUs
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
ICAgICAKLSAgICBKU1ZhbHVlIG5ld0xlbmd0aChzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgp
ICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlYy0+YXJndW1lbnRDb3VudCgpKSk7CisgICAgSlNW
YWx1ZSBuZXdMZW5ndGgoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0
PGludDY0X3Q+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwgbmV3TGVuZ3RoKTsKKyAgICBw
dXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgbmV3TGVuZ3RoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG5ld0xlbmd0aCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdGhp
c09iamVjdC0+ZW5zdXJlV3JpdGFibGUodm0pOwpAQCAtOTU3LDQyICs5NTcsNDIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHVuc2lnbmVkIG1pZGRsZSA9IGxlbmd0aCAvIDI7CiAgICAgZm9yICh1bnNpZ25l
ZCBsb3dlciA9IDA7IGxvd2VyIDwgbWlkZGxlOyBsb3dlcisrKSB7CiAgICAgICAgIHVuc2lnbmVk
IHVwcGVyID0gbGVuZ3RoIC0gbG93ZXIgLSAxOwotICAgICAgICBib29sIGxvd2VyRXhpc3RzID0g
dGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgbG93ZXIpOworICAgICAgICBib29sIGxvd2Vy
RXhpc3RzID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBsb3dlcik7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICBKU1ZhbHVlIGxvd2VyVmFsdWU7CiAgICAgICAgIGlmIChsb3dlckV4aXN0cykgewotICAgICAg
ICAgICAgbG93ZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCBsb3dlcik7CisgICAgICAg
ICAgICBsb3dlclZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwgbG93ZXIpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIHVwcGVyRXhpc3RzID0gdGhpc09iamVjdC0+aGFzUHJv
cGVydHkoZXhlYywgdXBwZXIpOworICAgICAgICBib29sIHVwcGVyRXhpc3RzID0gdGhpc09iamVj
dC0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCB1cHBlcik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBKU1ZhbHVlIHVwcGVyVmFs
dWU7CiAgICAgICAgIGlmICh1cHBlckV4aXN0cykgewotICAgICAgICAgICAgdXBwZXJWYWx1ZSA9
IHRoaXNPYmplY3QtPmdldChleGVjLCB1cHBlcik7CisgICAgICAgICAgICB1cHBlclZhbHVlID0g
dGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwgdXBwZXIpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAodXBwZXJFeGlzdHMpIHsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJ
bmxpbmUoZXhlYywgbG93ZXIsIHVwcGVyVmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09i
amVjdC0+cHV0QnlJbmRleElubGluZShjYWxsRnJhbWUsIGxvd2VyLCB1cHBlclZhbHVlLCB0cnVl
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwg
ZXhlYywgbG93ZXIpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgY2FsbEZyYW1l
LCBsb3dlcik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGxvd2VyRXhpc3RzKSB7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5s
aW5lKGV4ZWMsIHVwcGVyLCBsb3dlclZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCB1cHBlciwgbG93ZXJWYWx1ZSwgdHJ1ZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIHVwcGVyKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGNhbGxGcmFtZSwg
dXBwZXIpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVy
dHlFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTAwMCw2MSAr
MTAwMCw2MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2
ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2Jq
ZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1No
aWZ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywg
U3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0
aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNP
YmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgaWYgKGxlbmd0aCA9PSAwKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgcHV0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGgpKTsKKyAgICAg
ICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdGhpc09iai0+Z2V0SW5kZXgoZXhlYywgMCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSB0aGlzT2JqLT5nZXRJbmRleChjYWxsRnJhbWUsIDApOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNoaWZ0PEpTQXJy
YXk6OlNoaWZ0Q291bnRGb3JTaGlmdD4oZXhlYywgdGhpc09iaiwgMCwgMSwgMCwgbGVuZ3RoKTsK
KyAgICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGNhbGxGcmFtZSwgdGhpc09i
aiwgMCwgMSwgMCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVuZ3RoKGV4ZWMs
IHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CisgICAgcHV0TGVuZ3RoKGNhbGxG
cmFtZSwgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNlCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZy
YW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xl
bmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxs
RnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
LSAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
ZXhlYywgMCwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZElu
ZGV4RnJvbVN0YXJ0T3JFbmQoY2FsbEZyYW1lLCAwLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgdW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgsIGxlbmd0aCk7CisgICAgdW5zaWdu
ZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChjYWxsRnJhbWUsIDEs
IGxlbmd0aCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIGlmIChlbmQgPCBiZWdpbikKICAgICAgICAgZW5kID0gYmVnaW47CiAKLSAgICBzdGQ6OnBh
aXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3Bl
Y2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIGVuZCAtIGJlZ2luKTsKKyAgICBzdGQ6
OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0g
c3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhpc09iaiwgZW5kIC0gYmVnaW4pOwog
ICAgIC8vIFdlIGNhbiBvbmx5IGdldCBhbiBleGNlcHRpb24gaWYgd2UgY2FsbCBzb21lIHVzZXIg
ZnVuY3Rpb24uCiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChz
cGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikp
OwogICAgIGlmIChVTkxJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1
Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBib29sIG9r
VG9Eb0Zhc3RQYXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpGYXN0UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3Ro
KGV4ZWMsIHRoaXNPYmopOworICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVzUmVzdWx0
LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNBcnJheSh0
aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChMSUtFTFkob2tUb0RvRmFz
dFBhdGgpKSB7Ci0gICAgICAgIGlmIChKU0FycmF5KiByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmop
LT5mYXN0U2xpY2UoKmV4ZWMsIGJlZ2luLCBlbmQgLSBiZWdpbikpCisgICAgICAgIGlmIChKU0Fy
cmF5KiByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmNhbGxGcmFtZSwgYmVn
aW4sIGVuZCAtIGJlZ2luKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKICAgICB9CiAKQEAgLTEwNjIsNyArMTA2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHNw
ZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9iamVj
dCkKICAgICAgICAgcmVzdWx0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZW5kIC0g
YmVnaW4pOworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwg
bnVsbHB0ciwgZW5kIC0gYmVnaW4pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApAQCAtMTA3MiwzNCArMTA3MiwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
dW5zaWduZWQgbiA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gYmVnaW47IGsgPCBlbmQ7IGsr
KywgbisrKSB7Ci0gICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmos
IGspOworICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmos
IGspOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBp
ZiAodikgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBuLCB2LCAw
LCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoY2FsbEZyYW1lLCBuLCB2LCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHNldExlbmd0aChleGVjLCB2bSwgcmVz
dWx0LCBuKTsKKyAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCBuKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxNS40LjQuMTIK
IAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJh
bWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29u
c3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0
QXJyYXkoZXhlYywgdGhpc09iaiwgMCk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSkgeworICAgICAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmpl
Y3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhp
c09iaiwgMCk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRp
b24pKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2ll
c0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtMTEwOCwyMyArMTEwOCwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYg
KHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9i
amVjdCkKICAgICAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywg
bnVsbHB0cik7CisgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxG
cmFtZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHNldExlbmd0aChleGVjLCB2
bSwgcmVzdWx0LCAwKTsKKyAgICAgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwg
MCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHNldExlbmd0aChleGVjLCB2bSwg
dGhpc09iaiwgbGVuZ3RoKTsKKyAgICAgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNP
YmosIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICB9CiAKLSAgICB1bnNpZ25lZCBhY3R1YWxTdGFydCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJv
bVN0YXJ0T3JFbmQoZXhlYywgMCwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBhY3R1YWxTdGFydCA9
IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoY2FsbEZyYW1lLCAwLCBsZW5ndGgp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgdW5zaWduZWQgYWN0dWFsRGVsZXRlQ291bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKLSAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkgewotICAgICAgICBkb3VibGUgZGVsZXRl
Q291bnQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXIoZXhlYyk7CisgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID4gMSkgeworICAgICAgICBkb3VibGUgZGVs
ZXRlQ291bnQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihjYWxs
RnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgaWYgKGRlbGV0ZUNvdW50IDwgMCkKICAgICAgICAgICAgIGFjdHVhbERl
bGV0ZUNvdW50ID0gMDsKQEAgLTExMzQsODMgKzExMzQsODMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICBhY3R1YWxEZWxldGVDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxldGVDb3Vu
dCk7CiAgICAgfQogCi0gICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2Jq
ZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlzT2Jq
LCBhY3R1YWxEZWxldGVDb3VudCk7CisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1
bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShjYWxs
RnJhbWUsIHRoaXNPYmosIGFjdHVhbERlbGV0ZUNvdW50KTsKICAgICBFWENFUFRJT05fQVNTRVJU
KCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0Nv
bnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKHNwZWNpZXNSZXN1bHQuZmlyc3Qg
PT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IG51
bGxwdHI7Ci0gICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0g
U3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYm
IGxlbmd0aCA9PSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBib29sIG9rVG9Eb0Zhc3RQ
YXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0
UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGNhbGxGcmFt
ZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgaWYgKExJS0VMWShva1RvRG9GYXN0UGF0aCkpCi0gICAgICAgIHJlc3VsdCA9
IGFzQXJyYXkodGhpc09iaiktPmZhc3RTbGljZSgqZXhlYywgYWN0dWFsU3RhcnQsIGFjdHVhbERl
bGV0ZUNvdW50KTsKKyAgICAgICAgcmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+ZmFzdFNsaWNl
KCpjYWxsRnJhbWUsIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCk7CiAKICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29u
c3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICAgICAgcmVzdWx0ID0gc3BlY2ll
c1Jlc3VsdC5zZWNvbmQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gSlNB
cnJheTo6dHJ5Q3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQp
LCBhY3R1YWxEZWxldGVDb3VudCk7CisgICAgICAgICAgICByZXN1bHQgPSBKU0FycmF5Ojp0cnlD
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGFjdHVhbERlbGV0ZUNvdW50KTsKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICAgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCBhY3R1YWxEZWxldGVDb3VudDsgKytrKSB7Ci0gICAgICAgICAg
ICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBrICsgYWN0dWFsU3RhcnQp
OworICAgICAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoY2FsbEZyYW1lLCB0aGlzT2Jq
LCBrICsgYWN0dWFsU3RhcnQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXYpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCBrLCB2LCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBrLCB2LCAwLCBQdXREaXJlY3RJbmRl
eFNob3VsZFRocm93KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdW5zaWduZWQgaXRlbUNv
dW50ID0gc3RkOjptYXg8aW50PihleGVjLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKKyAgICB1
bnNpZ25lZCBpdGVtQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIC0gMiwgMCk7CiAgICAgaWYgKGl0ZW1Db3VudCA8IGFjdHVhbERlbGV0ZUNvdW50KSB7Ci0g
ICAgICAgIHNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxpY2U+KGV4ZWMsIHRoaXNPYmos
IGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOworICAg
ICAgICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU3BsaWNlPihjYWxsRnJhbWUsIHRoaXNP
YmosIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICB9IGVsc2UgaWYgKGl0ZW1Db3VudCA+IGFjdHVhbERlbGV0ZUNvdW50KSB7Ci0gICAgICAgIHVu
c2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oZXhlYywgdGhpc09iaiwgYWN0dWFs
U3RhcnQsIGFjdHVhbERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CisgICAgICAgIHVu
c2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oY2FsbEZyYW1lLCB0aGlzT2JqLCBh
Y3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQsIGl0ZW1Db3VudCwgbGVuZ3RoKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQog
ICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBpdGVtQ291bnQ7ICsraykgewotICAgICAgICB0
aGlzT2JqLT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGsgKyBhY3R1YWxTdGFydCwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKKyAgICAgICAgdGhpc09iai0+cHV0QnlJbmRl
eElubGluZShjYWxsRnJhbWUsIGsgKyBhY3R1YWxTdGFydCwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChrICsgMiksIHRydWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgCiAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHNldExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwgbGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291
bnQgKyBpdGVtQ291bnQpOworICAgIHNldExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBs
ZW5ndGggLSBhY3R1YWxEZWxldGVDb3VudCArIGl0ZW1Db3VudCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhp
c09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwot
ICAgIGRvdWJsZSBkb3VibGVMZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBk
b3VibGUgZG91YmxlTGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBkb3VibGVMZW5ndGg7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICB1bnNpZ25lZCBuckFyZ3MgPSBleGVjLT5h
cmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgbnJBcmdzID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgaWYgKG5yQXJncykgewogICAgICAgICBpZiAoVU5MSUtFTFkoZG91Ymxl
TGVuZ3RoICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihuckFyZ3MpID4gbWF4U2FmZUludGVnZXIoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5v
dCBzaGlmdCB0byBvZmZzZXQgZ3JlYXRlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOwotICAgICAg
ICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTaGlmdD4oZXhlYywgdGhpc09iaiwgMCwg
MCwgbnJBcmdzLCBsZW5ndGgpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIkNhbm5vdCBzaGlmdCB0byBvZmZzZXQgZ3JlYXRlciB0aGFuICgy
ICoqIDUzKSAtIDEiX3MpOworICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JT
aGlmdD4oY2FsbEZyYW1lLCB0aGlzT2JqLCAwLCAwLCBuckFyZ3MsIGxlbmd0aCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAg
ICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKLSAgICAgICAgdGhpc09i
ai0+cHV0QnlJbmRleElubGluZShleGVjLCBrLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKSwg
dHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCBrLCBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGspLCB0cnVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIobGVuZ3RoICsgbnJBcmdzKTsKICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcHV0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCByZXN1bHQpOworICAgIHB1dExlbmd0
aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMTMxNSwzNiArMTMxNSwzNiBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgZmFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGFy
cmF5LCB1bnNpZwogICAgIH0KIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1l
bnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgpOworICAgIHVuc2ln
bmVkIGluZGV4ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChjYWxsRnJhbWUs
IDEsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBK
U1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHNl
YXJjaEVsZW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogCiAgICAgaWYgKGlzSlNBcnJh
eSh0aGlzT2JqZWN0KSkgewotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPElu
ZGV4T2ZEaXJlY3Rpb246OkZvcndhcmQ+KGV4ZWMsIHZtLCBhc0FycmF5KHRoaXNPYmplY3QpLCBs
ZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBm
YXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9uOjpGb3J3YXJkPihjYWxsRnJhbWUsIHZtLCBhc0Fy
cmF5KHRoaXNPYmplY3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKICAgICBm
b3IgKDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgSlNWYWx1ZSBlID0gZ2V0
UHJvcGVydHkoZXhlYywgdGhpc09iamVjdCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIGUgPSBn
ZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmplY3QsIGluZGV4KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4
ZWMsIHNlYXJjaEVsZW1lbnQsIGUpOworICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpz
dHJpY3RFcXVhbChjYWxsRnJhbWUsIHNlYXJjaEVsZW1lbnQsIGUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoaXNFcXVhbCkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKQEAgLTEzNTMsMjQg
KzEzNTMsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoLTEpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpIHx8ICFsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbGVuZ3Ro
IC0gMTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgSlNW
YWx1ZSBmcm9tVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICAgICAgZG91
YmxlIGZyb21Eb3VibGUgPSBmcm9tVmFsdWUudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmIChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CisgICAgICAgIEpTVmFsdWUgZnJvbVZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICAgICAgZG91YmxlIGZyb21E
b3VibGUgPSBmcm9tVmFsdWUudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmIChmcm9tRG91YmxlIDwgMCkgewog
ICAgICAgICAgICAgZnJvbURvdWJsZSArPSBsZW5ndGg7CkBAIC0xMzgxLDEwICsxMzgxLDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihmcm9tRG91YmxlKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqZWN0KSkgewotICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPEluZGV4T2ZEaXJlY3Rpb246OkJhY2t3YXJkPihl
eGVjLCB2bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRl
eCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlv
bjo6QmFja3dhcmQ+KGNhbGxGcmFtZSwgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0aCwg
c2VhcmNoRWxlbWVudCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTM5MiwxMSArMTM5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgZG8gewogICAgICAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgpOwotICAgICAgICBKU1Zh
bHVlIGUgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqZWN0LCBpbmRleCk7CisgICAgICAgIEpT
VmFsdWUgZSA9IGdldFByb3BlcnR5KGNhbGxGcmFtZSwgdGhpc09iamVjdCwgaW5kZXgpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoIWUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVudCwgZSk7CisgICAgICAgIGJvb2wgaXNFcXVhbCA9
IEpTVmFsdWU6OnN0cmljdEVxdWFsKGNhbGxGcmFtZSwgc2VhcmNoRWxlbWVudCwgZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmIChpc0VxdWFs
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOwpA
QCAtMTUwMCwxMyArMTUwMCwxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUVsZW1lbnRzKFQq
IGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB2b2lkKiBzb3VyY2UsIHVuc2lnbgogICAgICAgICBj
bGVhckVsZW1lbnQ8VD4oYnVmZmVyW2kgKyBvZmZzZXRdKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVG
dW5jQ29uY2F0TWVtY3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPT0gMik7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQXJyYXkqIGZpcnN0QXJy
YXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBK
U0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICAKICAgICAvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IG5laXRo
ZXIgYXJyYXkgaGFzIHNldCBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlLiBJZiB0aGUgZmlyc3Qg
YXJyYXkKICAgICAvLyBoYXMgaW5kZXhlZCBhY2Nlc3NvcnMgdGhlbiBvbmUgb2YgdGhvc2UgYWNj
ZXNzb3JzIG1pZ2h0IGNoYW5nZSB0aGUgdmFsdWUgb2YgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJs
ZQpAQCAtMTUxNSwxNCArMTUxNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgLy8gV2UgbmVlZCB0byBj
aGVjayB0aGUgc3BlY2llcyBjb25zdHJ1Y3RvciBoZXJlIHNpbmNlIGNoZWNraW5nIGl0IGluIHRo
ZSBKUyB3cmFwcGVyIGlzIHRvbyBleHBlbnNpdmUgZm9yIHRoZSBub24tb3B0aW1pemluZyB0aWVy
cy4KLSAgICBib29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoZXhlYywgZmly
c3RBcnJheSk7CisgICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKGNh
bGxGcmFtZSwgZmlyc3RBcnJheSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWlzVmFsaWQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKIAotICAgIEpTVmFsdWUgc2Vjb25kID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMSk7CisgICAgSlNWYWx1ZSBzZWNvbmQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpOwogICAgIGlmICghaXNKU0FycmF5KHNlY29uZCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgY29uY2F0QXBwZW5kT25lKGV4ZWMsIHZtLCBmaXJzdEFycmF5LCBzZWNvbmQp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25jYXRBcHBlbmRPbmUoY2Fs
bEZyYW1lLCB2bSwgZmlyc3RBcnJheSwgc2Vjb25kKSk7CiAKICAgICBKU0FycmF5KiBzZWNvbmRB
cnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oc2Vjb25kKTsKICAgICAKQEAgLTE1MzYsNyArMTUzNiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29u
Y2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBjaGVja2VkUmVzdWx0U2l6ZSArPSBzZWNv
bmRBcnJheVNpemU7CiAKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFJlc3VsdFNpemUuaGFzT3Zl
cmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTU0NSwxNCArMTU0NSwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0Nv
bmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSW5kZXhpbmdUeXBlIHNlY29uZFR5cGUg
PSBzZWNvbmRBcnJheS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBm
aXJzdEFycmF5LT5tZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoc2Vjb25kVHlwZSk7CiAgICAg
aWYgKHR5cGUgPT0gTm9uQXJyYXkgfHwgIWZpcnN0QXJyYXktPmNhbkZhc3RDb3B5KHZtLCBzZWNv
bmRBcnJheSkgfHwgcmVzdWx0U2l6ZSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7Ci0gICAg
ICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwg
cmVzdWx0U2l6ZSk7CisgICAgICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoY2FsbEZyYW1lLCBudWxscHRyLCByZXN1bHRTaXplKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAgYm9vbCBzdWNjZXNz
ID0gbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHQsIDAsIGZpcnN0QXJyYXksIGZpcnN0QXJy
YXlTaXplKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gbW92ZUVsZW1lbnRzKGNhbGxGcmFtZSwg
dm0sIHJlc3VsdCwgMCwgZmlyc3RBcnJheSwgZmlyc3RBcnJheVNpemUpOwogICAgICAgICBFWENF
UFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFzdWNjZXNzKSkKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwotICAgICAgICBzdWNjZXNzID0gbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHQsIGZpcnN0
QXJyYXlTaXplLCBzZWNvbmRBcnJheSwgc2Vjb25kQXJyYXlTaXplKTsKKyAgICAgICAgc3VjY2Vz
cyA9IG1vdmVFbGVtZW50cyhjYWxsRnJhbWUsIHZtLCByZXN1bHQsIGZpcnN0QXJyYXlTaXplLCBz
ZWNvbmRBcnJheSwgc2Vjb25kQXJyYXlTaXplKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gc3VjY2Vzcyk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghc3Vj
Y2VzcykpCiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTE1NjAsMTYg
KzE1NjAsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0
ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgU3RydWN0dXJl
KiByZXN1bHRTdHJ1Y3R1cmUgPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24odHlwZSk7CisgICAgU3RydWN0dXJlKiByZXN1
bHRTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbih0eXBlKTsKICAgICBpZiAoVU5MSUtFTFkoaGFzQW55QXJyYXlTdG9y
YWdlKHJlc3VsdFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBBU1NFUlQoIWxleGljYWxHbG9iYWxPYmpl
Y3QtPmlzSGF2aW5nQUJhZFRpbWUoKSk7CisgICAgQVNTRVJUKCFnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSk7CiAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBpbml0aWFsaXph
dGlvblNjb3BlKHZtKTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkUmVzdHJpY3RlZChpbml0aWFsaXphdGlvblNjb3BlLCByZXN1bHRTdHJ1Y3R1
cmUsIHJlc3VsdFNpemUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwogICAgIH0KIApAQCAtMTU4OCwyNCArMTU4NywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2
YXRlRnVuY0FwcGVuZE1lbWNweShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDMp
OworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAzKTsKIAotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1
bHRBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwot
ICAgIEpTQXJyYXkqIG90aGVyQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpKTsKLSAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgyKTsKKyAgICBKU0FycmF5KiByZXN1bHRBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNBcnJheSogb3RoZXJBcnJh
eSA9IGpzQ2FzdDxKU0FycmF5Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7Cisg
ICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsK
ICAgICBBU1NFUlQoc3RhcnRWYWx1ZS5pc1VJbnQzMkFzQW55SW50KCkpOwogICAgIHVuc2lnbmVk
IHN0YXJ0SW5kZXggPSBzdGFydFZhbHVlLmFzVUludDMyQXNBbnlJbnQoKTsKLSAgICBib29sIHN1
Y2Nlc3MgPSByZXN1bHRBcnJheS0+YXBwZW5kTWVtY3B5KGV4ZWMsIHZtLCBzdGFydEluZGV4LCBv
dGhlckFycmF5KTsKKyAgICBib29sIHN1Y2Nlc3MgPSByZXN1bHRBcnJheS0+YXBwZW5kTWVtY3B5
KGNhbGxGcmFtZSwgdm0sIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXkpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICBpZiAoc3VjY2VzcykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHRBcnJheSwgc3RhcnRJbmRl
eCwgb3RoZXJBcnJheSwgb3RoZXJBcnJheS0+bGVuZ3RoKCkpOworICAgIG1vdmVFbGVtZW50cyhj
YWxsRnJhbWUsIHZtLCByZXN1bHRBcnJheSwgc3RhcnRJbmRleCwgb3RoZXJBcnJheSwgb3RoZXJB
cnJheS0+bGVuZ3RoKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5oCmluZGV4IDc1YWM5ZDJhZDRhZGE2ZTM4M2FmZDk0ODA1NTRlNGY4NDY2ZTg0ZmIuLjZiMmRm
NjNhZWJkMWIxNjA3MjhiNTViODA0ZDE4ZjY2NzU5YzdiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaApAQCAtNTAsMTAgKzUwLDEwIEBAIGNs
YXNzIEFycmF5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQXJyYXkgewogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFsdWVz
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJp
dmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVu
ZE1lbWNweShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGM3NzhhMDBjODkwYTk4YWM0MmVkMGFiMDgwZDlm
NjQ3MTE5M2E3YzAuLjdiOGZhYWJkMDNjOWVjZGNiNTE2M2NlNjM1YTQxNmI0ZWE5YmJlZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOwogCiBjb25z
dCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBc3luY0Z1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+
KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1l
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJn
TGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkFzeW5jKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJn
cywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwogfQogCiBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOWEz
OTM4NzZlOGUzNTMxZWIyOTdiMmE0YzU0MjZiNTA4N2IwODUyZC4uOGY3YTgyZDFkMjA1OTQzN2My
YmE2MWE2MTJhMTZiZmU0YzFiMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCkBAIC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENs
YXNzSW5mbyBBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFz
eW5jR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpBc3luY0dlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3Ip
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5
bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+
KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKKyAgICBBcmdMaXN0IGFyZ3Mo
Y2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9u
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkFzeW5jR2VuZXJhdG9yKSk7CiB9CiAKIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwCmluZGV4IDM2OGVhOGZhNmNjYjk3NmUxYzUxZDhlMGI0NzY1NmZmMjU5ZDMyMDYuLmE2
ZDA5NzQ1N2U5NDM5MzIzMjIwMDQ3NjlhOTJiOTUxNGE1OWMxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBdG9taWNzT2JqZWN0KTsK
ICAgICBtYWNybyh4b3IsIFhvciwgMykKIAogI2RlZmluZSBERUNMQVJFX0ZVTkNfUFJPVE8obG93
ZXJOYW1lLCB1cHBlck5hbWUsIGNvdW50KSAgICAgICAgICAgICAgICAgXAotICAgIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmMgIyMgdXBwZXJOYW1lKEV4ZWNTdGF0ZSop
OworICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmMgIyMgdXBwZXJO
YW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBGT1JfRUFDSF9BVE9NSUNTX0ZVTkMo
REVDTEFSRV9GVU5DX1BST1RPKQogI3VuZGVmIERFQ0xBUkVfRlVOQ19QUk9UTwogCkBAIC0xODYs
MTIgKzE4NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNWYWx1ZSogYQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotRW5jb2RlZEpTVmFsdWUgYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGdW5jJiBmdW5jKQorRW5jb2RlZEpTVmFsdWUgYXRvbWljT3BlcmF0
aW9uV2l0aEFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgSlNWYWx1ZSBhcmdzWzIgKyBGdW5jOjpu
dW1FeHRyYUFyZ3NdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDIgKyBGdW5jOjpudW1FeHRyYUFy
Z3M7IGktLTspCi0gICAgICAgIGFyZ3NbaV0gPSBleGVjLT5hcmd1bWVudChpKTsKLSAgICByZXR1
cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYy0+dm0oKSwgZXhlYywgYXJncywgZnVuYyk7
CisgICAgICAgIGFyZ3NbaV0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpOworICAgIHJldHVybiBh
dG9taWNPcGVyYXRpb25XaXRoQXJncyhnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSwgYXJn
cywgZnVuYyk7CiB9CiAKIHN0cnVjdCBBZGRGdW5jIHsKQEAgLTMxMyw4MCArMzEzLDgwIEBAIEVu
Y29kZWRKU1ZhbHVlIGlzTG9ja0ZyZWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZykKIAog
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXRvbWljc0Z1bmNBZGQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhdG9taWNzRnVuY0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhl
YywgQWRkRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIEFkZEZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXRvbWljc0Z1bmNBbmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0FuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0
aEFyZ3MoZXhlYywgQW5kRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFy
Z3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIEFuZEZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNDb21wYXJlRXhjaGFuZ2UoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0NvbXBhcmVFeGNo
YW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgQ29tcGFyZUV4Y2hh
bmdlRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNFeGNoYW5nZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jRXhjaGFuZ2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIEV4Y2hhbmdlRnVuYygpKTsKKyAgICByZXR1
cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIEV4Y2hh
bmdlRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVu
Y0lzTG9ja0ZyZWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhdG9taWNzRnVuY0lzTG9ja0ZyZWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gaXNMb2NrRnJlZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgcmV0dXJuIGlzTG9ja0ZyZWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0xvYWQoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0xv
YWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIExvYWRGdW5jKCkpOwor
ICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgTG9hZEZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWlj
c0Z1bmNPcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0
b21pY3NGdW5jT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIE9yRnVu
YygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIE9yRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
dG9taWNzRnVuY1N0b3JlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXRvbWljc0Z1bmNTdG9yZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Mo
ZXhlYywgU3RvcmVGdW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgU3RvcmVGdW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJh
dGlvbldpdGhBcmdzKGV4ZWMsIFN1YkZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlv
bldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBTdWJGdW5jKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgSlNJbnQzMkFycmF5
KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2bSwgZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8
SlNJbnQzMkFycmF5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghdHlw
ZWRBcnJheSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFy
cmF5IGZvciB3YWl0L3dha2UgbXVzdCBiZSBhbiBJbnQzMkFycmF5LiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtl
IG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIXR5cGVkQXJyYXktPmlz
U2hhcmVkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUeXBlZCBh
cnJheSBmb3Igd2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Ig
d2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfcyk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgdW5zaWdu
ZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRBY2Nlc3NJbmRleCh2bSwgZXhlYywgZXhlYy0+YXJn
dW1lbnQoMSksIHR5cGVkQXJyYXkpOworICAgIHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRh
dGVkQWNjZXNzSW5kZXgodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdHlw
ZWRBcnJheSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAgICBpbnQzMl90KiBwdHIgPSB0eXBlZEFycmF5LT50
eXBlZFZlY3RvcigpICsgYWNjZXNzSW5kZXg7CiAgICAgCi0gICAgaW50MzJfdCBleHBlY3RlZFZh
bHVlID0gZXhlYy0+YXJndW1lbnQoMikudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGV4cGVj
dGVkVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLnRvSW50MzIoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSkpOwogICAgIAotICAgIGRvdWJsZSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSBleGVjLT5hcmd1
bWVudCgzKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgdGltZW91dEluTWlsbGlzZWNvbmRz
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgzKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAg
ICAgCiAgICAgaWYgKCF2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT5pc0F0b21pY3NXYWl0QWxs
b3dlZE9uQ3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBiZSBjYWxsZWQgZnJvbSB0aGUgY3VycmVudCB0aHJl
YWQuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkF0b21p
Y3Mud2FpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkLiJfcyk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAg
IApAQCAtMzk4LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWlj
c0Z1bmNXYWl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyAgICAgYS4gTGV0IHEgYmUgPyBUb051
bWJlcih0aW1lb3V0KS4KICAgICAvLyAgICAgYi4gSWYgcSBpcyBOYU4gdGhlbiBsZXQgdCBiZSAr
aW5mLCBvdGhlcndpc2UgbGV0IHQgYmUgbWF4KDAsIHEpLgogICAgIC8vCi0gICAgLy8gZXhlYy0+
YXJndW1lbnQoMykgcmV0dXJucyB1bmRlZmluZWQgaWYgaXQncyBub3QgcHJvdmlkZWQgYW5kIFRv
TnVtYmVyKHVuZGVmaW5lZCkgcmV0dXJucyBOYU4sCisgICAgLy8gY2FsbEZyYW1lLT5hcmd1bWVu
dCgzKSByZXR1cm5zIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCBwcm92aWRlZCBhbmQgVG9OdW1iZXIo
dW5kZWZpbmVkKSByZXR1cm5zIE5hTiwKICAgICAvLyBzbyBOYU4gaXMgdGhlIG9ubHkgc3BlY2lh
bCBjYXNlLgogICAgIGlmICghc3RkOjppc25hbih0aW1lb3V0KSkKICAgICAgICAgdGltZW91dCA9
IHN0ZDo6bWF4KDBfcywgdGltZW91dCk7CkBAIC00MjgsMzEgKzQyOCwzMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0U3RyaW5nKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWtlKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWtlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAgICBKU0ludDMy
QXJyYXkqIHR5cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgSlNJbnQzMkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWlj
Q2FzdDxKU0ludDMyQXJyYXkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KCF0eXBlZEFycmF5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlw
ZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0
L3dha2UgbXVzdCBiZSBhbiBJbnQzMkFycmF5LiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghdHlwZWRBcnJh
eS0+aXNTaGFyZWQoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5
cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5
IGZvciB3YWl0L3dha2UgbXVzdCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICB1
bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZtLCBleGVjLCBleGVj
LT5hcmd1bWVudCgxKSwgdHlwZWRBcnJheSk7CisgICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2
YWxpZGF0ZWRBY2Nlc3NJbmRleCh2bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
LCB0eXBlZEFycmF5KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgIAogICAgIGludDMyX3QqIHB0ciA9IHR5cGVkQXJy
YXktPnR5cGVkVmVjdG9yKCkgKyBhY2Nlc3NJbmRleDsKICAgICAKLSAgICBKU1ZhbHVlIGNvdW50
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKTsKKyAgICBKU1ZhbHVlIGNvdW50VmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gVUlOVF9NQVg7CiAgICAg
aWYgKCFjb3VudFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50MzJfdCBjb3VudElu
dCA9IGNvdW50VmFsdWUudG9JbnQzMihleGVjKTsKKyAgICAgICAgaW50MzJfdCBjb3VudEludCA9
IGNvdW50VmFsdWUudG9JbnQzMihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgICAgICBjb3Vu
dCA9IHN0ZDo6bWF4KDAsIGNvdW50SW50KTsKICAgICB9CkBAIC00NjAsOSArNDYwLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoUGFya2luZ0xvdDo6dW5wYXJr
Q291bnQocHRyLCBjb3VudCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
dG9taWNzRnVuY1hvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGF0b21pY3NGdW5jWG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVj
LCBYb3JGdW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgWG9yRnVuYygpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BdG9taWNzQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggMTlhMzI1ZTJiNGNhMzc1YjExYzNiNTFmZjk1OGExNjAxZWRhOTIyYy4uOWFhNjU4
N2ExMTc2YTc4NzZkYTYzNjc3N2U2MGQ3MjI1ZDNjNDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENv
bnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50
TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApA
QCAtNTcsNyArNTcsNyBAQCBjb25zdCBDbGFzc0luZm8gQmlnSW50Q29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmJpZ0ludAogQGVuZAogKi8KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0lu
dENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEJpZ0ludENvbnN0
cnVjdG9yOjpCaWdJbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsQmlnSW50Q29uc3RydWN0
b3IsIG51bGxwdHIpCkBAIC0xMTAsMTggKzExMCwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
dG9CaWdJbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICB9KSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgw
KTsKLSAgICBKU1ZhbHVlIHByaW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKHN0YXRlKTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHBy
aW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAocHJpbWl0aXZlLmlz
TnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihzdGF0ZSwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJO
b3Qgc2FmZSBpbnRlZ2VyIl9zKSk7CiAgICAgICAgIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQpAQCAtMTMzLDEyICsxMzMsMTIgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJs
ZSgpKSkpOwogICAgIH0KICAgICAKLSAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0lu
dCgqc3RhdGUsIHByaW1pdGl2ZSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJ
bnQoKmNhbGxGcmFtZSwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oRXhlY1N0YXRl
KikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNV
aW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgLy8gRklYTUU6IFtFU05l
eHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NApAQCAt
MTQ2LDcgKzE0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3Ry
dWN0b3JGdW5jQXNVaW50TihFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25z
dHJ1Y3RvckZ1bmNBc0ludE4oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KikKIHsKICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50LmFz
SW50TiBhbmQgQmlnSW50LmFzVWludE4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCA0ZjFlMjVhNzA3YzJlYjY4MTFkZmFjOGE5Yzdh
OWFiNGZiYzQ0ZjIwLi5iYTBjZTczOTE3MDAzNmY1YzkxYjMxNWVlMzM0ODQ4YTU2YWRhMGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5j
cHAKQEAgLTQxLDkgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJp
Z0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtOTAsNDIgKzkwLDQ3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYg
dm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgSlNWYWx1ZSBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQmlnSW50KiB2
YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpT
QmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmpl
Y3QiX3MpOwotICAgIAorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7
CisKICAgICBBU1NFUlQodmFsdWUpOwogCi0gICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc2NvcGUpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGludDMy
X3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKHN0YXRl
LCByYWRpeCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHZhbHVlLT50b1N0cmluZyhjYWxsRnJhbWUs
IHJhZGl4KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKICAgICBpZiAocmVzdWx0U3RyaW5nLmxlbmd0aCgpID09IDEpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhyZXN1bHRTdHJpbmdbMF0pKTsKKyAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5z
aW5nbGVDaGFyYWN0ZXJTdHJpbmcocmVzdWx0U3RyaW5nWzBdKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKKyAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGJpZ0lu
dFByb3RvRnVuY1RvU3RyaW5nKHN0YXRlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9G
dW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBpZiAoSlNCaWdJbnQqIHZh
bHVlID0gdG9UaGlzQmlnSW50VmFsdWUodm0sIHN0YXRlLT50aGlzVmFsdWUoKSkpCisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChKU0JpZ0ludCogdmFsdWUgPSB0b1Ro
aXNCaWdJbnRWYWx1ZSh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogICAgIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICIndGhpcycgdmFs
dWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuY3BwCmluZGV4IDRlYjk2MDA3NzBjNjRjNDIyZjExZTQxNWJlZDhkODhmOTg4
NWY5ODIuLjU5OWI4ODU0ZThmNWE5YTUxMDhhZWVjMDMwNmZhYjQ0OGQwNmI2MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cApAQCAtMzIsMTggKzMyLDE4IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShCb29sZWFuQ29uc3RydWN0b3IpOwogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5Db25zdHJ1Y3RvcikgfTsKIAogLy8gRUNN
QSAxNS42LjEKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCb29sZWFu
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEJvb2xlYW5Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGV4
ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFt
ZSkpKTsKIH0KIAogLy8gRUNNQSAxNS42LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEJvb2xlYW5D
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSBib29sZWFuID0ganNCb29sZWFuKGV4ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVh
bihleGVjKSk7Ci0gICAgU3RydWN0dXJlKiBib29sZWFuU3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpz
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2
bSktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgSlNWYWx1ZSBib29sZWFuID0ganNC
b29sZWFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpOworICAg
IFN0cnVjdHVyZSogYm9vbGVhblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEJvb2xlYW5PYmplY3QqIG9iaiA9IEJv
b2xlYW5PYmplY3Q6OmNyZWF0ZSh2bSwgYm9vbGVhblN0cnVjdHVyZSk7CiAgICAgb2JqLT5zZXRJ
bnRlcm5hbFZhbHVlKHZtLCBib29sZWFuKTsKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBCb29sZWFu
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQm9vbGVhblByb3RvdHlwZSogYm9v
bGVhblByb3RvdHkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVj
dEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW1tZWRpYXRlQm9vbGVhblZhbHVlKQorSlNPYmpl
Y3QqIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBCb29sZWFuT2JqZWN0KiBvYmogPSBCb29sZWFuT2JqZWN0OjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBvYmotPnNldElu
dGVybmFsVmFsdWUodm0sIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSk7CiAgICAgcmV0dXJuIG9iajsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5j
cHAKaW5kZXggMDZmOWZkMzBhZDUyNzg5ODBhNTMxMjg0N2QzNmFmMDU2YzEyNzljNi4uM2Y5YjVk
ZmRiZmQ4NTRkNDQxZDdiNjkyMTA0YWMzNzg0OTYzNDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTMwLDggKzMwLDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1Rv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY1LDExICs2NSwxMSBAQCB2b2lkIEJvb2xlYW5Qcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
b2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRo
aXNWYWx1ZSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtNzgsNyArNzgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCb29s
ZWFuT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIGlmICh0
aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7CkBA
IC04NywxNyArODcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodm0uc21hbGxTdHJpbmdzLnRydWVTdHJpbmcoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8Qm9vbGVhbk9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApp
bmRleCAwOGY3OWRmNGQ2NzgwMTM0NDRhNmE2MzlhYjRmZmE0OWFlNzFiNWEwLi5lOTcxNDg4NTJk
MGI4ZTY3NDU0NzhlZmY5MjA1MzNhNGM1YjNhZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmgKQEAgLTMzLDEyICszMywxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQXJnTGlzdDsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNs
YXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTT2JqZWN0
OwogY2xhc3MgSlNTY29wZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogZW51bSBj
bGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkIHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBkNWQ2ZjdlMjQwMGRiN2M5
MGVkMWYzNjllYmY4MzI3ODI2ZDk0YTFiLi4xZjc1Y2I1MDllYTYzNWFiZTIzNzU1MTA3NWEyYTE1
NDI1MmUzYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMzA2LDcgKzMwNiw4IEBAIGlubGluZSBKU0FycmF5KiBhbGxvY2F0ZU5l
d0FycmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTSW1tdXRhYmxlCiAK
IH0gLy8gbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocwogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAKICNkZWZpbmUgU0xPV19QQVRICmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmgKaW5kZXggYjFlOGUyOWI1MDJjNzczMGIxM2I2MzBiYzM5N2JmOTExNjNl
YjM4YS4uMjE2ZDY2ZGM3MThjYjJmYTk1MzZkOTllYjY5ODJlMzhiNmM2ZTQyNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzEsMTQgKzMxLDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUNhY2hlRXJyb3I7CiBjbGFzcyBDYWNo
ZWRCeXRlY29kZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4
ZWNTdGF0ZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBTb3Vy
Y2VDb2RlOwogY2xhc3MgU3ltYm9sOwogY2xhc3MgVk07CiBjbGFzcyBKU0ludGVybmFsUHJvbWlz
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjaGVja1N5bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zb2xlQ2xpZW50LmgKaW5kZXggMTk4ZWZmM2EzNmYyMGMxNzcxNTczNTgyMTQ2
MmYxMzgwZTc1NTExNS4uOTgzOGQ5NTI4M2QwODM3ZjUxNjdmZTkyYjNjZTE0ZTNlYTZhZjZlYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuaApAQCAt
MzQsNyArMzQsOCBAQCBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBD
YWxsRnJhbWU7CiAKIGNsYXNzIENvbnNvbGVDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAppbmRleCA3ZjRjZjdlNDYz
ZmVjOWIzZDU1NjE3NmNjMzUzY2I4YWIwMjBkOGI2Li42YTcyMTMxZjYyNjk3NzZlYjJlYWU5Njhj
YmRhYzYwYWFmMDczZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zb2xlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlT2JqZWN0LmNwcApAQCAtNDgsMzIgKzQ4LDMyIEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVP
ckRlZmF1bHRMYWJlbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAKIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShDb25zb2xlT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Vycm9y
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0xvZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJbmZvKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jRGlyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFj
ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNBc3NlcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNQcm9maWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hv
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVMb2coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNUaW1lU3RhbXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jR3JvdXBFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNT
Y3JlZW5zaG90KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJ
bmZvKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jRGlyWE1MKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFibGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
Q291bnRSZXNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhl
YXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNUaW1lTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0dyb3VwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29y
ZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1NjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3Qg
Q2xhc3NJbmZvIENvbnNvbGVPYmplY3Q6OnNfaW5mbyA9IHsgIkNvbnNvbGUiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKENvbnNvbGVPYmplY3Qp
IH07CiAKQEAgLTEyNiwzMDkgKzEyNiwzMDkgQEAgc3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5n
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwKICAg
ICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBjb25zb2xlTG9nV2l0aExldmVsKEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZUxldmVsIGxl
dmVsKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbnNvbGVMb2dXaXRoTGV2ZWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBn
bG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+bG9n
V2l0aExldmVsKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDAp
LCBsZXZlbCk7CisgICAgY2xpZW50LT5sb2dXaXRoTGV2ZWwoY2FsbEZyYW1lLCBJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApLCBsZXZlbCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkRlYnVn
KTsKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgTWVzc2FnZUxldmVsOjpEZWJ1Zyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpFcnJvcik7CisgICAg
cmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNvbGVM
b2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpMb2cpOworICAgIHJldHVybiBjb25zb2xl
TG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkxvZyk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNJbmZvKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4
ZWMsIE1lc3NhZ2VMZXZlbDo6SW5mbyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6SW5mbyk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNXYXJuKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNXYXJuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6V2FybmluZyk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmNsZWFy
KGV4ZWMpOworICAgIGNsaWVudC0+Y2xlYXIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xp
ZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xl
Q2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmRpcihleGVjLCBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5kaXIoY2FsbEZyYW1l
LCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyWE1MKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNEaXJYTUwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmRpclhN
TChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAg
Y2xpZW50LT5kaXJYTUwoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGFibGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNv
bGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCi0gICAgY2xpZW50LT50YWJsZShleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT50YWJsZShjYWxsRnJhbWUsIEluc3BlY3Rvcjo6
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29u
c29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xl
Q2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25z
b2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnRyYWNlKGV4ZWMsIEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnRyYWNlKGNh
bGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jQXNzZXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxP
YmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGJvb2wgY29uZGl0aW9uID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgY29uZGl0aW9uID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChjb25kaXRp
b24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAg
ICBjbGllbnQtPmFzc2VydGlvbihleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyhleGVjLCAxKSk7CisgICAgY2xpZW50LT5hc3NlcnRpb24oY2FsbEZyYW1lLCBJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDEpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8qIGNs
aWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsKKyAg
ICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xp
ZW50LT5jb3VudChleGVjLCBsYWJlbCk7CisgICAgY2xpZW50LT5jb3VudChjYWxsRnJhbWUsIGxh
YmVsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRS
ZXNldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShleGVjLT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2Jh
bE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZh
bHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JE
ZWZhdWx0TGFiZWxTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+Y291bnRSZXNldChleGVjLCBs
YWJlbCk7CisgICAgY2xpZW50LT5jb3VudFJlc2V0KGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNv
bnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3Qt
PmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVj
LT5hcmd1bWVudENvdW50KCk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOwogICAgIGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJv
ZmlsZShleGVjLCBTdHJpbmcoKSk7CisgICAgICAgIGNsaWVudC0+cHJvZmlsZShjYWxsRnJhbWUs
IFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBjb25zdCBT
dHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnByb2ZpbGUoZXhlYywgdGl0
bGUpOworICAgIGNsaWVudC0+cHJvZmlsZShjYWxsRnJhbWUsIHRpdGxlKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
UHJvZmlsZUVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5j
b25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0
LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhl
Yy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoIWFyZ3NDb3VudCkgewotICAgICAgICBjbGllbnQtPnBy
b2ZpbGVFbmQoZXhlYywgU3RyaW5nKCkpOworICAgICAgICBjbGllbnQtPnByb2ZpbGVFbmQoY2Fs
bEZyYW1lLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5n
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAg
Y29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xpZW50LT5wcm9maWxlRW5k
KGV4ZWMsIHRpdGxlKTsKKyAgICBjbGllbnQtPnByb2ZpbGVFbmQoY2FsbEZyYW1lLCB0aXRsZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25h
cHNob3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGll
bnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xp
ZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0g
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3Qg
YXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKCFhcmdzQ291
bnQpIHsKLSAgICAgICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIFN0cmluZygpKTsK
KyAgICAgICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGNhbGxGcmFtZSwgU3RyaW5nKCkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAot
ICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUo
dmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChleGVjLCB0aXRsZSk7
CisgICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGNhbGxGcmFtZSwgdGl0bGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNU
aW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAg
IGF1dG8qIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVu
dCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7
CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhl
eGVjKTsKKyAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgY2xpZW50LT50aW1lKGV4ZWMsIGxhYmVsKTsKKyAgICBjbGllbnQtPnRpbWUoY2FsbEZy
YW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1RpbWVMb2coRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVMb2coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGllbnQgPSBnbG9i
YWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gbGFiZWwgPSB2
YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9y
RGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRpbWVMb2coZXhlYywgbGFi
ZWwsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAgICBjbGll
bnQtPnRpbWVMb2coY2FsbEZyYW1lLCBsYWJlbCwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1
bWVudHMoY2FsbEZyYW1lLCAxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1RpbWVFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVFbmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGll
bnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8g
bGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwg
PSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRpbWVFbmQo
ZXhlYywgbGFiZWwpOworICAgIGNsaWVudC0+dGltZUVuZChjYWxsRnJhbWUsIGxhYmVsKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNUaW1lU3RhbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xp
ZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGll
bnQtPnRpbWVTdGFtcChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVj
LCAwKSk7CisgICAgY2xpZW50LT50aW1lU3RhbXAoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0
ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVD
bGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVu
dCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNs
aWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cChleGVjLCBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5ncm91cChjYWxsRnJh
bWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNs
aWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFj
bGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
LSAgICBjbGllbnQtPmdyb3VwQ29sbGFwc2VkKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwQ29sbGFwc2VkKGNhbGxGcmFt
ZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNHcm91cEVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQg
PSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+
Z3JvdXBFbmQoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkp
OworICAgIGNsaWVudC0+Z3JvdXBFbmQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jUmVjb3JkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVu
dCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7
CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50
KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnJlY29yZChleGVjLCBJbnNwZWN0b3I6OmNyZWF0
ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5yZWNvcmQoY2FsbEZyYW1l
LCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNSZWNvcmRFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50
ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQt
PnJlY29yZEVuZChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAw
KSk7CisgICAgY2xpZW50LT5yZWNvcmRFbmQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNv
bGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNv
bnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+c2NyZWVuc2hvdChleGVjLCBJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5z
Y3JlZW5zaG90KGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2Fs
bEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmlu
ZGV4IDU5MzhhOTBkODlmOTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQuLjk2NzM1ODUxNGIx
ZDgzMDRlOTJiZGM2OTAzYTRkYzBmYjVlZTQzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTM1LDEwICszNSwxMSBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpT
U2NvcGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGVudW0gY2xhc3MgQ29uc3Ry
dWN0VHlwZSA6IHVuc2lnbmVkIHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjZiOGZlZTA2YTdiY2UyMDA1
NWEzNDk3Nzg0ZGFmMjc5YmYwZGVjZi4uZjBjNWIyMDk5OWRjNGUxMWI1YTA2ZWEyODRiNDUyMGUx
ZTNjNWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCkBAIC00NSw4ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY4LDggKzY5LDggQEAgY29uc3QgQ2xhc3NJ
bmZvIERhdGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5j
dGlvbjo6c19pbmYKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKERh
dGVDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxEYXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0
ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIERhdGVDb25zdHJ1
Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxEYXRlLCBjb25zdHJ1Y3RXaXRo
RGF0ZUNvbnN0cnVjdG9yKQpAQCAtMTUwLDM4ICsxNTEsNDMgQEAgSlNPYmplY3QqIGNvbnN0cnVj
dERhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIG4KICAgICByZXR1cm4gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGRhdGVTdHJ1Y3R1cmUs
IHZhbHVlKTsKIH0KICAgICAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBB
cmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RE
YXRlKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKSwgZXhlYy0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsKKyAgICBB
cmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdERhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCks
IGFyZ3MpKTsKIH0KIAogLy8gRUNNQSAxNS45LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdHM7CiAgICAgbXNUb0dyZWdv
cmlhbkRhdGVUaW1lKHZtLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxs
aXNlY29uZHMoKSwgV1RGOjpMb2NhbFRpbWUsIHRzKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9y
bWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQYXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgU3RyaW5nIGRhdGVTdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVj
KTsKKyAgICBTdHJpbmcgZGF0ZVN0ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihwYXJzZURhdGUoZXhlYywgdm0sIGRhdGVTdHIpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBhcnNlRGF0ZShjYWxsRnJh
bWUsIHZtLCBkYXRlU3RyKSkpKTsKK30KKworSlNWYWx1ZSBkYXRlTm93SW1wbCgpCit7CisgICAg
cmV0dXJuIGpzTnVtYmVyKGpzQ3VycmVudFRpbWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlTm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGpzQ3VycmVudFRpbWUoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKiBleGVjKSAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVVUQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIGRvdWJsZSBtcyA9IG1pbGxpc2Vjb25kc0Zyb21Db21wb25lbnRz
KGV4ZWMsIEFyZ0xpc3QoZXhlYyksIFdURjo6VVRDVGltZSk7CisgICAgZG91YmxlIG1zID0gbWls
bGlzZWNvbmRzRnJvbUNvbXBvbmVudHMoY2FsbEZyYW1lLCBBcmdMaXN0KGNhbGxGcmFtZSksIFdU
Rjo6VVRDVGltZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aW1lQ2xp
cChtcykpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuaAppbmRleCBjMTYyNTBkMzk5NzIxMzFkMzI5MzBjZDliNGYwMzE2ZDNkMzUwN2Y0
Li5iZWM0MGE1YzMwOGY4Mjk5NDdiMjY1ZGY4NDc0MzEyYTM5NTIyODk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaApAQCAtNTQsNyArNTQs
NiBAQCBjbGFzcyBEYXRlQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CiB9OwogCiBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgbmV3VGFyZ2V0LCBjb25zdCBBcmdMaXN0Jik7Ci0KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKK0pTVmFsdWUgZGF0ZU5vd0lt
cGwoKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDE4NTIyZDEwMDQ0ZGUxM2E1MDI5YzY1NzYz
NDkyMDUzYzlhYmM5NzMuLjkxNzcxNmQxZTE2ODA4ODk3MjVlMzU1YTIzN2Y1MWVmMDY5ZGJkZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CkBAIC03MSw1MCArNzEsNTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXREYXkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRo
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0U2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZ
ZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1NldERhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEhvdXJzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNv
bmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0TWludXRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldE1vbnRoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRpbWUoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVs
bFllYXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRVVENIb3VycyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250
aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldFVUQ1NlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2Nh
bGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9UaW1l
U3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9VVENTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldERheShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhv
dXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1p
bnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxs
WWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01p
bGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRlcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEZ1bGxZ
ZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0VVRDRGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFllYXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRo
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9j
YWxlVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2woSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1RvVVRDU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jVG9KU09OKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNTI1LDMx
ICs1MjUsMzEgQEAgdm9pZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIC8vIEZ1bmN0aW9ucwogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNV
VENWYXJpYW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhlYywg
RGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50KTsKKyAgICByZXR1cm4gZm9y
bWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFz
VVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1RvVVRDU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSB0cnVlOwotICAg
IHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRp
bWUsIGFzVVRDVmFyaWFudCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZy
YW1lLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lT
T1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogICAgIAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgRGF0ZSJfcykpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAi
SW52YWxpZCBEYXRlIl9zKSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7Cisg
ICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVP
YmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcodm0sIFN0cmluZygiSW52YWxpZCBEYXRlIl9zKSkpOwogICAgIC8vIE1heGltdW0gYW1vdW50
IG9mIHNwYWNlIHdlIG5lZWQgaW4gYnVmZmVyOiA3IChtYXguIGRpZ2l0cyBpbiB5ZWFyKSArIDIg
KiA1ICgyIGNoYXJhY3RlcnMgZWFjaCBmb3IgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNv
bmQpICsgNCAoLiArIDMgZGlnaXRzIGZvciBtaWxsaXNlY29uZHMpCkBAIC01NzMsMzA2ICs1NzMs
MzA2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlciwgY2hhcmFjdGVyc1dyaXR0ZW4pKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNUb0RhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBjb25zdCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBmb3JtYXRl
RGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZSwgYXNVVENWYXJpYW50KTsKKyAg
ICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0RGF0
ZSwgYXNVVENWYXJpYW50KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jVG9UaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50ID0gZmFs
c2U7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhlYywgRGF0ZVRpbWVGb3JtYXRU
aW1lLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGNhbGxG
cmFtZSwgRGF0ZVRpbWVGb3JtYXRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMs
IHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZUFu
ZFRpbWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoY2Fs
bEZyYW1lLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExvY2Fs
ZURhdGVBbmRUaW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRl
SW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2Jq
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhp
c0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoY2FsbEZyYW1lLCB0aGlzRGF0ZU9iaiwgdGhp
c0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
TG9jYWxlVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0Rh
dGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVE
YXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9j
YWxlVGltZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShj
YWxsRnJhbWUsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9j
YWxlVGltZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNUb1ByaW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9Qcmlt
aXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1i
b2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpOwogCi0g
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBl
eHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3Qg
YXJndW1lbnQuIik7CiAKLSAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJlZmVycmVk
UHJpbWl0aXZlVHlwZShleGVjLCBoaW50VmFsdWUpOworICAgIEpTVmFsdWUgaGludFZhbHVlID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIHR5cGUgPSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoY2FsbEZyYW1lLCBoaW50VmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgaWYgKHR5cGUgPT0gTm9QcmVmZXJlbmNlKQogICAgICAgICB0eXBlID0gUHJlZmVyU3RyaW5n
OwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09i
amVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShleGVjLCB0eXBlKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPm9yZGluYXJ5VG9Qcmlt
aXRpdmUoY2FsbEZyYW1lLCB0eXBlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RnVsbFllYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0g
anNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0
ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENG
dWxsWWVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRoKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1p
Y0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAK
LSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNh
bGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8
RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0
ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNh
bGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0
YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3Jl
Z29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlh
bkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5E
YXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAg
IGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5E
YXRlVGltZS0+bW9udGhEYXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2Uq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRl
VGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0
ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPm1vbnRoRGF5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0RGF5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4
ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29y
aWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+d2Vl
a0RheSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENEYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8q
IHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVn
b3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsK
KyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlh
bkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPndlZWtE
YXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRIb3VycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhp
c0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlh
bkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5n
cmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+aG91cigpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFVUQ0hvdXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9i
aiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3Qg
R3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9
IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUg
PSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRh
dGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5taW51dGUoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVU
Q01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0g
anNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPm1pbnV0ZSgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
U2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRl
VGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENT
ZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpz
RHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRh
dGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5zZWNvbmQoKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0TWlsbGlTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKTsKICAgICBpZiAoc3RkOjppc25hbihtaWxsaSkpCkBAIC04ODMsMTQgKzg4MywxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29u
ZHMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
bXMpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgZG91YmxlIG1pbGxpID0g
dGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKHN0ZDo6aXNuYW4obWlsbGkp
KQpAQCAtOTAxLDMxICs5MDEsMzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1zKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zm
c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlz
RGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
KGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKC1ncmVnb3JpYW5EYXRlVGltZS0+dXRjT2Zmc2V0KCkgLyBtaW51dGVzUGVySG91cikp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1l
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldFRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2Jq
ID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBkb3VibGUgbWlsbGkgPSB0aW1lQ2xpcChjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5h
bE51bWJlcihtaWxsaSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtaWxs
aSkpOwpAQCAtMTAxNCw4NiArMTAxNCw4NiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3
VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRN
aWxsaVNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMSwgV1RGOjpMb2NhbFRpbWUp
OworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDEsIFdURjo6
TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21U
aW1lQXJncyhleGVjLCAxLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21UaW1lQXJncyhjYWxsRnJhbWUsIDEsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXRO
ZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAyLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJu
IHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMiwgV1RGOjpMb2NhbFRpbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNv
bmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1NldFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMiwgV1RGOjpV
VENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAy
LCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhl
YywgMywgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJn
cyhjYWxsRnJhbWUsIDMsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaW51dGVzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5l
d1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDMsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNl
dE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMywgV1RGOjpVVENUaW1lKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0
SG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgNCwgV1RGOjpMb2NhbFRpbWUpOworICAg
IHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDQsIFdURjo6TG9jYWxU
aW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0
VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0VVRDSG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgNCwgV1RG
OjpVVENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1l
LCA0LCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXREYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywg
MSwgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhj
YWxsRnJhbWUsIDEsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJv
bURhdGVBcmdzKGV4ZWMsIDEsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVl
RnJvbURhdGVBcmdzKGNhbGxGcmFtZSwgMSwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3
VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMiwgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6TG9jYWxUaW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMiwgV1RGOjpVVENUaW1l
KTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAyLCBXVEY6
OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXRGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAz
LCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNh
bGxGcmFtZSwgMywgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdW
YWx1ZUZyb21EYXRlQXJncyhleGVjLCAzLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXRO
ZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDMsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVh
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFt
aWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpIHsgCisgICAgaWYgKCFjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSkgeyAKICAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsTnVt
YmVyKFBOYU4pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAg
IH0KQEAgLTExMDksMTEgKzExMDksMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZWxzZSB7CiAgICAgICAg
IGRvdWJsZSBzZWNzID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7CiAgICAgICAgIG1zID0g
bWlsbGkgLSBzZWNzICogbXNQZXJTZWNvbmQ7Ci0gICAgICAgIGlmIChjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSogb3RoZXIgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYykpCisg
ICAgICAgIGlmIChjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogb3RoZXIgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKSkKICAgICAgICAgICAgIGdyZWdvcmlhbkRhdGVU
aW1lLmNvcHlGcm9tKCpvdGhlcik7CiAgICAgfQogCi0gICAgZG91YmxlIHllYXIgPSBleGVjLT5h
cmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKKyAgICBkb3VibGUgeWVhciA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUoeWVhcikpIHsKICAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVy
bmFsTnVtYmVyKFBOYU4pOwpAQCAtMTEyNywxNiArMTEyNywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRl
T2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5n
cmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1l
KTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKCkpOwogCkBAIC0xMTQ0LDI4ICsxMTQ0LDI4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIo
KSAtIDE5MDApKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1RvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBK
U09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9IG9i
amVjdC0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyTnVtYmVyKTsKKyAgICBKU1ZhbHVlIHRpbWVW
YWx1ZSA9IG9iamVjdC0+dG9QcmltaXRpdmUoY2FsbEZyYW1lLCBQcmVmZXJOdW1iZXIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICh0
aW1lVmFsdWUuaXNOdW1iZXIoKSAmJiAhc3RkOjppc2Zpbml0ZSh0aW1lVmFsdWUuYXNOdW1iZXIo
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0gICAgSlNW
YWx1ZSB0b0lTT1ZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9J
U09TdHJpbmcpOworICAgIEpTVmFsdWUgdG9JU09WYWx1ZSA9IG9iamVjdC0+Z2V0KGNhbGxGcmFt
ZSwgdm0ucHJvcGVydHlOYW1lcy0+dG9JU09TdHJpbmcpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9JU09WYWx1ZSwgY2FsbERh
dGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5j
dGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfcyk7CiAKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNhbGwoZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0
YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2Fs
bEZyYW1lLCBhc09iamVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3Qs
ICp2bS5lbXB0eUxpc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAppbmRleCAwMGJlMjY2
ZjVjMzhhNjM1NTI2ZWI0NjE5MzliNjUwYWY3YmY5ZDczLi5jYWM1YWI1ZWRiNmMyNDQ3ZDEzNWNi
YTdiZjdhNjQ2MTRjYTExZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5oCkBAIC01Miw2ICs1Miw2IEBAIGNsYXNzIERhdGVQcm90b3R5cGUgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAK
aW5kZXggYjMwNDY2MDU5YWU2NTUzZDdkZjViYmYxOTdlY2ViMDYyZWUyYzJhMC4uNWNmYmZiZmNi
ZGY2MGViN2U2ZDcxZmVhNjhlZDVlMjNmYzk4YzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1
bmN0aW9ucy5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Ym9vbCBpc0NvbnN0cnVjdG9yID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNDb25zdHJ1
Y3RvcihleGVjLT52bSgpKTsKKyAgICBib29sIGlzQ29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFT
Y3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaAppbmRleCA4MDhkN2Y4ODNiZmY0OWI1OGNmZGJl
NWQ3MmMxNDYxMTUzYjdiMmZjLi5iNmExY2VjN2NiMTNhMmFiNjlkZDhkMzI4ZjNiMTg4MzY1ZDIz
MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCkBAIC0yOSw2ICsyOSw2IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lz
Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVz
U3BlY0lzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCBjMDRi
YzU1Y2UzY2E1NGFiOTNkZjk5NDNiMzZlNjQyMWZlMjJmMjY0Li43YjhkNTIxYzJiOTExNmZmMjBm
MGFiOGUwMTExNTNhY2EzZjU2MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKQEAgLTMzLDEyICszMywxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0
YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFN0cnVjdHVyZTsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgogSlNP
YmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFu
Y2U6OlNvdXJjZUFwcGVuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGE2OTExNmI0NjQ2NjU3Yzg4N2NiNWQyODlj
NTQyZTg3ODJmMGJlZS4uM2VjNjM3NzZjOTA5MDA1MmQ2OTZhY2RhOTY5ZTE5MDAxNTY3NjRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTMzLDggKzMzLDggQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEVycm9yQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gRXJyb3JDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEVycm9yQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEVycm9yQ29uc3RydWN0b3I6OkVy
cm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEVycm9yQ29uc3RydWN0b3IsIGNvbnN0cnVj
dEVycm9yQ29uc3RydWN0b3IpCkBAIC00NywyNiArNDcsMjYgQEAgdm9pZCBFcnJvckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlw
ZSkKICAgICAvLyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBlcnJvclBy
b3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCh2bSktPnN0YWNrVHJh
Y2VMaW1pdCgpLnZhbHVlT3IoT3B0aW9uczo6ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJh
Y2VMaW1pdCwganNOdW1iZXIoZ2xvYmFsT2JqZWN0KCktPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVl
T3IoT3B0aW9uczo6ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4z
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+ZXJyb3JTdHJ1Y3R1cmUoKSk7
CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3Qt
PmVycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwg
bnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVy
cm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT5lcnJvclN0cnVjdHVyZSgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVy
cm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAg
ICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJlKCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBl
cnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9
CiAKIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAg
ICAgICAgICAgICBkb3VibGUgZWZmZWN0aXZlTGltaXQgPSB2YWx1ZS5hc051bWJlcigpOwogICAg
ICAgICAgICAgZWZmZWN0aXZlTGltaXQgPSBzdGQ6Om1heCgwLiwgZWZmZWN0aXZlTGltaXQpOwog
ICAgICAgICAgICAgZWZmZWN0aXZlTGltaXQgPSBzdGQ6Om1pbihlZmZlY3RpdmVMaW1pdCwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsK
LSAgICAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPnNldFN0YWNrVHJhY2VM
aW1pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWZmZWN0aXZlTGltaXQpKTsKKyAgICAgICAgICAg
IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVmZmVjdGl2ZUxpbWl0KSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3Rh
Y2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKQEAgLTkzLDcg
KzkzLDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW0KICAgICBFcnJvckNvbnN0cnVjdG9yKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0KQotICAgICAg
ICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJh
Y2VMaW1pdChXVEY6Om51bGxvcHQpOwogCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggOTIyY2Y0YzM2Y2I2YWI1
OTBjOThlOWY3MDE4MGFkMzY1MDg5NmFmYi4uNjFjNGY0MWEwZmEzODAzYzE0ZDBmYzRmY2FkMWYw
MDA3OTEyMGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEVycm9yUHJvdG90eXBlKTsKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC03
MSwyNyArNzEsMjcgQEAgdm9pZCBFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BLTI2MiA1LjEs
IDE1LjExLjQuNAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCiAgICAgLy8gR3VhcmQg
YWdhaW5zdCByZWN1cnNpb24hCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4
ZWMsIHRoaXNPYmopOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJh
bWUsIHRoaXNPYmopOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8
IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVy
blZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKICAgICAvLyAzLiBMZXQgbmFtZSBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBhcmd1bWVudCAibmFtZSIuCi0gICAgSlNWYWx1ZSBuYW1lID0gdGhpc09iai0+Z2V0KGV4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOworICAgIEpTVmFsdWUgbmFtZSA9IHRoaXNPYmotPmdl
dChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1
bmRlZmluZWQsIHRoZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0
cmluZyhuYW1lKS4KQEAgLTk5LDEyICs5OSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChuYW1l
LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG5hbWVTdHJpbmcgPSAiRXJyb3IiX3M7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAg
ICBuYW1lU3RyaW5nID0gbmFtZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICAv
LyA1LiBMZXQgbXNnIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRdXSBpbnRlcm5h
bCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50ICJtZXNzYWdlIi4KLSAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSB0aGlzT2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZSk7CisgICAg
SlNWYWx1ZSBtZXNzYWdlID0gdGhpc09iai0+Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1l
cy0+bWVzc2FnZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAvLyAoc2ljKQpAQCAtMTE0LDcgKzExNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbWVzc2FnZVN0cmluZyA9IFN0
cmluZygpOwogICAgIGVsc2UgewotICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1dU
RlN0cmluZyhleGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lLmlzU3RyaW5nKCkgPyBuYW1lIDoganNT
dHJpbmcodm0sIG5hbWVTdHJpbmcpKTsKIAogICAgIC8vIDEwLiBSZXR1cm4gdGhlIHJlc3VsdCBv
ZiBjb25jYXRlbmF0aW5nIG5hbWUsICI6IiwgYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyLCBhbmQg
bXNnLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgbmFtZVN0cmluZywgIjogIiwgbWVzc2FnZVN0cmluZykp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgbmFtZVN0cmluZywgIjogIiwgbWVzc2FnZVN0cmlu
ZykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25GdXp6LmgKaW5kZXggYzY5NGI1NzY2YzQwZTEyMDliNzQ2NzA2ZmI3
MjYyOGI3NzRlMjFiMC4uZDE4ZjlhNzQ1NDY3NGNmN2UxMDQ1ZmUzNDYwOTY5N2E0N2VlMTdmOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouaApAQCAt
MjksOCArMjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgVGhyb3dTY29wZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogLy8gQ2FsbCB0aGlzIG9ubHkgaWYgeW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6
emluZyBpcyBlbmFibGVkLgogdm9pZCBkb0V4Y2VwdGlvbkZ1enppbmcoRXhlY1N0YXRlKiwgVGhy
b3dTY29wZSYsIGNvbnN0IGNoYXIqIHdoZXJlLCBjb25zdCB2b2lkKiByZXR1cm5QQyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGQ4YmNjY2RhOGJlZDY5NzAzZWYyMDBmYWRmNWNiNmRiZTAwYzU2NzYuLjZjZmM0
YmVlMzA0NmZmODkxZTM2NzE0ZDlkYjcyNzJmMDQ5NGVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOCwx
NyArMzgsMTcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEZ1bmN0
aW9uQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52
bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgZXhlYy0+bmV3
VGFyZ2V0KCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBh
cmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4xIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvciBD
YWxsZWQgYXMgYSBGdW5jdGlvbgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBh
cmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24o
ZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgYXJncykpOwogfQogCiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODksNyArMTg5
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCiBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4g
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCB2bS5wcm9wZXJ0eU5h
bWVzLT5hbm9ueW1vdXMsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpLCBTdHJpbmcoKSwgVGV4
dFBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCmluZGV4IDk2MTljMDBmMTIyNDk4ZDAxNmJiZGRlMDk5NzNiZWM1YWE0MzVlYjIuLjI1MjYw
ZDk5MzY5Yjk0NTIwOThmMDMwMDNjNGQ1ZDZhNjQ1ZmM0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTM3LDEwICsz
NywxMCBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRnVuY3Rpb25Q
cm90b3R5cGUpOwogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gRUNNQSAxNS4zLjQKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVj
U3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9u
UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNzYsMTYgKzc2LDE2IEBAIHZvaWQg
RnVuY3Rpb25Qcm90b3R5cGU6OmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMsIGVycm9yR2V0dGVyU2V0
dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSh2bSksICIoKSB7XG4gICAg
W25hdGl2ZSBjb2RlXVxufSIpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1
bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
IikpKTsKIAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlv
bi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0NsYXNzKCkpCkBA
IC0xMzQsMjEgKzEzNCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBTdHJpbmdWaWV3IHNv
dXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAogICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCiAgICAgICAgICAgICBl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgp
Lmxlbmd0aCgpKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rp
b24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCBmdW5j
dGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CiAgICAgfQogCiAgICAg
aWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRo
aXNWYWx1ZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5u
YW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
Y2FsbEZyYW1lLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IikpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAg
ICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24odm0pKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiZnVuY3Rpb24gIiwgb2JqZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4g
ICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwg
ImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lLCAiKCkge1xuICAg
IFtuYXRpdmUgY29kZV1cbn0iKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGYzZmVjYjNkZTM0YmEzOTk2MDQwZDJiNDg4MzQ0NWJiNWEyZWUwNDguLjY0NjI4
NmQ2NDNjMzYxMjlkYzMxZGVhMDI5MGQ1MDM4ZDU4MjliYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFz
c0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9y
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgp
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKKyAgICBBcmdM
aXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFs
RnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBh
cmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciwgZXhlYy0+bmV3VGFyZ2V0
KCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciwgY2FsbEZyYW1lLT5uZXdUYXJnZXQo
KSkpOwogfQogCiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggOWFkMTIwY2RmNDc5Yzk4M2U5M2Jk
Y2QyNDBmYjU3MDY0OThkNjdmNy4uMDJhM2I1Yjg3ODgyNDc5MmYyZmRhNDA5NmU2YzliMTFlNWZh
YmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAt
MjksNyArMjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNJbmRleCh1aW50MzJfdCBpbmRleCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwCmluZGV4IDY1ZTlhMTc3MTk5YzkxOTRkMDBkMGU0MjkyY2I0NDE5ODQ2NGU1Y2Iu
LjVlMjQ5OWM5M2VjOTUwMGMxMzNlNzZkN2E1NzQwNzkzNGY3NjFhN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3RMb2coRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB9CiAKQEAgLTgxLDEyICs4MSwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdDo6ZGlzYWJsZShWTSYgdm0pCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RMb2co
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3RMb2coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAg
U3RyaW5nIHZhbHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgdGFy
Z2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJpbmcgdmFsdWUgPSB0YXJnZXQu
dG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBkYXRhTG9nKHZhbHVlLCAiXG4iKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCAyMzhlNTQzMzNlYWRjY2Jl
Zjg1YjNlYjYwNDAzZDU3YjBiZjM4OWIxLi4wMDk4MjBjMmQ3Mzk4NjlmODI2MDNjOWM5NDQwZWI4
Yzc3YjNhMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRl
cm5hbEZ1bmN0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZUZ1bmN0aW9u
CiAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQogICAgICwgbV9mdW5j
dGlvbkZvckNhbGwoZnVuY3Rpb25Gb3JDYWxsKQogICAgICwgbV9mdW5jdGlvbkZvckNvbnN0cnVj
dChmdW5jdGlvbkZvckNvbnN0cnVjdCA/IGZ1bmN0aW9uRm9yQ29uc3RydWN0IDogY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IpCisgICAgLCBtX2dsb2JhbE9iamVjdCh2bSwgdGhpcywgc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKIHsKICAgICAvLyBleGVjLT52bSgpIHdhbnRzIGNhbGxl
ZXMgdG8gbm90IGJlIGxhcmdlIGFsbG9jYXRpb25zLgogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0xh
cmdlQWxsb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAppbmRleCBhYmYwMWNjYjI3YjI2YmE3ZjYzYjRlM2I5OGUyNjliYjM2
OTZmODIwLi5hYTJlOTVhOGMyMzlmZjkzMmJiNmIwYmVkMDYxMzE1NjY0ZjA1MjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC03
Niw2ICs3NiwxMyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0
aW9uLCBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mR2xvYmFsT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSW50ZXJuYWxGdW5jdGlvbiwgbV9nbG9iYWxPYmplY3QpOworICAgIH0KKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9i
amVjdC5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJu
YWxGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ2Fs
bCwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOwogCkBAIC05MSw2ICs5OCw3
IEBAIGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDYWxsOwogICAgIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3Q7CiAgICAgV3JpdGVCYXJyaWVy
PEpTU3RyaW5nPiBtX29yaWdpbmFsTmFtZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsKIAogQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuZXdUYXJnZXQsIFN0cnVjdHVyZSogYmFzZUNsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDQzZjQ3OGUxOTg0Y2RkZWJmZmQ4YmE5MmM4NWJlY2U3MzAwMDFhN2UuLjkwNTllNmIzN2E1
YTMxMmYyMjM3MTc0MDBiYjA3MmE2MWE0OTc3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTQ5LDggKzQ5LDggQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3Vw
cG9ydGVkTG9jYWxlc08KIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZjb2xsYXRvckNvbnN0
cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yQ29u
c3RydWN0b3IpIH07CiAKQEAgLTg1LDMzICs4NSwzMyBAQCB2b2lkIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxDb2xsYXRvclByb3RvdHlwZSogY29s
bAogICAgIGNvbGxhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAx
MC4xLjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4w
KQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUg
dGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJn
ZXQuCiAgICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVj
dG9yKG5ld1RhcmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCiAgICAgLy8gMy4gUmV0dXJuSWZB
YnJ1cHQoY29sbGF0b3IpLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwg
anNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpLT5jb2xs
YXRvclN0cnVjdHVyZSh2bSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5l
d1RhcmdldCgpLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpLT5jb2xsYXRvclN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEludGxDb2xsYXRvciogY29sbGF0b3Ig
PSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoY29sbGF0
b3IpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9j
YWxlcywgb3B0aW9ucykuCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGNvbGxhdG9yLT5pbml0
aWFsaXplQ29sbGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVu
dCgxKSk7CisgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxMC4xLjIg
SW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAg
IC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFj
dGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAg
ICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5j
dGlvbi4KIAotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAgIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+
anNDYWxsZWUoKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gRklYTUU6IENvbGxhdG9yIGRv
ZXMgbm90IGdldCB0aGUgd29ya2Fyb3VuZCBmb3IgRUNNQS00MDIgMS4wIGNvbXBhdGliaWxpdHku
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQpA
QCAtMTIyLDI1ICsxMjIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqIHN0YXRlKQogICAgIEFTU0VSVChjb2xsYXRvcik7
CiAKICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVz
LCBvcHRpb25zKS4KLSAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgIGNvbGxhdG9yLT5pbml0
aWFsaXplQ29sbGF0b3IoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0
b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8v
IDEwLjIuMiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlv
bnNdKSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUg
Q2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1
ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKICAg
ICAvLyAyLiBSZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBT
dXBwb3J0ZWRMb2NhbGVzKCVDb2xsYXRvciUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3Rl
ZExvY2FsZXMsIG9wdGlvbnMpLgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgZ2xvYmFs
T2JqZWN0LT5pbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCksIHJlcXVlc3RlZExvY2FsZXMs
IHN0YXRlLT5hcmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+
aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
CmluZGV4IDcwZjExYWUyMTNhN2ZmOTU4M2UzYjcxYmU1Mzc4YzM5ZTE1NDhiYjAuLjNlZDliZWI4
NzMzMWRjZjc0OThkMTUwZTA3MzJkNzc1MzhiYjRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSog
Y29sbGF0b3JTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0p
LT5jb2xsYXRvclN0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVy
ZShWTSYpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5jb2xsYXRvclN0cnVjdHVyZSgp
OyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENvbGxh
dG9yUHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjZGY0ODZiNTg1NDUwOTc5NWIwMzc4
MjY2NmQxMjViZmU3MWY1ZmQ1Li41YTU0Y2E1ODQ2ODVlMmI2MGMxNDQyY2MzNmM3MjliZGY1MzA4
NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3Rv
dHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVu
Y1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAg
LTc4LDQ1ICs3OCw0NSBAQCB2b2lkIEludGxDb2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJPYmplY3QiKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0Nv
bXBhcmUoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTAuMy40IENvbGxhdG9yIENvbXBhcmUgRnVuY3Rpb25z
IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVl
LgogICAgIC8vIDIuIEFzc2VydDogVHlwZShjb2xsYXRvcikgaXMgT2JqZWN0IGFuZCBjb2xsYXRv
ciBoYXMgYW4gW1tpbml0aWFsaXplZENvbGxhdG9yXV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSBpcyB0cnVlLgotICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0Nhc3Q8SW50bENvbGxh
dG9yKj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0g
anNDYXN0PEludGxDb2xsYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8g
My4gSWYgeCBpcyBub3QgcHJvdmlkZWQsIGxldCB4IGJlIHVuZGVmaW5lZC4KICAgICAvLyA0LiBJ
ZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgogICAgIC8vIDUuIExldCBY
IGJlIFRvU3RyaW5nKHgpLgotICAgIEpTU3RyaW5nKiB4ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKHN0YXRlKTsKKyAgICBKU1N0cmluZyogeCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDcu
IExldCBZIGJlIFRvU3RyaW5nKHkpLgotICAgIEpTU3RyaW5nKiB5ID0gc3RhdGUtPmFyZ3VtZW50
KDEpLnRvU3RyaW5nKHN0YXRlKTsKKyAgICBKU1N0cmluZyogeSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICAvLyA4LiBSZXR1cm5JZkFicnVwdChZKS4K
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IC8vIDkuIFJldHVybiBDb21wYXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCi0gICAgYXV0byB4
Vmlld1dpdGhTdHJpbmcgPSB4LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoc3RhdGUpOworICAg
IGF1dG8geFZpZXdXaXRoU3RyaW5nID0geC0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgYXV0byB5Vmlld1dpdGhTdHJpbmcgPSB5LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmco
c3RhdGUpOworICAgIGF1dG8geVZpZXdXaXRoU3RyaW5nID0geS0+dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKCpzdGF0ZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcs
IHlWaWV3V2l0aFN0cmluZy52aWV3KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqY2FsbEZyYW1lLCB4Vmll
d1dpdGhTdHJpbmcudmlldywgeVZpZXdXaXRoU3RyaW5nLnZpZXcpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29t
cGFyZSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxh
dG9yIG9iamVjdC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJ
bnRsQ29sbGF0b3IqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3Iq
IGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgQ29sbGF0b3IiX3MpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJl
ID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgpOwogICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91
bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLApAQCAtMTI3LDcgKzEyNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVj
U3RhdGUqIHN0YXRlCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29tcGFyZSJfcywgSW50bENvbGxhdG9y
RnVuY0NvbXBhcmUsIE5vSW50cmluc2ljKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91
bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kQ29tcGFy
ZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGNvbGxhdG9yLCBudWxscHRyLCAyLCAiY29tcGFyZSJfcyk7CisgICAgICAgIGJv
dW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgImNvbXBhcmUiX3Mp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAgICAg
ICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5kQ29tcGFyZSk7CkBAIC0xMzYs
MTcgKzEzNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYm91bmRDb21wYXJlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5
bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiX3MpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZl
ZE9wdGlvbnMoKnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKmNhbGxGcmFtZSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjU0
ZWNiMGNiMGVjY2E2NGMzYWZiOGE2ZTIyZGI1NDZhYTMzNWI5MS4uN2E0YjA3NzBlNDgxMzI5MmU2
MmFlNDZmYzkxYTRlZWM0N2U5OTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3Vw
cG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAt
NjksOCArNjksOCBAQCBTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFs
RnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0
ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRp
bWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQsIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCkKQEAg
LTg1LDYzICs4NSw2MiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFBybwogICAgIGRhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAx
Mi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00
MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJn
ZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBO
ZXdUYXJnZXQuCiAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90eXBlJSkuCiAg
ICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3Rh
dGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3Jt
YXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NF
UlQoZGF0ZVRpbWVGb3JtYXQpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCiAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgZGF0ZVRp
bWVGb3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEyLjEuMiBJ
bnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjAp
CiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0
aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1Rhcmdl
dC4KICAgICAvLyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLgogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxlZSA9
IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgp
KTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAog
ICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVD
TUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yPEludGxEYXRlVGltZUZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGNhbGxl
ZSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdElu
dGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRl
VGltZUZvcm1hdD4oKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBb
Jl0gKFZNJiB2bSkgewogICAgICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5h
cnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUlKS4KICAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgogICAg
ICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGUodm0sIGNhbGxlZS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAg
ICAgICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
LSAgICAgICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICAgICAgZGF0ZVRp
bWVGb3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICAgICAgcmV0dXJuIGRh
dGVUaW1lRm9ybWF0OwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAy
LjApCiAKICAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVGb3JtYXQl
LltbYXZhaWxhYmxlTG9jYWxlc11dLgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBjb25zdCBIYXNoU2V0
PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGdsb2JhbE9iamVjdC0+aW50bERhdGVUaW1lRm9y
bWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCiAgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMg
YmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KLSAgICBWZWN0b3I8U3RyaW5nPiBy
ZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAv
LyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBvcHRpb25zKS4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVz
dGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKmNhbGxGcmFtZSwgYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAppbmRl
eCBjMmE4ZjVhMmRmZjc0NTM4MTU3Y2NjMjAxNGY2YjhmYTI1MzQzOTlhLi4wN2UwNzgwMGVhZGU2
MmUxODA2NDBlMmI2MDM2YzEyY2MyYjE0NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1
cm4gZ2xvYmFsT2JqZWN0KHZtKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0
cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9i
YWxPYmplY3QoKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNzE1ODU3YjhhNTk4MzlmNDY4ZmI0Yjc2
NDFjNjBmYjYzMjBlN2ZmOS4uM2E4ZjAxZDAyOWE4NWE0ZWQwYTZmMTdiMDdmZDIzNWU0ZmFlNWI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC00MSwxMSArNDEsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2lmIEpTQ19JQ1VfSEFT
X1VGSUVMRFBPU0lURVIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRp
Zgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC05Miw0
OCArOTIsNDggQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3Ry
aW5nKHZtLCAiT2JqZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShFeGVjU3RhdGUqIHN0
YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9y
bWF0RnVuY0Zvcm1hdERhdGVUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgLy8gMTIuMS43IERhdGVUaW1lIEZvcm1hdCBGdW5jdGlvbnMgKEVDTUEt
NDAyKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdGRh
dGV0aW1lCiAKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0
ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxEYXRlVGltZUZvcm1h
dCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogCi0gICAgSlNWYWx1ZSBkYXRlID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgZG91YmxlIHZhbHVlOwog
CiAgICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZGF0ZU5vdyhzdGF0ZSkpLnRvTnVtYmVyKHN0YXRlKTsKKyAgICAgICAgdmFsdWUgPSBk
YXRlTm93SW1wbCgpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHZh
bHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIHZhbHVl
ID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdCgq
c3RhdGUsIHZhbHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KCpjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJl
IHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRm
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERh
dGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklY
TUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4w
IGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFt
ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0s
IHZhbHVlKTsKICAgICB9CiAKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAgIGlm
ICghZHRmKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZv
cm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0
ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBk
dGYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRl
cm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwKQEAg
LTE0Myw3ICsxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqCiAgICAgICAgIC8vIGIuIFRo
ZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5vdGU6IEbigJlzIGxlbmd0
aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCiAgICAgICAgIEpTRnVuY3Rpb24qIHRh
cmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiZm9y
bWF0Il9zLCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2lj
KTsKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlz
IHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0ciwgMSwg
ImZvcm1hdCJfcyk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0
ciwgMSwgImZvcm1hdCJfcyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwpAQCAt
MTUzLDUyICsxNTMsNTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKgogfQogCiAjaWYgSlNDX0lD
VV9IQVNfVUZJRUxEUE9TSVRFUgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gMTUuNCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRU
b1BhcnRzIChFQ01BLTQwMiA0LjApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
NDAyLyNzZWMtSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cwogCi0g
ICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVU
aW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0ZVRpbWVGb3Jt
YXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGlt
ZUZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKLSAgICBKU1ZhbHVlIGRhdGUgPSBzdGF0ZS0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBkb3VibGUgdmFsdWU7CiAKICAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KHN0YXRlKSkudG9OdW1iZXIoc3RhdGUp
OworICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoc3Rh
dGUpKTsKKyAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoY2FsbEZy
YW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQt
PmZvcm1hdFRvUGFydHMoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuNSBJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIg
Mi4wKQotICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIElu
dGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRl
VGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1F
OiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBj
YWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KSB7Ci0gICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJh
bWUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQ
cml2YXRlTmFtZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRs
RGF0ZVRpbWVGb3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGlmICghZGF0ZVRpbWVG
b3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERh
dGVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9u
cygqc3RhdGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDg1Y2Q2NDNk
NWU2Mzk4MDEyOTkwYjlhYjhlNDRhMWQ3ZDA1ZjZlNzEuLjlkZThkNWVlOGZiZmEyNzFjYmJhZmNj
YTEyYWJkZjBkNTJkODYyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09m
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjksOCArNjksOCBAQCBT
dHJ1Y3R1cmUqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJG
b3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IElu
dGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxOdW1iZXJGb3JtYXQsIGNvbnN0
cnVjdEludGxOdW1iZXJGb3JtYXQpCkBAIC04NSw2MyArODUsNjIgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJlckZvcm1h
dFByb3RvdHkKICAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4
ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBv
cHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVm
aW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBs
ZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJl
IE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFBy
b3RvdHlwZSUpLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUo
dm0pKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganND
YXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSkt
Pm51bWJlckZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1h
dCA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQo
bnVtYmVyRm9ybWF0KTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0
KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCiAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJG
b3JtYXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50
bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2Nh
bGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQg
aXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0
LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBpcyBh
bHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxlZSA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3Zp
ZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJv
dW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxOdW1iZXJGb3JtYXQ+KCpzdGF0ZSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUlu
dGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PigqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CiAgICAgICAgIC8vIDIuIExldCBudW1i
ZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVt
YmVyRm9ybWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJl
ckZvcm1hdCkuCiAgICAgICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgY2FsbGVlLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUodm0p
KTsKICAgICAgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CiAKICAgICAgICAgLy8gNC4gUmV0dXJu
IEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
LSAgICAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICBudW1iZXJGb3Jt
YXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgICAgIHJldHVybiBudW1iZXJGb3Jt
YXQ7CiAgICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIC8vIDExLjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEu
IExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxl
c11dLgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anNDYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxl
TG9jYWxlcyA9IGdsb2JhbE9iamVjdC0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMo
KTsKIAogICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2Fs
ZUxpc3QobG9jYWxlcykuCi0gICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNh
bm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRl
ZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9j
YWxlcygqc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5h
cmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdXBwb3J0ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVl
c3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAppbmRleCBhNDk5ZDNmZTZhNzE1NGNjNjNiZmM1
ZmM0MzE4ZmIyMWI2ZDAxYjMwLi4wM2FiZWJhZWM0MjFhZDdhNzgwYjlkM2U4MmZmZmZhMWRlOTli
YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVj
dHVyZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPm51bWJlckZvcm1h
dFN0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoVk0m
KSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCk7
IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDU3MDljOTIyYjg1
YTdlMzgyN2RiNzU3MjVkZWE3OWY5NmI0YWY5YjkuLjVkMWY4NDRlOGNkMjlmNTJmYjcwNjAyNWFk
ZTNiNjViNDFhMjkwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zOSwxMSArMzksMTEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgSEFWRShJ
Q1VfRk9STUFUX0RPVUJMRV9GT1JfRklFTERTKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAjZW5kaWYKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBA
IC04OSw0NCArODksNDQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2ws
IGpzU3RyaW5nKHZtLCAiT2JqZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0RnVuY0Zvcm1hdE51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIC8vIDExLjMuNCBGb3JtYXQgTnVtYmVyIEZ1bmN0aW9ucyAoRUNNQS00MDIg
Mi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBBc3Nl
cnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtbaW5pdGlhbGl6ZWROdW1iZXJG
b3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlICB0cnVlLgotICAgIEludGxOdW1iZXJG
b3JtYXQqIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0Nhc3Q8
SW50bE51bWJlckZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gMy4g
SWYgdmFsdWUgaXMgbm90IHByb3ZpZGVkLCBsZXQgdmFsdWUgYmUgdW5kZWZpbmVkLgogICAgIC8v
IDQuIExldCB4IGJlIFRvTnVtYmVyKHZhbHVlKS4KLSAgICBkb3VibGUgbnVtYmVyID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKKyAgICBkb3VibGUgbnVtYmVyID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIC8vIDUuIFJldHVybklm
QWJydXB0KHgpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgLy8gNi4gUmV0dXJuIEZvcm1hdE51bWJlcihuZiwgeCkuCi0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRO
dW1iZXIoKnN0YXRlLCBudW1iZXIpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKmNhbGxGcmFtZSwgbnVt
YmVyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy4z
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAv
LyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgotICAgIEludGxOdW1iZXJG
b3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHN0YXRlLT50
aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PElu
dGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBG
SVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAx
LjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5h
bWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2
YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFuZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGb3JtYXQgPSBuZi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2Jv
dW5kRm9ybWF0XV0gaXMgdW5kZWZpbmVkLApAQCAtMTM2LDcgKzEzNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChF
eGVjU3RhdGUqIHN0CiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJv
cGVydHkgaXMgMS4KICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBi
ZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRG
b3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBuZiwgbnVsbHB0ciwgMSwgImZvcm1hdCJfcyk7CisgICAgICAgIGJvdW5k
Rm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIC8v
IGQuIFNldCBuZi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIG5mLT5zZXRCb3VuZEZv
cm1hdCh2bSwgYm91bmRGb3JtYXQpOwpAQCAtMTQ2LDQ1ICsxNDYsNDUgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4
ZWNTdGF0ZSogc3QKIH0KIAogI2lmIEhBVkUoSUNVX0ZPUk1BVF9ET1VCTEVfRk9SX0ZJRUxEUykK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAyKQogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXR0b3BhcnRzCiAKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxO
dW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFudW1i
ZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVt
YmVyRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwogCi0gICAgZG91YmxlIHZhbHVlID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoKnN0YXRlLCB2
YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShu
dW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5k
aWYKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNN
QS00MDIgMi4wKQotICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1p
Y0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIElu
dGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZv
cm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3Jr
YXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2Fw
cGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTM2NzkKICAgICBpZiAoIW51bWJlckZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5h
bWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIklu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVy
Rm9ybWF0Il9zKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShudW1iZXJGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZl
ZE9wdGlvbnMoKmNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDgwMTI5NGE4Yjdi
ODViZWVlNjlkY2E0MjA3NTExMDdlZDE0Y2MzMjcuLjRlOGRkM2M4NDRiOTA5ZmQyZTNhYTc5ZmZj
MWU2NTkzOWUzZTBiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE9iamVjdCk7CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxl
cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxP
YmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgSlNP
YmplY3QqIG9iamVjdCkKIHsKQEAgLTkxNywyNyArOTE3LDI2IEBAIFZlY3RvcjxTdHJpbmc+IG51
bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJu
IG51bWJlcmluZ1N5c3RlbXM7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW50
bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICAvLyBJbnRsLmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKICAgICAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLmdldGNhbm9uaWNhbGxvY2FsZXMKIAotICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiBsb2NhbGVMaXN0ID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxlTGlzdCA9IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBs
ZW5ndGggPSBsb2NhbGVMaXN0LnNpemUoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBKU0FycmF5
KiBsb2NhbGVBcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGln
dW91cyksIGxlbmd0aCk7CiAgICAgaWYgKCFsb2NhbGVBcnJheSkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3Ioc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIGxvY2FsZUFycmF5LT5wdXREaXJlY3RJbmRleChzdGF0ZSwgaSwganNTdHJpbmcodm0sIGxv
Y2FsZUxpc3RbaV0pKTsKKyAgICAgICAgbG9jYWxlQXJyYXktPnB1dERpcmVjdEluZGV4KGNhbGxG
cmFtZSwgaSwganNTdHJpbmcodm0sIGxvY2FsZUxpc3RbaV0pKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobG9jYWxlQXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCmluZGV4
IGIwMjIyNTBjYWYxMWFmM2MzOTUwYTFlZjEwMTM5ZGQ0OGMzODllZTIuLjM3YWNjODllMTY2MWEz
MDhhNDkxNGJlMjEwNjk4YzI0YWJhMGUwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRShJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVu
Y1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY3LDggKzY3LDgg
QEAgU3RydWN0dXJlKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVy
YWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsSW50bFBsdXJhbFJ1bGVzLCBjb25zdHJ1
Y3RJbnRsUGx1cmFsUnVsZXMpCkBAIC04Myw0NyArODMsNDYgQEAgdm9pZCBJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUKICAgICBwbHVyYWxSdWxlc1Byb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhFeGVjU3Rh
dGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyAxMy4yLjEgSW50bC5QbHVyYWxSdWxlcyAoWyBsb2NhbGVzIFsgLCBvcHRp
b25zIF0gXSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRs
LnBsdXJhbHJ1bGVzCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nh
c3Q8SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSktPnBsdXJh
bFJ1bGVzU3RydWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSW50bFBsdXJhbFJ1bGVz
KiBwbHVyYWxSdWxlcyA9IEludGxQbHVyYWxSdWxlczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIEFTU0VSVChwbHVyYWxSdWxlcyk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcGx1
cmFsUnVsZXMtPmluaXRpYWxpemVQbHVyYWxSdWxlcygqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBwbHVyYWxSdWxlcy0+aW5pdGlhbGl6ZVBsdXJh
bFJ1bGVzKCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVz
KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxMy4yLjEgSW50bC5QbHVyYWxSdWxlcyAoWyBsb2NhbGVzIFsgLCBv
cHRpb25zIF0gXSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1p
bnRsLnBsdXJhbHJ1bGVzCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlBsdXJh
bFJ1bGVzIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUGx1cmFs
UnVsZXMiKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVu
Y1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMTMuMy4yIEludGwuUGx1cmFsUnVsZXMuc3VwcG9ydGVkTG9jYWxl
c09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnN1cHBvcnRlZGxvY2FsZXNvZgotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGds
b2JhbE9iamVjdC0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRM
b2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1
cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVz
LCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oCmluZGV4IDc5ODg5YmZjMjQ0OWIw
NjYyNWJlZTk3N2EyZDY0ZjAzYzVhOGZjYWIuLmQ4M2VhMWMyYzNmMzE0Y2MyMzljMmYyZWM4MmI3
YWJjNDUwNTRkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogcGx1cmFsUnVsZXNT
dHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5wbHVyYWxS
dWxlc1N0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZShW
TSYpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSgp
OyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBkOTkzZGY1ZDAxNzJi
Y2RjMTQ4ZWZhN2U2OGEwYjhmZWEwNzE4NWI2Li4xYmZjZDQzZGQyZTljYTVmMjFmMjZhYTJlNzAw
MDc1MmEyOTczMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiB9CiAKQEAgLTc4LDM3ICs3OCwzNyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNTdHJpbmcodm0sICJPYmplY3QiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZUZ1bmNTZWxlY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIDEzLjQuMyBJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3QgKHZh
bHVlKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1
cmFscnVsZXMucHJvdG90eXBlLnNlbGVjdAotICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVs
ZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVl
KCkpOworICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PElu
dGxQbHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICgh
cGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1
bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBQbHVyYWxS
dWxlcyJfcykpOwogCi0gICAgZG91YmxlIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVt
YmVyKHN0YXRlKTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KCpzdGF0ZSwgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgqY2Fs
bEZyYW1lLCB2YWx1ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIC8vIDEzLjQuNCBJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMgKCkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1p
bnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKLSAgICBJbnRsUGx1cmFs
UnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwg
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
anNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1
bGVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKIAotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZl
ZE9wdGlvbnMoKnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMoKmNhbGxGcmFtZSkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCA1NzVjNTdjMWUy
MjlkMGRlYmNlNzgzYWE5NWFlMjk0YTU1ZDNkZTFjLi4wNDliNjBjZTY3Njc4YTI3Y2MwNGZkZjBi
OWRlY2M0MTQyYTQ3OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDggKzM3LDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5QnVmZmVyRnVuY0lzVmlldyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBsYXRl
PD4KIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsK
QEAgLTY3LDI2ICs2NywyNiBAQCB2b2lkIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8
c2hhcmluZ01vZGU+OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQXJyYQogICAgIHB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIAogICAgIGlmIChzaGFyaW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpE
ZWZhdWx0KSB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
dGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzVmlldywgYXJyYXlCdWZmZXJGdW5jSXNW
aWV3LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzVmlld1ByaXZhdGVOYW1lKCksIGFycmF5QnVm
ZmVyRnVuY0lzVmlldywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDEpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8QXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZSBzaGFyaW5nTW9kZT4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNHZW5lcmljQXJy
YXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEFycmF5QnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNHZW5lcmljQXJy
YXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEFycmF5QnVmZmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2VuZXJp
Y0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTR2VuZXJpY0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0dlbmVyaWNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0dlbmVyaWNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAotICAgIFN0cnVj
dHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCh2bSktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSk7CisgICAgU3Ry
dWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgY29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25lZCBs
ZW5ndGg7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBsZW5ndGgg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0luZGV4KGV4ZWMsICJsZW5ndGgiKTsKKyAg
ICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAgbGVuZ3RoID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0luZGV4KGNhbGxGcmFtZSwgImxlbmd0aCIp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBkb2Vz
bid0IHNheSBzbywgaXQgaXMgaW4gZmFjdCBjb3JyZWN0IHRvIHNheQpAQCAtOTcsNyArOTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3I8c2hhcmluZ01vZGU+Ojpjb25zdAogCiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGxlbmd0aCwgMSk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpKTsKICAgICAKICAgICBpZiAoc2hhcmluZ01vZGUgPT0gQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6U2hhcmVkKQogICAgICAgICBidWZmZXItPm1ha2VTaGFyZWQoKTsKQEAgLTEx
OSwxOSArMTE5LDE5IEBAIGNvbnN0IENsYXNzSW5mbyogSlNHZW5lcmljQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmluZm8oKQogICAgIHJldHVybiAmSlNHZW5lcmljQXJyYXlC
dWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OnNfaW5mbzsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJBcnJheUJ1ZmZlciIpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BIDI0LjEuMy4xCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
QnVmZmVyRnVuY0lzVmlldyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oZXhlYy0+dm0oKSwgZXhl
Yy0+YXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAogLy8gSW5zdGFudGlhdGUgSlNHZW5lcmljQXJy
YXlCdWZmZXJDb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCmluZGV4IDQyZjE2M2ZlMzhhY2M0
ZjdjY2NjOTNlODdiZTE2OTYyYzljY2IzNGIuLjhhYWNhNWRlN2NmNjRhNWU0NDU1NGYyMTVhZjUx
ZmE4ZDYxM2E3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpT
R2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CiAgICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0FycmF5QnVmZmVyUHJvdG90eXBl
KiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsKIAotICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSopOworICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5QnVmZmVy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNH
ZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVy
KiBzcGVjaWVzU3ltYm9sKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCBjOTc4MjQyNDFlZGEwYjUyZGRk
MWE2OGUwMWZjZTVlZWNiNDE2ODMzLi5iMTEwMTYwZjMxNmUwZjM4MDM2NGNlODk5MmEzMzk4Yjhm
NGI0MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtMzUsMzAgKzM1LDI4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganND
YXN0PEpTRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICAKLSAgICBKU0FycmF5QnVm
ZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghdGhpc09iamVjdCB8fCB0aGlzT2JqZWN0LT5pbXBsKCktPmlzU2hhcmVkKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgb2Ygc2xpY2Ug
bXVzdCBiZSBhbiBBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBBcnJh
eUJ1ZmZlci4iX3MpOwogCi0gICAgZG91YmxlIGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9J
bnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBiZWdpbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgZG91YmxlIGVuZDsKLSAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW5kID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGVuZCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBlbmQg
PSB0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKICAgICBhdXRvIG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7CiAgICAgCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPmFycmF5QnVm
ZmVyU3RydWN0dXJlKG5ld0J1ZmZlci0+c2hhcmluZ01vZGUoKSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG5ld0J1ZmZlci0+
c2hhcmluZ01vZGUoKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVmZmVyKSk7CiAgICAg
CkBAIC02NiwzNyArNjQsMzcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIC8vIGh0dHA6
Ly90YzM5LmdpdGh1Yi5pby9lY21hc2NyaXB0X3NoYXJlZG1lbS9zaG1lbS5odG1sI3NlYy1nZXQt
YXJyYXlidWZmZXIucHJvdG90eXBlLmJ5dGVsZW5ndGgKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZl
clByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiX3MpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZm
ZXIiX3MpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc1NoYXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBub3QgYmUgYSBz
aGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBub3QgYmUgYSBzaGFyZWQgYXJyYXkg
YnVmZmVyIl9zKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpKSkpOwogfQogCiAv
LyBodHRwOi8vdGMzOS5naXRodWIuaW8vZWNtYXNjcmlwdF9zaGFyZWRtZW0vc2htZW0uaHRtbCNT
dHJ1Y3R1cmVkRGF0YS5TaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUuZ2V0X2J5dGVMZW5ndGgK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNoYXJlZEFycmF5QnVmZmVyUHJv
dG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzaGFyZWRBcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVM
ZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwog
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkgYnVm
ZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIiX3MpOwogICAgIGlmICghdGhp
c09iamVjdC0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOwogCiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+aW1w
bCgpLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCA3ZDY1OWRiYzM0NDgzODJlOGM0ODU3ZDhh
ZTgxOTk1ZDRkNGIwYmI3Li42NjBlZDZlNzM0Y2JlMDk2N2EwZmUyNjdmNmMxODlkOTBlZmM4ZTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTQm91bmRGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQm91bmRGdW5jdGlvbikg
fTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9u
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91
bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAg
ICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTRnVuY3Rpb24q
IHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihib3VuZEZ1bmN0aW9uLT50YXJn
ZXRGdW5jdGlvbigpKTsKQEAgLTUxLDE2ICs1MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RDaGVja0FyaXR5
KTsKICAgICB9CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShleGVjLT52bSgpLCB0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEpOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCB0YXJn
ZXRGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6
Tm9uZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdz
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxGcmFtZSwgdGFyZ2V0RnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFy
Z3MpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2Fs
bChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9u
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAg
ICBKU0FycmF5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKIApAQCAt
NjksMTAgKzY5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlv
bkNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Ym91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRB
cmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIGFyZ3MuYXBwZW5kKGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQoY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtODAsMzAgKzgwLDMw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0
YXRlKiBleGVjKQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0YXJn
ZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMo
KSwgYXJncykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTQm91bmRG
dW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRB
cmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CiAgICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0
cnVjdERhdGEoZXhlYy0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOworICAg
IENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoZ2xvYmFsT2Jq
ZWN0LT52bSgpLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKGNv
bnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNv
bnN0cnVjdERhdGEsIGFyZ3MpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
LCBhcmdzKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlv
bkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxK
U0JvdW5kRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKIAogICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5k
QXJncygpOwogCkBAIC0xMTIsMTAgKzExMiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwogICAgIH0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAg
ICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAg
aWYgKFVOTElLRUxZKGFyZ3MuaGFzT3ZlcmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
IH0KIApAQCAtMTIzLDIwICsxMjMsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29u
c3RydWN0RGF0YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIEFTU0VS
VChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5j
dGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0
YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc0JvdW5kRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1p
Y0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShzdGF0aWNfY2Fz
dDxib29sPihqc0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+dm0o
KSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZE9iamVjdCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRPYmplY3QgPSBqc0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3VuZE9iamVjdC0+dGFyZ2V0RnVuY3Rpb24o
KS0+aGFzSW5zdGFuY2UoZXhlYywgdmFsdWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGNh
bGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbikKQEAgLTIxMCw3ICsyMTAsNyBAQCBK
U0FycmF5KiBKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KHZtKSk7CisgICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIHJlc3VsdC0+
cHVzaChleGVjLCBtX2JvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggOGJiNGI3N2Fj
NTc4N2Q2MWYyZGUzNjlkMGM4NWIwZGVjYmFmYWU5Mi4uMjI1YWNiMGJlOGQ1M2I0YmE0NjI2NjZl
ZjNkNzUwZTljNmQzMGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmgKQEAgLTI5LDEyICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNh
bGwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rp
b25DYWxsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRo
aXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24oRXhlY1N0YXRl
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNJ
bnN0YW5jZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY2xh
c3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDJjNjQ5ZTE2
MDIwZmQwYmE0OTg2YjBmMTM3MDY3YzJhODE3NTQyZDguLmFlODMxNTFiZGUxYTZhNmJlZWNiM2Q4
OWNhN2FkZWU1OTIwN2ExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2Vt
Ymx5SGVscGVyczsKIGNsYXNzIEpTQmlnSW50OwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIFZNOwpA
QCAtNTMsNiArNTMsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWU7CiBjbGFzcyBQcm9wZXJ0eVNsb3Q7
CiBjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBuYW1lc3BhY2UgREZHIHsKIGNs
YXNzIEpJVENvbXBpbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRl
eCA1NDYxMjc0ZWJkNzdkZmYzZjA1ZjEyZGMxMDcyOWFmZTE0NjhmMjAxLi5lOTVkNTEyYTM4ZTY4
MmRiZmRhMzY0ZDI4MGIxZThkNzdhZGJhN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaApAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBDb21wbGV0ZVN1YnNwYWNlOwogY2xhc3MgQ29weVZpc2l0b3I7
CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIElkZW50
aWZpZXI7CiBjbGFzcyBKU0FycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0OwpAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWU7CiBjbGFzcyBQcm9wZXJ0
eU5hbWVBcnJheTsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIEpTQ2VsbExvY2s7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGVudW0gY2xhc3MgR0NEZWZlcnJhbENvbnRleHRBcmdQ
cmVzZW5zZSB7CiAgICAgSGFzQXJnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1
YzcxMmMwM2I5ZjRhZGQ4NDdlMjc0NDFiMTMwMjYzOTk1NzEwMThkLi41NWM1MGU0ZjE0NGUwMGI2
Y2JkMGM0OWQ1MjQ2NzU2MTNlMGNmZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcApA
QCAtMzUsMjkgKzM1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24pIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxs
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uID0ganNDYXN0PEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiA9IGpz
Q2FzdDxKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IGN1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLT5jdXN0b21HZXR0ZXJTZXR0ZXIoKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi0+aXNTZXR0ZXIoKSkgewogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRl
ciBzZXR0ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXItPnNldHRlcigpOwogICAgICAgICBBU1NFUlQo
c2V0dGVyKTsKLSAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBzZXR0ZXIsIHRydWUsIHRo
aXNWYWx1ZSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGNh
bGxGcmFtZSwgc2V0dGVyLCB0cnVlLCB0aGlzVmFsdWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
IAogICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXItPmluaGVyaXRzPERPTUF0dHJpYnV0ZUdldHRl
clNldHRlcj4odm0pKSB7CiAgICAgICAgIGF1dG8gZG9tQXR0cmlidXRlID0ganNDYXN0PERPTUF0
dHJpYnV0ZUdldHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPmRvbUF0dHJpYnV0ZSgp
OwogICAgICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLmNsYXNz
SW5mbykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVF
cnJvcihleGVjLCBzY29wZSwgZG9tQXR0cmlidXRlLmNsYXNzSW5mbywgY3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGRvbUF0dHJpYnV0
ZS5jbGFzc0luZm8sIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCkoZXhlYywg
SlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5w
cm9wZXJ0eU5hbWUoKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCko
Y2FsbEZyYW1lLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsKIH0KIAogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbjo6SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBUeXBlIHR5cGUsIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCmlu
ZGV4IDgwYTJjODFiYmY4ZjhhM2MzMTViNTMwZjk5MDcyODc2OTZmYTc1ZWUuLjRmZWQwZWQ0NmI5
ZmJlNmE5ZmMyNWNjZmVmNGUyODBlN2IwMDQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgK
QEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBUeXBlLCBjb25zdCBQcm9wZXJ0eU5h
bWUmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIEN1
c3RvbUdldHRlclNldHRlciosIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKEV4ZWNT
dGF0ZSopOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGN1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlclNldHRlci5nZXQoKTsgfQogICAgIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6U2V0dGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDdhMmVjNzQyNzZj
NTcwNDY0NDhlZGZkMzlkOGZlMTQ5OTVlODRhYjMuLmMyYzJmNzk5NDg3OTQ2MjRlYzM4MGE1MjE1
YmMwZGU1MTZlMTZkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC02MSwyNSArNjEsMjUgQEAgbmFtZXNwYWNl
IEpTQyB7CiBAZW5kCiAqLwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jR2V0SW50OChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50MTYoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJ
bnQ4KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvRnVuY1NldEludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRVaW50MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jU2V0RmxvYXQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0
ZUxlbmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0dldHRlckJ5dGVPZmZzZXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dl
dEludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50OChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVu
Y0dldFVpbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvRnVuY1NldEludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50OChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY1NldFVpbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVP
ZmZzZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC0xMjAsOSArMTIw
LDkgQEAgU3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1FbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5h
bWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTE2Myw5ICsx
NjMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMjEwLDEyMCArMjEwLDEy
MCBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0JFR0lOKCJtaXNzaW5nLXByb3RvdHlwZXMiKQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0
YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5i
dWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFWaWV3LnByb3Rv
dHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihl
eGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpT
QnVmZmVyKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmll
dyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBl
Y3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dl
dHRlckJ5dGVPZmZzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZt
LCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nh
c3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZp
ZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZp
ZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVj
dCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
RGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3
IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5i
eXRlT2Zmc2V0KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY0dldEludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8SW50OEFk
YXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPEludDhBZGFwdG9yPihnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8SW50
MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxJbnQxNkFkYXB0b3I+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY0dldEludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0
YTxJbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPEludDMyQWRhcHRvcj4o
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBn
ZXREYXRhPFVpbnQ4QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8VWludDhBZGFw
dG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gZ2V0RGF0YTxVaW50MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxV
aW50MTZBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVp
bnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gZ2V0RGF0YTxVaW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4g
Z2V0RGF0YTxVaW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPEZsb2F0MzJBZGFwdG9yPihleGVjKTsK
KyAgICByZXR1cm4gZ2V0RGF0YTxGbG9hdDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0RmxvYXQ2NChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxGbG9hdDY0QWRh
cHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY1NldEludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8SW50
OEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPEludDhBZGFwdG9yPihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8
SW50MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxJbnQxNkFkYXB0b3I+KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0
RGF0YTxJbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPEludDMyQWRhcHRv
cj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBzZXREYXRhPFVpbnQ4QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8VWludDhB
ZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0RGF0YTxVaW50MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0
YTxVaW50MTZBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dFVpbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxVaW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1
cm4gc2V0RGF0YTxVaW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMy
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEZsb2F0MzJBZGFwdG9yPihleGVj
KTsKKyAgICByZXR1cm4gc2V0RGF0YTxGbG9hdDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0RmxvYXQ2NChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxGbG9hdDY0
QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCmluZGV4IDlkNDk3NTg3YWEy
MTI5YWM5MmU2YzBiNjJlN2NhNWNhNWMyOTBmOTMuLjYwNDFkNWVlZTBlZDA2MDIwMzFkMzlkMzQ5
MWY0NWZmMmYzY2UwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVN
YXRoLmgKQEAgLTQ3LDggKzQ3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShW
TSYsIGRvdWJsZSwgV1RGOjpUaW1lVHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZ29yaWFuRGF0ZVRp
bWUmKTsKIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoVk0m
LCBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIGRvdWJsZSwgV1RGOjpUaW1lVHlwZSBpbnB1dFRp
bWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
aW5kZXggMmNhZTQ0ZGE3MWJkMTdlYmMzOGEwOWQ5NmIxNzhkZGViYjJhYWUzMy4uZWFhZGRkNTky
MGQwZDlmNzEyMTk3YWJkNzZmYzJmMmUyN2Q2NTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTUyLDExICs1MiwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBleGVjLT5qc0NhbGxlZSgpKSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBQ29uc3Ry
dWN0b3JFcnJvcihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSkpOwogfQogCiBjb25z
dCBDbGFzc0luZm8gSlNGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRnVuY3Rpb24pIH07
CkBAIC0xMTUsNiArMTE1LDcgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rp
b25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChWTSYgdm0sIEpTR2xvYmEKIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQog
ICAgICwgbV9leGVjdXRhYmxlKCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpKQogewogICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFu
dHMoKTsKIH0KQEAgLTE2Myw3ICsxNjQsNyBAQCBKU09iamVjdCogSlNGdW5jdGlvbjo6cHJvdG90
eXBlRm9yQ29uc3RydWN0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChMSUtF
TFkocHJvdG90eXBlLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gYXNPYmplY3QocHJvdG90
eXBlKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9i
YWxPYmplY3QoKTsKICAgICBpZiAoIWlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAg
ICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2VuZXJhdG9yLWZ1bmN0
aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNzLWV2YWx1YXRlYm9keQogICAgICAgICBp
ZiAoaXNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKGpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUo
KSkpCkBAIC0xODMsNyArMTg0LDcgQEAgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6YWxs
b2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXoKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JD
b25zdHJ1Y3Rpb24odm0sIGV4ZWMpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0g
RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKHZtLCB0aGlzKTsKLSAgICByYXJlRGF0YS0+aW5pdGlh
bGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3Qodm0pLCBwcm90b3R5
cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKKyAgICByYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3QoKSwgcHJvdG90eXBlLCBpbmxpbmVD
YXBhY2l0eSwgdGhpcyk7CiAKICAgICAvLyBBIERGRyBjb21waWxhdGlvbiB0aHJlYWQgbWF5IGJl
IHRyeWluZyB0byByZWFkIHRoZSByYXJlIGRhdGEKICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0
aGF0IGl0IHNlZXMgaXQgcHJvcGVybHkgYWxsb2NhdGVkCkBAIC0xOTksNyArMjAwLDcgQEAgRnVu
Y3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSog
ZXhlYywgc2l6ZV90IGlubGluZUMKICAgICBBU1NFUlQoY2FuVXNlQWxsb2NhdGlvblByb2ZpbGUo
KSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0g
cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKLSAgICBtX3JhcmVEYXRhLT5pbml0
aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUodm0sIGdsb2JhbE9iamVjdCh2bSksIHByb3Rv
dHlwZSwgaW5saW5lQ2FwYWNpdHksIHRoaXMpOworICAgIG1fcmFyZURhdGEtPmluaXRpYWxpemVP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KCksIHByb3RvdHlwZSwgaW5s
aW5lQ2FwYWNpdHksIHRoaXMpOwogICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogfQogCkBA
IC00MzcsOSArNDM4LDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgICAgICAg
ICAvLyBVbmxpa2UgZnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUgb2JqZWN0IHRoYXQgaXMgdGhlIHZh
bHVlIG9mIHRoZSBhIEdlbmVyYXRvckZ1bmN0aW9uJ3MgcHJvdG90eXBlCiAgICAgICAgICAgICAg
ICAgLy8gcHJvcGVydHkgZG9lcyBub3QgaGF2ZSBhIGNvbnN0cnVjdG9yIHByb3BlcnR5IHdob3Nl
IHZhbHVlIGlzIHRoZSBHZW5lcmF0b3JGdW5jdGlvbiBpbnN0YW5jZS4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3JmdW5jdGlv
bi1pbnN0YW5jZXMtcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2VuZXJh
dG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90
b3R5cGUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXN5bmNHZW5lcmF0b3JXcmFwcGVy
UGFyc2VNb2RlKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSkpCi0gICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKCkpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYyk7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMThkOWNmYmYxNTg4YWM2NDliZjY4NDg1YjVk
MjM0MWU5YTk5ZDA0Yy4uM2ZlZjkyZDQ0NWVjNGMwN2U0ZjMxMjYwY2M4M2NkM2QyZDRmZTQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNDksNyAr
NDksNyBAQCBjbGFzcyBTaWduYXR1cmU7CiB9CiAKIAotSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShW
TSYsIEpTT2JqZWN0Kik7CiAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgY2xhc3MgSlNGdW5jdGlvbiA6
IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5j
dGlvbiwgbV9yYXJlRGF0YSk7CiAgICAgfQogCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0Z1bmN0aW9uLCBtX2dsb2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgRnVuY3Rpb25S
YXJlRGF0YSogcmFyZURhdGEoVk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JhcmVEYXRhKSkKQEAgLTE0NCw2ICsxNDksOCBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGlj
IEpTQ2FsbGVlIHsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIAorICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5n
ZXQoKTsgfQorCiAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OwogICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKICAgICBib29sIGlzQW5vbnltb3VzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3Q7CkBAIC0yMjQsNiArMjMxLDcgQEAgY2xhc3MgSlNGdW5jdGlv
biA6IHB1YmxpYyBKU0NhbGxlZSB7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+
IG1fZXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25SYXJlRGF0YT4gbV9yYXJl
RGF0YTsKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owog
fTsKIAogY2xhc3MgSlNTdHJpY3RGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
CmluZGV4IDE4NzI2ODRkYTQwY2VhYzRlYjk4YWQyZDAzODU0YmNkOTg0YzRhYzQuLjNlMDQ3NWM4
NDQ4NjJkZjk2MmY1ZDc1NDdlZTEyMWRmYzI0YmMwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNDIsNiArNDIsNyBAQCBp
bmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkK
ICAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKICAgICAsIG1fcmFyZURh
dGEoKQorICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpCiB7CiAgICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDgyM2FjNTM3
NGQyMTZhNDIyMWRlNTE4OTlhZDJlYTA4MWE4ZGMzZS4uN2ZlOTFjNTBiZjQ2MWNmZWQyNTA3Y2Jh
YWNhODEwYTA2MzViYzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCkBAIC0zOCwxMCArMzgsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
dyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I8Vmlld0NsYXNzPjo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMjA2LDU2ICsyMDYsNTYgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0
ZSogZXhlYywgU3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5j
dGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJl
ID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0Ns
YXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3
VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CisgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Cisg
ICAgU3RydWN0dXJlKiBwYXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1
Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgc2l6ZV90IGFyZ0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNp
emVfdCBhcmdDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogCiAgICAgaWYgKCFh
cmdDb3VudCkgewogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQuIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQuIl9zKTsKIAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3Jl
YXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCAwKSkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgZmly
c3RWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZmlyc3RW
YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMDsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gV1RGOjpudWxsb3B0Owog
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYg
YXJnQ291bnQgPiAxKSB7Ci0gICAgICAgIG9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvSW5kZXgoZXhlYywgImJ5dGVPZmZzZXQiKTsKKyAgICAgICAgb2Zmc2V0ID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGNhbGxGcmFtZSwgImJ5dGVPZmZzZXQi
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAgICAgaWYgKGFyZ0NvdW50ID4gMikgewogICAgICAgICAgICAgaWYgKFZpZXdDbGFz
czo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykgewogICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBEYXRhVmlldyBieXRlTGVuZ3RoIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5l
ZCwgdHJlYXQgaXQgYXMgbWlzc2luZy4KLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGJ5dGVMZW5n
dGhWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOworICAgICAgICAgICAgICAgIEpT
VmFsdWUgYnl0ZUxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWJ5dGVMZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGhWYWx1ZS50b0luZGV4KGV4ZWMs
ICJieXRlTGVuZ3RoIik7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGhW
YWx1ZS50b0luZGV4KGNhbGxGcmFtZSwgImJ5dGVMZW5ndGgiKTsKICAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZW5ndGgg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0luZGV4KGV4ZWMsICJsZW5ndGgiKTsKKyAg
ICAgICAgICAgICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRv
SW5kZXgoY2FsbEZyYW1lLCAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPFZpZXdDbGFzcz4o
ZXhlYywgc3RydWN0dXJlLCBKU1ZhbHVlOjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVu
Z3RoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8Vmlld0NsYXNzPihjYWxs
RnJhbWUsIHN0cnVjdHVyZSwgSlNWYWx1ZTo6ZW5jb2RlKGZpcnN0VmFsdWUpLCBvZmZzZXQsIGxl
bmd0aCkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNh
bGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVmlld0Ns
YXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGFkYjMyNzkz
YjkyYzdkNzc3OWY3OWUwMTgyOTU5MGUwOGE5ZWExNmUuLjBhNGIxMzQyMTExMjQyODlhZTZhN2Mz
OTBlMTIwNDczY2M1YjBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaApAQCAtNDUzLDcgKzQ1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBFeGVjU3Rh
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0FycmF5QnVmZmVy
VmlldyogcmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdChleGVjLCB0aGlzT2JqZWN0LCBhcmdzLCBb
Jl0oKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmpl
Y3Qodm0pLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VU
eXBlKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVj
dCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBl
KTsKICAgICAgICAgcmV0dXJuIFZpZXdDbGFzczo6Y3JlYXRlVW5pbml0aWFsaXplZChleGVjLCBz
dHJ1Y3R1cmUsIGxlbmd0aCk7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC01NDksMTAgKzU0OSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlD
cmVhdGUoVk0mdgogCiAgICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNPYmplY3QtPmJ5
dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKLSAgICBKU09i
amVjdCogZGVmYXVsdENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT50eXBl
ZEFycmF5Q29uc3RydWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAg
IEpTT2JqZWN0KiBkZWZhdWx0Q29uc3RydWN0b3IgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT50
eXBlZEFycmF5Q29uc3RydWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwog
ICAgIEpTVmFsdWUgc3BlY2llcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGlm
IChzcGVjaWVzID09IGRlZmF1bHRDb25zdHJ1Y3RvcikgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShW
aWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3
Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCiAgICAgICAgICAg
ICBleGVjLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYXJyYXlCdWZmZXIpLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGEyMGIxNjM4NGZk
NDljOTc0OWY5NzYyNDQ3NTdlOGNjN2NjYTllZDguLmQ5NTY5NzkzZDgyOTFmM2UxMzgxNzk1YzJk
ZWVmZDhhY2RjZDE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTI2OCw0NiArMjY4LDQ0IEBAIHN0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUNvbnNvbGVQcm9wZXJ0eShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJu
IENvbnNvbGVPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsLCBDb25zb2xlT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbCwgY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsLT5nbG9iYWxF
eGVjKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VC
b3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1ha2VCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0KLSAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmpl
Y3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgYm91bmRUaGlzID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgyKTsKLSAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMyk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBhc1N0cmlu
ZyhleGVjLT51bmNoZWNrZWRBcmd1bWVudCg0KSk7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTVmFsdWUgYm91
bmRUaGlzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGJv
dW5kQXJncyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBs
ZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMyk7CisgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQp
KTsKIAogICAgIEFTU0VSVChsZW5ndGhWYWx1ZS5pc0ludDMyQXNBbnlJbnQoKSk7CiAgICAgaW50
MzJfdCBsZW5ndGggPSBsZW5ndGhWYWx1ZS5hc0ludDMyQXNBbnlJbnQoKTsKIAotICAgIFN0cmlu
ZyBuYW1lID0gbmFtZVN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1l
U3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJv
dW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8ganNDYXN0PEpTQXJyYXkqPihib3VuZEFyZ3Mp
IDogbnVsbHB0ciwgbGVuZ3RoLCBXVEZNb3ZlKG5hbWUpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0Nl
bGwoKSA/IGpzQ2FzdDxKU0FycmF5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0aCwgV1RG
TW92ZShuYW1lKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aGFzT3duTGVuZ3RoUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+
aGFzT3duUHJvcGVydHkoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmpl
Y3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCkpKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFJFTEVBU0VfQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50KDApLmlzQm9vbGVhbigpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCku
YXNCb29sZWFuKCkpCisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5p
c0Jvb2xlYW4oKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuYXNCb29sZWFuKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBi
b29sIGl0ZXJhdGVkT25jZSA9IGZhbHNlOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVs
bHB0cjsKICAgICB1bnNpZ25lZCBsaW5lOwotICAgIGV4ZWMtPml0ZXJhdGUoWyZdIChTdGFja1Zp
c2l0b3ImIHZpc2l0b3IpIHsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoWyZdIChTdGFja1Zpc2l0
b3ImIHZpc2l0b3IpIHsKICAgICAgICAgaWYgKCFpdGVyYXRlZE9uY2UpIHsKICAgICAgICAgICAg
IGl0ZXJhdGVkT25jZSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKQEAgLTM5NiwxNSArMzk0LDE0IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogQGVuZAog
Ki8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVl
Sm9iKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAKLSAgICBKU1ZhbHVlIGpvYiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAg
IEpTVmFsdWUgYXJndW1lbnQwID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBhcmd1
bWVudDEgPSBleGVjLT5hcmd1bWVudCgyKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MiA9IGV4ZWMt
PmFyZ3VtZW50KDMpOworICAgIEpTVmFsdWUgam9iID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSlNW
YWx1ZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOworICAgIEpTVmFsdWUgYXJn
dW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgzKTsKIAogICAgIGdsb2JhbE9iamVjdC0+cXVl
dWVNaWNyb3Rhc2soY3JlYXRlSlNNaWNyb3Rhc2sodm0sIGpvYiwgYXJndW1lbnQwLCBhcmd1bWVu
dDEsIGFyZ3VtZW50MikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZjRkYjdhNDNkYTY1MDZk
MjY1NDI2ZWI0Zjg1OTQ0ZGJlZDMwYmZlOS4uMjhiNGM2YjUzYjFkNzMwYjQ1OTllNDgwMjdhMWEz
ZGZiZjM3MTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDc4LDUwICs0NzgsNDggQEAgc3Rh
dGljIGRvdWJsZSBwYXJzZUZsb2F0KFN0cmluZ1ZpZXcgcykKICAgICByZXR1cm4ganNTdHJEZWNp
bWFsTGl0ZXJhbChkYXRhLCBlbmQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB4ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSB4ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh4KTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVy
cm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJy
b3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcyA9IGFzU3RyaW5nKHgpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgcyA9IGFzU3RyaW5nKHgpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBw
YXJzZWRPYmplY3Q7CiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMQ2hhcj4gcHJlcGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9u
U3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihjYWxs
RnJhbWUsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7CiAgICAg
ICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICB9IGVs
c2UgewotICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoZXhlYywgcy5jaGFy
YWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQ
YXJzZXI8VUNoYXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHMuY2hhcmFjdGVyczE2KCksIHMubGVu
Z3RoKCksIE5vblN0cmljdEpTT04pOwogICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIu
dHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChwYXJzZWRPYmplY3QpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocGFyc2VkT2JqZWN0KTsKIAotICAgIFNvdXJjZU9yaWdpbiBzb3Vy
Y2VPcmlnaW4gPSBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKLSAgICBKU0dsb2JhbE9iamVj
dCogY2FsbGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZt
KTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShleGVjLCBtYWtlU291cmNlKHMsIHNvdXJjZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29u
dGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOworICAgIFNvdXJj
ZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpOwor
ICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZh
bCkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFs
LCBleGVjLCBjYWxsZWVHbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSwgY2FsbGVlR2xvYmFsT2Jq
ZWN0LT5nbG9iYWxTY29wZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxUaGlzKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSByYWRpeFZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgSlNWYWx1ZSByYWRpeFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
IAogICAgIC8vIE9wdGltaXplZCBoYW5kbGluZyBmb3IgbnVtYmVyczoKICAgICAvLyBJZiB0aGUg
YXJndW1lbnQgaXMgMCBvciBhIG51bWJlciBpbiByYW5nZSAxMF4tNiA8PSBuIDwgSU5UX01BWCsx
LCB0aGVuIHBhcnNlSW50CkBAIC01NDEsMzMgKzUzOSwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAg
ICAgLy8gSWYgVG9TdHJpbmcgdGhyb3dzLCB3ZSBzaG91bGRuJ3QgY2FsbCBUb0ludDMyLgotICAg
IHJldHVybiB0b1N0cmluZ1ZpZXcoZXhlYywgdmFsdWUsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VJbnQodmlldywg
cmFkaXhWYWx1ZS50b0ludDMyKGV4ZWMpKSkpOworICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoY2Fs
bEZyYW1lLCB2YWx1ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZUludCh2aWV3LCByYWRpeFZhbHVlLnRvSW50MzIo
Y2FsbEZyYW1lKSkpKTsKICAgICB9KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jUGFyc2VGbG9hdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7Cisg
ICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmco
Y2FsbEZyYW1lKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZUZsb2F0KHZpZXdXaXRoU3RyaW5nLnZp
ZXcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29k
ZVVSSShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNEZWNvZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RVbmVzY2FwZVdoZW5EZWNvZGluZ1VSSSA9IG1h
a2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAgICAgICIjJCYrLC86Oz0/QCIKICAgICApOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZXhlYywgZG9Ob3RVbmVzY2FwZVdoZW5EZWNv
ZGluZ1VSSSwgdHJ1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGNhbGxG
cmFtZSwgZG9Ob3RVbmVzY2FwZVdoZW5EZWNvZGluZ1VSSSwgdHJ1ZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2Rl
VVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgc3RhdGljIEJpdG1hcDwyNTY+IGVtcHR5Qml0bWFwOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZGVjb2RlKGV4ZWMsIGVtcHR5Qml0bWFwLCB0cnVlKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShkZWNvZGUoY2FsbEZyYW1lLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJ
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJp
dG1hcDwyNTY+IGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1h
cCgKICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNTc2LDEwICs1NzQs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiEjJCYnKCkqKywtLi86Oz0/QF9+IgogICAgICk7CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShleGVjLCBkb05vdEVzY2FwZVdoZW5F
bmNvZGluZ1VSSSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZW5jb2RlKGNhbGxGcmFt
ZSwgZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUkkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVu
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0YXRpYyBC
aXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VDaGFy
YWN0ZXJCaXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKQEAgLTU4
OCwxMCArNTg2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0Vu
Y29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIhJygpKi0uX34iCiAg
ICAgKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZW5jb2RlKGV4ZWMsIGRvTm90RXNj
YXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShlbmNvZGUoY2FsbEZyYW1lLCBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNj
YXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZSA9IG1ha2VDaGFyYWN0ZXJCaXRt
YXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKQEAgLTYwMCw4ICs1OTgs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAiKistLi9AXyIKICAgICApOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b1N0cmluZ1ZpZXcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIFsmXSAoU3Ry
aW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b1N0cmluZ1ZpZXcoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgaWYg
KHZpZXcuaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjID0gdmlldy5jaGFy
YWN0ZXJzOCgpOwpAQCAtNjM2LDkgKzYzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvU3RyaW5nVmlldyhleGVjLCBleGVjLT5hcmd1bWVudCgw
KSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
U3RyaW5nVmlldyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5n
VmlldyB2aWV3KSB7CiAgICAgICAgIC8vIFdlIHVzZSBpbnQgZm9yIGsgYW5kIGxlbmd0aCBpbnRl
bnRpb25hbGx5IHNpbmNlIHdlIHdvdWxkIGxpa2UgdG8gZXZhbHVhdGUKICAgICAgICAgLy8gdGhl
IGNvbmRpdGlvbiBgayA8PSBsZW5ndGggLTZgIGV2ZW4gaWYgbGVuZ3RoIGlzIGxlc3MgdGhhbiA2
LgogICAgICAgICBpbnQgayA9IDA7CkBAIC02ODgsNjIgKzY4Niw2MSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYy0+dm0o
KSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGdsb2JhbE9i
amVjdC0+dm0oKSwgYnVpbGRlci50b1N0cmluZygpKTsKICAgICB9KSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93
VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIidhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nl
c3NlZCBpbiB0aGlzIGNvbnRleHQuIik7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIidhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5v
dCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwog
ICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6VHlwZUVycm9yKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgZXhlYy0+YXJndW1lbnQo
MCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90
b0dldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsIHRoaXNWYWx1ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2Fs
bEZyYW1lLCB0aGlzVmFsdWUpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdCkg
ewotICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gdGhpc1ZhbHVlLnN5bnRoZXNpemVQcm90
b3R5cGUoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSB0aGlzVmFsdWUuc3lu
dGhlc2l6ZVByb3RvdHlwZShjYWxsRnJhbWUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIXByb3RvdHlwZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
cHJvdG90eXBlKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm90b3R5cGUpOwogICAgIH0KIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0
ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUHJvdG9TZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogICAgIGlmICh0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcik7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIE9iamVjdFByb3Rv
Q2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcik7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3Qq
Pih2bSwgdGhpc1ZhbHVlKTsKIApAQCAtNzU3LDMxICs3NTQsMzAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVl
OwotICAgIHRoaXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRo
cm93SWZDYW50U2V0KTsKKyAgICB0aGlzT2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGNhbGxGcmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25U
cmFja2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTUHJvbWlzZSogcHJvbWlz
ZSA9IGpzQ2FzdDxKU1Byb21pc2UqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNQcm9taXNl
KiBwcm9taXNlID0ganNDYXN0PEpTUHJvbWlzZSo+KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwog
CiAgICAgLy8gSW50ZXJuYWxQcm9taXNlcyBzaG91bGQgbm90IGJlIGV4cG9zZWQgdG8gdXNlciBz
Y3JpcHRzLgogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4odm0sIHBy
b21pc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgSlNWYWx1ZSBvcGVyYXRpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
VmFsdWUgb3BlcmF0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgQVNT
RVJUKG9wZXJhdGlvblZhbHVlLmlzTnVtYmVyKCkpOwotICAgIGF1dG8gb3BlcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8SlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uPihvcGVyYXRpb25WYWx1ZS50b1VJ
bnQzMihleGVjKSk7CisgICAgYXV0byBvcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VS
ZWplY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvblZhbHVlLnRvVUludDMyKGNhbGxGcmFtZSkpOwog
ICAgIEFTU0VSVChvcGVyYXRpb24gPT0gSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uOjpSZWpl
Y3QgfHwgb3BlcmF0aW9uID09IEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbjo6SGFuZGxlKTsK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVjdGlvblRyYWNrZXIpCi0gICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVj
dGlvblRyYWNrZXIoZ2xvYmFsT2JqZWN0LCBleGVjLCBwcm9taXNlLCBvcGVyYXRpb24pOworICAg
ICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBwcm9taXNlLCBvcGVyYXRpb24p
OwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewogICAgICAgICBjYXNl
IEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbjo6UmVqZWN0OgpAQCAtNzk3LDkxICs3OTMsODgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKEV4ZWNTdGF0ZSogZXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNCdWlsdGluTG9nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBkYXRhTG9nKGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMp
LCAiXG4iKTsKKyAgICBkYXRhTG9nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
Y2FsbEZyYW1lKSwgIlxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRp
bkRlc2NyaWJlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMtPnZtKCksIHRvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCB0b1N0cmluZyhj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgYXV0byogcHJvbWlzZSA9IEpT
UHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
KiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwogICAgIGF1dG8gcmVqZWN0ID0gWyZdIChKU1ZhbHVlIHJlamVjdGlvblJlYXNvbikgewogICAg
ICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHByb21pc2UtPnJlamVj
dChleGVjLCByZWplY3Rpb25SZWFzb24pOworICAgICAgICBwcm9taXNlLT5yZWplY3QoY2FsbEZy
YW1lLCByZWplY3Rpb25SZWFzb24pOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsK
ICAgICB9OwogCi0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBleGVjLT5jYWxsZXJTb3VyY2VPcmln
aW4oKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSk7Ci0g
ICAgYXV0byogc3BlY2lmaWVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyk7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9y
aWdpbigpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09
IDEpOworICAgIGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBj
YXRjaFNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbi0+
dmFsdWUoKSk7CiAKICAgICAvLyBXZSBhbHdheXMgc3BlY2lmeSBwYXJhbWV0ZXJzIGFzIHVuZGVm
aW5lZC4gT25jZSBkeW5hbWljIGltcG9ydCgpIHN0YXJ0cyBhY2NlcHRpbmcgZmV0Y2hpbmcgcGFy
YW1ldGVycywKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhpcyBmcm9tIHRoZSBhcmd1bWVu
dHMuCiAgICAgSlNWYWx1ZSBwYXJhbWV0ZXJzID0ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvKiBp
bnRlcm5hbFByb21pc2UgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1
bGUoZXhlYywgc3BlY2lmaWVyLCBwYXJhbWV0ZXJzLCBzb3VyY2VPcmlnaW4pOworICAgIGF1dG8q
IGludGVybmFsUHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1v
ZHVsZShjYWxsRnJhbWUsIHNwZWNpZmllciwgcGFyYW1ldGVycywgc291cmNlT3JpZ2luKTsKICAg
ICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbi0+dmFsdWUoKSk7Ci0gICAgcHJvbWlzZS0+cmVz
b2x2ZShleGVjLCBpbnRlcm5hbFByb21pc2UpOworICAgIHByb21pc2UtPnJlc29sdmUoY2FsbEZy
YW1lLCBpbnRlcm5hbFByb21pc2UpOwogCiAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09
IDIpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Qcm9w
ZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjcmlwdG9yOwotICAgIGJvb2wgZW51bWVyYWJsZSA9IG9iamVjdC0+Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3Jp
cHRvci5lbnVtZXJhYmxlKCk7CisgICAgYm9vbCBlbnVtZXJhYmxlID0gb2JqZWN0LT5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpICYm
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGVudW1lcmFibGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jT3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9P
YmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtl
eXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCiAjaWYgRU5BQkxFKElO
VEwpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1h
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIGRh
dGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIHZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMikudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIHZhbHVlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgyKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXQoKmV4ZWMsIHZh
bHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRh
dGVUaW1lRm9ybWF0LT5mb3JtYXQoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgKaW5kZXggOTQ4ZDY3ZWMxOGY5NWUxZjYyZTk4ZDE4ZjZiNjgyZjQyMjZhY2Y3
Ni4uMjExMzBmOWI2MGM5ZTlkZWQxN2Q0YWUxNWMwMzUyMDg1YTk0NWUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oCkBAIC0yOSwzNSArMjksMzYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcmdMaXN0
OwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMg
c2hvdWxkIHJlYWxseSBiZSBpbiBKU0dsb2JhbE9iamVjdC5jcHAsIGJ1dCBwdXR0aW5nIHRoZW0g
dGhlcmUKIC8vIGlzIGEgMC41JSByZWR1Y3Rpb24uCiAKIGV4dGVybiBjb25zdCBBU0NJSUxpdGVy
YWwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yOwogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJ
Q29tcG9uZW50KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRW5jb2RlVVJJKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVy
cm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJv
bWlzZVJlamVjdGlvblRyYWNrZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNPd25LZXlzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUGFyc2VGbG9hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVV
UklDb21wb25lbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJ
Q29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVu
dHNDYWxsZWVBbmRDYWxsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y1Byb3RvR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFBy
b21pc2VSZWplY3Rpb25UcmFja2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNCdWlsdGluRGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0Rh
dGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGRvdWJsZSBqc1Rv
TnVtYmVyKFN0cmluZ1ZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5o
CmluZGV4IDM5OTM0YTZiMTA5YTUzZjRlNzYwZDY0OWRmMzgxODU5ZjllNjI4YjEuLjk3YmI5N2Q3
ZDIzN2Q2NjdlOGEwZjFjMGI3ZTc2YWIyMmFmZjQyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCkBAIC00OSw5ICs0OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIERy
b3BBbGxMb2NrcyBvYmplY3QgdGFrZXMgY2FyZSB0byByZWxlYXNlIHRoZSBKU0xvY2sgb25seSBp
ZiB5b3VyCiAvLyB0aHJlYWQgYWNxdWlyZWQgaXQgdG8gYmVnaW4gd2l0aC4KIAotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07CiBjbGFzcyBKU0xvY2s7Cit1c2lu
ZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm90
ZWN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgbGVnYWN5IHNpbmdsZSAKIC8vIHNoYXJlZCBW
TS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cAppbmRleCBlODg3ODBiNWQxMDM0YmZkZjEyNjI3OGYyYjAxYWU0ODRhNDY2YWI4Li4wZTVhOTdl
OGMzMTAyMDdhNTNiZDkxNjI4Y2UzY2UzOTYyYjU2ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1
YXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clJlc29sdmVTeW5jKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQYXJzZU1vZHVsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNo
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC0zODcsMzMgKzM4NywzMyBAQCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVMb2FkZXI6OmdldE1vZHVsZU5hbWVzcGFjZU9iamVj
dChFeGVjU3RhdGUqIGV4ZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVu
Y3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6dHJ5Q3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIGNhdGNo
U2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlamVjdCA9IFsmXSAo
SlNWYWx1ZSByZWplY3Rpb25SZWFzb24pIHsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZWplY3QoZXhlYywgcmVq
ZWN0aW9uUmVhc29uKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVqZWN0KGNh
bGxGcmFtZSwgcmVqZWN0aW9uUmVhc29uKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfTsK
IAotICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIGlmIChVTkxJ
S0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdChjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgIEpTVmFsdWUgc291cmNlID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgSlNWYWx1ZSBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAg
IGF1dG8qIGpzU291cmNlQ29kZSA9IGpzQ2FzdDxKU1NvdXJjZUNvZGUqPihzb3VyY2UpOwogICAg
IFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IGpzU291cmNlQ29kZS0+c291cmNlQ29kZSgpOwogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChzb3VyY2VDb2RlLnByb3ZpZGVyKCktPnNv
dXJjZVR5cGUoKSA9PSBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OldlYkFzc2VtYmx5KQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGV4
ZWMsIGRlZmVycmVkLCBtb2R1bGVLZXksIGpzU291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGNhbGxGcmFtZSwgZGVm
ZXJyZWQsIG1vZHVsZUtleSwganNTb3VyY2VDb2RlKSk7CiAjZW5kaWYKIAogICAgIENvZGVQcm9m
aWxpbmcgcHJvZmlsZShzb3VyY2VDb2RlKTsKQEAgLTQyMyw0OCArNDIzLDQ4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICB2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwg
SlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6
ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gcmVq
ZWN0KGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlKSk7CiAgICAg
QVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsKIAotICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFu
YWx5emVyKGV4ZWMsIG1vZHVsZUtleSwgc291cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZh
ckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsK
KyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihjYWxsRnJhbWUsIG1vZHVsZUtleSwg
c291cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQ
cm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hT
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiByZWplY3QoY2F0Y2hTY29wZS5leGNl
cHRpb24oKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG1v
ZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKSk7CisgICAgYXV0byByZXN1
bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShjYWxsRnJhbWUsIG1vZHVsZUFuYWx5emVyLmFuYWx5emUo
Km1vZHVsZVByb2dyYW1Ob2RlKSk7CiAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9k
dWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZt
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWlj
Q2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIW1vZHVsZVJlY29yZCkgCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIpKSk7CiAKLSAgICBKU0FycmF5KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVx
dWVzdGVkTW9kdWxlcygpLnNpemUoKSk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9k
dWxlcygpLnNpemUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoYXV0byYga2V5IDogbW9kdWxl
UmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkpIHsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChleGVjLCBpKyssIGpzU3RyaW5nKHZtLCBrZXkuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGkrKywganNTdHJpbmcodm0sIGtleS5nZXQoKSkp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFu
dGlhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNE
eW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJl
Y29yZCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZVJlY29y
ZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAg
IGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2co
IkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CiAKLSAg
ICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIG1vZHVs
ZVJlY29yZC0+bGluayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3Miw3MSArNDcyLDcxIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25J
bnN0YW50aWF0aW9uKEV4ZWNTdGF0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAv
LyBIb29rIHBvaW50LCBMb2FkZXIucmVzb2x2ZS4KICAgICAvLyBodHRwczovL3doYXR3Zy5naXRo
dWIuaW8vbG9hZGVyLyNicm93c2VyLXJlc29sdmUKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCBy
ZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0
aW9uLgogICAgIC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRo
ZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KLSAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAg
SlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShsb2FkZXItPnJlc29sdmUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFy
Z3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobG9hZGVyLT5yZXNvbHZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5jKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2
ZVN5bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5
bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gbG9hZGVyLT5yZXNvbHZlU3luYyhleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3VtZW50KDIpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGxvYWRlci0+cmVzb2x2ZVN5bmMoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIHJlc3Vs
dCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNo
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmZldGNoCiAgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAogICAgIC8vIFRha2UgdGhl
IGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgogICAgIC8vIEZvciBleGFtcGxl
LCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUg
cmVzb3VyY2UKICAgICAvLyBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICBKU01vZHVs
ZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nh
c3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvYWRlciA9
IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIGF1dG8qIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byogbW9kdWxlTmFtZXNwYWNl
T2JqZWN0ID0gbG9hZGVyLT5nZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIGF1dG8qIG1vZHVsZU5hbWVzcGFjZU9iamVjdCA9IGxvYWRlci0+Z2V0
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVOYW1lc3BhY2VPYmplY3QpOwogfQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tIEFkZGl0aW9uYWwgSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUbyBpbnN0cnVtZW50IGFuZCByZXRyaWV2ZSB0
aGUgZXJyb3JzIHJhaXNlZCBmcm9tIHRoZSBtb2R1bGUgZXhlY3V0aW9uLAogICAgIC8vIHdlIGlu
c2VydGVkIHRoZSBob29rIHBvaW50IGhlcmUuCiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVy
Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVM
b2FkZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA4YzUxMDk4OTZhMDgzNWYx
MTc3YTcyZjJkMmYzOGU5YWYyNTA1YTJkLi5jOTUxYmVlNDJiOTZjM2RkNzU3MWVjMDA0NjU5Mzgy
ZjkyMDc1OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNTcsMTEgKzU3LDExIEBAIHZvaWQgSlNOYXRpdmVT
dGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBpCiAgICAgbV9mdW5jdGlvbkNlbGwuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNlbGwp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cnVuU3RkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNOYXRpdmVTdGRGdW5jdGlvbio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU05hdGl2ZVN0ZEZ1bmN0aW9uKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIHJldHVybiBmdW5j
dGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoc3RhdGUpOworICAgIHJl
dHVybiBmdW5jdGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCiBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZl
U3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNv
bnN0cnVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNO
YXRpdmVTdGRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5oCmluZGV4IGZhYjlkNmUzNTdlNzk3MTc1Y2YwNGQxNWVhZTE3NDI5Njhj
NzQwOWIuLmY2YzczYjM4MGE2ZDczMWNmZDE4MzAzYjg0NzI1ZjdiOTFjMmNiMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDsKIAotdXNpbmcgTmF0aXZlU3RkRnVuY3Rpb24g
PSBXVEY6OkZ1bmN0aW9uPEVuY29kZWRKU1ZhbHVlKEV4ZWNTdGF0ZSopPjsKK3VzaW5nIE5hdGl2
ZVN0ZEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopPjsKIAogY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbiBmaW5hbCA6IHB1
YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggODI0ODk4YWQzYjFkYTE1MzgxM2Y1ODQ0NGNhNzZmNDc4
ZDA5Yjg0Yi4uNzc0YzVjMmZkYjEyYjVjMTc4NmYyZGY0NzllZThlMzFhOTg5MmYwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ1LDggKzQ1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShKU09OT2JqZWN0KTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09O
UHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNzk3LDU1ICs3OTcsNTUgQEAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKIH0K
IAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U09OUHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1
dG8gdmlld1dpdGhTdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxG
cmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmlld1dpdGhT
dHJpbmcudmlldzsKIAogICAgIEpTVmFsdWUgdW5maWx0ZXJlZDsKICAgICBpZiAodmlldy5pczhC
aXQoKSkgewotICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHZp
ZXcuY2hhcmFjdGVyczgoKSwgdmlldy5sZW5ndGgoKSwgU3RyaWN0SlNPTik7CisgICAgICAgIExp
dGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJzZXIoY2FsbEZyYW1lLCB2aWV3LmNoYXJhY3RlcnM4
KCksIHZpZXcubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNv
blBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkgfHwgIXVuZmlsdGVyZWQpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQp
IHsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihl
eGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFt
ZSwganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4ganNvblBhcnNlcihleGVjLCB2aWV3LmNo
YXJhY3RlcnMxNigpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJh
bFBhcnNlcjxVQ2hhcj4ganNvblBhcnNlcihjYWxsRnJhbWUsIHZpZXcuY2hhcmFjdGVyczE2KCks
IHZpZXcubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBh
cnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkgfHwgIXVuZmlsdGVyZWQpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpIHsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwg
anNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0
ZXJlZCk7CiAgICAgCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVy
ZWQpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBXYWxrZXIgd2Fsa2VyKGV4ZWMsIGFzT2Jq
ZWN0KGZ1bmN0aW9uKSwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBXYWxrZXIgd2Fsa2VyKGNh
bGxGcmFtZSwgYXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsVHlwZSwgY2FsbERhdGEpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUod2Fsa2VyLndhbGsodW5maWx0ZXJlZCkpOwogfQogCiAvLyBF
Q01BLTI2MiB2NSAxNS4xMi4zCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90
b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZ2lmaWVyIHN0cmluZ2lmaWVyKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgU3RyaW5naWZpZXIgc3RyaW5n
aWZpZXIoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ2lmaWVyLnN0cmluZ2lm
eShleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShzdHJpbmdpZmllci5zdHJpbmdpZnkoY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpKTsKIH0KIAogSlNWYWx1ZSBKU09OUGFyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGpzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5k
ZXggYzQ2NzBmOGE5MDE1MTI0YTA4N2NjNzI2MDM5OGY4NDYxYjg4NjliNi4uNzE4YzE1NjEwMzE4
OWY4NzRjOTVlODFjN2Y5YTU5ZDQ5ZWYwODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjMwMiwxMiArMjMwMiwxMiBAQCBib29sIEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1Zh
bHVlIHByb3RvKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFu
Y2VPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIHByb3Rv
ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBwcm90bykp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihKU09iamVjdDo6ZGVmYXVs
dEhhc0luc3RhbmNlKGNhbGxGcmFtZSwgdmFsdWUsIHByb3RvKSkpOwogfQogCiB2b2lkIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNzc2YzFmYjBlMGQ4
MWE2MGU5YTU3MTE4YjRkZjM5MmQyNmZmMTI5MC4uNTM0YjdkYjUzZjVmOGNjYzAyYWQ0NmQ1MDgw
ODQ5ODhlZmI0ZDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0xMTg0LDcgKzExODQsNyBAQCBjbGFzcyBKU0ZpbmFsT2JqZWN0IGZpbmFsIDogcHVibGlj
IEpTT2JqZWN0IHsKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJp
dmF0ZUZ1bmNJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGlubGlu
ZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKICAgICBFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3IuY3BwCmluZGV4IGRkMTEyNDU5OWExMjBjY2Y3YTI5ZWRkYmEzNjhmNjU0N2Yz
ZGU1MDAuLjg5NDFkNThmOTE1Y2UxMzBiYWI2OWQ3MWMyZmI2NjI1NTgyZjhmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJh
eVZpZXcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBK
U1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OkpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBj
b25zdHJ1Y3RUeXBlZEFycmF5VmlldywgY29uc3RydWN0VHlwZWRBcnJheVZpZXcpCkBAIC02NSwx
MSArNjUsMTEgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSgKIAogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIiVUeXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3Rs
eSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIiVU
eXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSJfcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCBmYWI2ZTA5ZTg3ZDQzNjcy
NTRmNWE4YzZiYzI1ZmQyZDIxM2QxMWNlLi4zMGIwZGZmMDhmZGQyNmViYmM1ZGY2NTc0Njk2YzVl
OTIzNDZiNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtMzgsMjIzICszOCwyMjIgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RP
VFlQRV9GVU5DVElPTihmdW5jdGlvbk5hbWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgc3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5
cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzd2l0
Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3Jh
Z2VUeXBlKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50OENsYW1w
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4Q2xh
bXBlZEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5Pih2bSwg
Y2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5
cGVJbnQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0ludDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMyQXJyYXk+
KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBjYXNlIFR5cGVVaW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxK
U1VpbnQzMkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDY0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDMyOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJheT4odm0s
IGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQ4OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDhB
cnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4odm0sIGNhbGxG
cmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNl
IFR5cGVVaW50ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
TmFtZTxKU1VpbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4QXJy
YXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBjYXNlIFR5cGVJbnQxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0ludDE2QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MTY6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVEYXRhVmlldzogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKIH0gd2hpbGUgKGZhbHNlKQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y0lzVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzQ2Vs
bCgpICYmIGlzVHlwZWRWaWV3KHZhbHVlLmFzQ2VsbCgpLT5jbGFzc0luZm8oZXhlYy0+dm0oKSkt
PnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih2YWx1ZS5pc0NlbGwoKSAmJiBpc1R5cGVkVmlldyh2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJ
bmZvKGdsb2JhbE9iamVjdC0+dm0oKSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRB
cnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
YXJndW1lbnQuaXNDZWxsKCkgfHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFz
c0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CiAKICAgICBK
U0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+
KGFyZ3VtZW50KTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1
ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmxlbmd0aCgpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdp
bmFsQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdl
dE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CiAgICAgQVNT
RVJUKGlzVHlwZWRWaWV3KHR5cGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2Jh
bE9iamVjdC0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKHR5cGUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAg
ICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90
IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNTZXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGlu
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4pOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlVHlw
ZUVycm9yKGNhbGxGcmFtZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jSW5jbHVkZXMpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jTGFzdEluZGV4T2YpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRl
eE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9z
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExf
R0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMg
bm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0dldHRlckZ1bmNMZW5ndGgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY1JldmVyc2UpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNT
dWJhcnJheUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y1N1YmFycmF5Q3JlYXRlKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNUb1N0cmluZ1RhZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFn
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBzd2l0Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+
dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCAiVWludDhDbGFtcGVkQXJy
YXkiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKaW5kZXggNGUzMzQzMTQyMjlmZTA4Zjk5YjM5ZWM2ZjUw
ODNhZDc4Zjk0NzA3Mi4uNWQ1NDk5MzY4Y2FmYWVlYmFkMTBmZGFhZjQxMjc5YmRiYjUwNTQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaApAQCAtNDUsMTAgKzQ1LDEwIEBAIGNsYXNzIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2
YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY1NvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDc3NmVjM2M0ZjIxYWI4ZWNk
MTQyZjljYzY1NzVhYTJkYjk2MGQ4NDguLjcyYTIxYTUwNTUyYzY2OGRlYWJmNzNkNGE2MWYyMzYw
NmRjNjMzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQ3LDYyICs0Nyw2MSBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIE1hcFByb3RvdHlwZSogbWFwUHJvdG90eXBlLCBHZXR0ZXJTZQog
ICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1hcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbE1hcCwg
Y29uc3RydWN0TWFwKQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsTWFwKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIk1hcCIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIk1hcCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAg
ICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVy
YWJsZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSkpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNNYXA6OmNyZWF0ZShj
YWxsRnJhbWUsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAKICAgICBpZiAoYXV0byogaXRlcmFibGVN
YXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4odm0sIGl0ZXJhYmxlKSkgewogICAgICAgICBpZiAo
aXRlcmFibGVNYXAtPmNhbkNsb25lRmFzdEFuZE5vbk9ic2VydmFibGUobWFwU3RydWN0dXJlKSkK
LSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhYmxlTWFwLT5jbG9uZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKSkpOworICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNs
b25lKGNhbGxGcmFtZSwgdm0sIG1hcFN0cnVjdHVyZSkpKTsKICAgICB9CiAKLSAgICBKU01hcCog
bWFwID0gSlNNYXA6OmNyZWF0ZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKTsKKyAgICBKU01hcCog
bWFwID0gSlNNYXA6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBtYXBTdHJ1Y3R1cmUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1
ZSBhZGRlckZ1bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFt
ZXMtPnNldCk7CisgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0
KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rp
b25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAo
YWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJh
YmxlLCBbJl0oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKKyAg
ICBmb3JFYWNoSW5JdGVyYWJsZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBFeGVj
U3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGlmICghbmV4dEl0ZW0uaXNPYmpl
Y3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChleGVj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCkpOworICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJ
dGVtLmdldChjYWxsRnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG5leHRJdGVtLmdldChleGVjLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDEpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
IAogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0xMTAsMjUgKzEw
OSwyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKICAgICAg
ICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25D
YWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBtYXAsIGFyZ3VtZW50cyk7CisgICAgICAg
IGNhbGwoY2FsbEZyYW1lLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFk
ZGVyRnVuY3Rpb25DYWxsRGF0YSwgbWFwLCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShtYXApOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NF
UlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7
Ci0gICAgSlNNYXAqIG1hcCA9IGpzQ2FzdDxKU01hcCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU01h
cCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIEpT
TWFwKiBtYXAgPSBqc0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBhdXRvKiBoZWFkID0gbWFwLT5oZWFkKCk7CiAgICAgQVNTRVJUKGhlYWQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaGVhZCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhl
Yy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tl
dFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGpzRHluYW1p
Y0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKTsKKyAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5
cGUqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0
KTsKICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICB3aGlsZSAoYnVja2V0KSB7CkBA
IC0xMzYsMjEgKzEzNSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0TmV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGJ1Y2tldCk7CiAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgp
OwogICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc2VudGluZWxN
YXBCdWNrZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnZt
KCkuc2VudGluZWxNYXBCdWNrZXQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQo
anNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3Vt
ZW50KDApKSk7Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2Jq
ZWN0LCBqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpT
TWFwOjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
QVNTRVJUKGJ1Y2tldCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQtPmtleSgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01h
cDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0
byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWNDYXN0
PEpTTWFwOjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4o
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQtPnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKaW5kZXggZWQ0ODMwNWM1
ZGIzZDRmYmQ2NDVmMDk2MzE4MDM4NmQ0MjEyZjc3OS4uMWJiYWI3NmY3YmIwZmJlYjEyNTM5MmEw
NGEyM2RmYjZlMTNkZDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5oCkBAIC01Niw5ICs1Niw5IEBAIGNsYXNzIE1hcENvbnN0cnVjdG9yIGZp
bmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBNYXBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwogfTsKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5j
TWFwQnVja2V0TmV4dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRL
ZXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IGMyMjkwNWU4ODEzZDRmMjRjOTkxNTY0ZWZi
MjdhZjQ1NTc3NGFmNGQuLmFmNTcyNmY3YjZlOTJhN2U5Zjg4MGQ2MmRjZmEzMWZkZGUwOTM4MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApA
QCAtNDgsMTMgKzQ4LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIk1hcCIsICZCYXNlOjpzX2luZm8sICZtYXBQcm90b3R5cGVUYWJsCiBAZW5kCiAqLwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y0RlbGV0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAgICAK
IHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7CkBAIC03OCw5ICs3OCw5IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
SlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNp
emUsIG1hcFByb3RvRnVuY1NpemUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFw
KiBnZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQorQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNWYWx1ZS5pc0NlbGwoKSkpIHsKQEAgLTk1LDUyICs5NSw1MiBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRo
aXNWYWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdl
dE1hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAg
PSBnZXRNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIG1hcC0+Y2xlYXIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0
TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPnJlbW92ZShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdl
dE1hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAg
PSBnZXRNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwLT5nZXQoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG1hcC0+aGFzKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUs
IHRoaXNWYWx1ZSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBtYXAtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXBQcm90b0Z1bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0TWFw
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1hcC0+c2l6ZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDJiMDZkNjYw
MzVhOGY4YTgyMWI2MzdkYzdjNTk5MzA4NDlkODEyZmEuLmFkZmZhZWRlYTk1ZDRkMDExNDZhNGVi
NTVlZmIwN2E0NGFlMTlhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuY3BwCkBAIC0zMywzOCArMzMsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShNYXRoT2JqZWN0KTsKIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRh
bihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0FUYW5oKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQVRhbjIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNDYnJ0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQ2VpbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRnJvdW5kKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2coRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cx
cChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0xvZzEwKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jTG9nMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY01heChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY01pbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1BvdyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1JvdW5kKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbmgoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0lNdWwo
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNB
Q29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQVNpbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW5oKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBVGFuMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
Q2VpbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2x6MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NvcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jRnJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
TG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0xvZzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01heChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNQb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1JhbmRvbShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91
bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jU2luaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU3FydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNUYW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8gPSB7ICJNYXRoIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRo
T2JqZWN0KSB9OwogCkBAIC0xMjcsNzYgKzEyNyw3NiBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNBYnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQWJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmYWJzKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
ZmFicyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvcyhleGVjLT5hcmd1bWVudCgwKS50
b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVt
YmVyKE1hdGg6OmFjb3MoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUp
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2lu
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0FTaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFzaW4oZXhlYy0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0RvdWJsZU51bWJlcihNYXRoOjphc2luKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQVRhbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBVGFuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFu
KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXRhbihjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0FUYW4yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBkb3VibGUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkb3VibGUgYXJnMSA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcxID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoYXRhbjIoYXJnMCwgYXJnMSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2VpbChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihjZWlsKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2VpbChjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB1aW50MzJfdCB2YWx1ZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvVUludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IHZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1VJbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZShjbHoodmFsdWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0NvcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNv
cyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvcyhjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0V4cChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1h
dGg6OmV4cChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cChjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihmbG9vcihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZsb29yKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9O
dW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jSHlwb3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsKKyAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KTsKICAgICBkb3VibGUgbWF4ID0gMDsKICAgICBWZWN0b3I8ZG91YmxlLCA4PiBhcmdzOwogICAg
IGFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmdzQ291bnQpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhcmdzQ291bnQ7ICsraSkgewotICAgICAgICBhcmdzLnVuY2hlY2tlZEFw
cGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKSk7CisgICAgICAg
IGFyZ3MudW5jaGVja2VkQXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9O
dW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoc3RkOjppc2luZihhcmdzW2ldKSkKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoK3N0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwpAQCAtMjE3LDE5ICsyMTcsMTkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChzdW0p
ICogbWF4KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0xvZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZyhleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY01heChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNNYXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICB1bnNpZ25lZCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBk
b3VibGUgcmVzdWx0ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYXJnc0NvdW50OyArK2spIHsKLSAgICAgICAg
ZG91YmxlIHZhbCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOwor
ICAgICAgICBkb3VibGUgdmFsID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051
bWJlcihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsKSkgewogICAgICAgICAg
ICAgcmVzdWx0ID0gUE5hTjsKQEAgLTIzOSwxNCArMjM5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01heChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01pbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+
YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSArc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291
bnQ7ICsraykgewotICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
aykudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2YWwgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoc3RkOjppc25h
bih2YWwpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQTmFOOwpAQCAtMjU2LDM0ICsyNTYsMzQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIC8vIEVDTUEgMTUuOC4yLjEuMTMKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGRvdWJsZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b051
bWJlcihleGVjKTsKKyAgICBkb3VibGUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkb3VibGUgYXJnMiA9IGV4ZWMt
PmFyZ3VtZW50KDEpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcyID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b051bWJlcihjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKG9wZXJhdGlvbk1hdGhQb3coYXJnLCBhcmcyKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFuZG9tKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PndlYWtSYW5kb21OdW1iZXIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoZ2xvYmFsT2JqZWN0LT53ZWFrUmFuZG9tTnVtYmVyKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGpzUm91bmQoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc1JvdW5kKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaWduKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZG91YmxlIGFyZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgaWYgKHN0ZDo6aXNuYW4oYXJnKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICBpZiAoIWFyZykKQEAg
LTI5MSw5NSArMjkxLDk1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1NpZ24oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoc3RkOjpzaWduYml0KGFyZykgPyAtMSA6IDEpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2luKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoTWF0aDo6c2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6c2luKGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU3FydChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RvdWJsZU51bWJlcihzcXJ0KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RG91YmxlTnVtYmVyKE1hdGg6OnRhbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnRhbihj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0lNdWwoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaW50MzJfdCBsZWZ0ID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGxlZnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW50MzJfdCByaWdodCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CisgICAg
aW50MzJfdCByaWdodCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9JbnQzMihjYWxsRnJhbWUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobGVmdCAqIHJpZ2h0KSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FD
b3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zaChleGVjLT5hcmd1bWVu
dCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91
YmxlTnVtYmVyKE1hdGg6OmFjb3NoKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2Fs
bEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jQVNpbmgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQVNpbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFzaW5o
KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbmgoY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBVGFuaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6YXRhbmgoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFuaChjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6Y2JydChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNi
cnQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3NoKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvc2goZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjpjb3NoKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwbTEo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jRXhwbTEoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cG0xKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwbTEoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJl
cihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNGcm91bmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jRnJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzdGF0
aWNfY2FzdDxmbG9hdD4oZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4o
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjpsb2cxcChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzEw
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0xvZzEwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2cxMChleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzEwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jTG9nMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNMb2cyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjps
b2cyKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMihjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1NpbmgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2luaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6c2luaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbmgoY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbmgoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RG91YmxlTnVtYmVyKE1hdGg6OnRhbmgoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW5o
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKmV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVuYyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4o
ZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aAppbmRleCBhZjU3ZDM0YmE1ZTQzYmE0MWZjNDI1YmVkMjMzN2VjNmYyYmY2YWY3Li5iY2RlYjQz
YzkxMTZlNjAwNTU4Y2RhMmNlMGRlZGI0YzU4ZDhhZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC00OSw4ICs0OSw4IEBAIGNsYXNzIE1hdGhPYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9v
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NaWNyb3Rhc2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01pY3JvdGFz
ay5oCmluZGV4IDljNGYyNzQ2NTMxNGVkNGRkNjA2NTcxZTYyZDc3OTI0NzdmOTNhNmYuLjVkODg5
MTVkNWI0ZWMzOTM0ODNhNGQxZGFhYmM1YmM1NmM1MzcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01pY3JvdGFzay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01pY3JvdGFzay5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIE1pY3JvdGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPE1p
Y3JvdGFzaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA2MjE2NTA3Y2FiNjBlODhi
NGI2OTk0MTk3MmFlYTczYmIzZDQ0M2VkLi5kYzM0MDY4MTJhNmQzMDY3ODQzNjM1MjZkZTQ1MjRj
NDgzNDNkZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNTAsMjQgKzUwLDI0IEBAIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvckJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByCiB9CiAKIHRlbXBsYXRlPEVycm9yVHlwZSBlcnJvclR5cGU+Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVy
ZSh2bSkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Cisg
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5lcnJvclN0
cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIEFTU0VSVChlcnJvclN0cnVjdHVyZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVy
cm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5
cGVOb3RoaW5nLCBmYWxzZSkpKTsKIH0KIAogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4K
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJv
clR5cGU+OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihleGVjLT5qc0Nh
bGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxs
cHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBT
dHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
PihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSh2bSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0
cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIHRl
bXBsYXRlIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oCmluZGV4IDczMDdkMDEwYzkzNDQ2OTZjNjRhYWM5YThjMjk1ZjdhYjMzZTRh
MzAuLjE2NmVlNzFiNDU0MjQ4YjgzNGZjZDdjMjM3M2FlMjRhNzFkYTBkMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmgKQEAgLTYwLDEwICs2MCwxMCBAQCBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIGZpbmFs
IDogcHVibGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlIHsKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoVk0mIHZt
KSB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZShlcnJvclR5cGUpOyB9
CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYpIHsgcmV0dXJuIGdsb2JhbE9iamVj
dCgpLT5lcnJvclN0cnVjdHVyZShlcnJvclR5cGUpOyB9CiBwcml2YXRlOgotICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9u
LmgKaW5kZXggN2JkYzhmOTZkMDMwMWMyMDQwNDMxNGI5YWViNzRkYmRiMDMwN2E0Yi4uMTBiYWY5
MDk2Nzk3MzE3MmFjNDM4Njg1ZjBiNzc1YTI2MmU2ZjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiAKLXR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpTQ19IT1NUX0NBTEwgKlJhd05hdGl2ZUZ1bmN0aW9uKShF
eGVjU3RhdGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpTQ19IT1NUX0NBTEwgKlJhd05h
dGl2ZUZ1bmN0aW9uKShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBOYXRp
dmVGdW5jdGlvbiB7CiBwdWJsaWM6CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdGl2ZUZ1bmN0
aW9uIHsKICAgICBib29sIG9wZXJhdG9yPT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KE5hdGl2
ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQog
Ci0gICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJu
IG1fcHRyKGV4ZWMpOyB9CisgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gbV9wdHIo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAKICAgICB2b2lkKiByYXdQb2ludGVyKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9wdHIpOyB9CiAKQEAgLTgxLDcg
KzgxLDcgQEAgY2xhc3MgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gewogICAgIGJvb2wgb3BlcmF0b3I9
PShUYWdnZWROYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3Ro
ZXIubV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yIT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9CiAKLSAgICBFbmNvZGVk
SlNWYWx1ZSBvcGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gTmF0aXZlRnVuY3Rp
b24oKnRoaXMpKGV4ZWMpOyB9CisgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gTmF0
aXZlRnVuY3Rpb24oKnRoaXMpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgTmF0aXZlRnVuY3Rpb24oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IGE1NmNh
YjNmYWU3OWVlOTQ1ZTY5NzY2MjRhMTY0YjViMThkOGY0YzguLjk2N2RiZmM1OWQxZmJmNjI4MGZl
NWJmMWY1OWMyZWNmYTBlNzgyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBOdWxsR2V0dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShOdWxsR2V0dGVyRnVuY3Rpb24pIH07CiAKIG5hbWVzcGFjZSBOdWxsR2V0dGVyRnVu
Y3Rpb25JbnRlcm5hbCB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikK
IHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAK
aW5kZXggNTZkNTNjYzRhYTY3NmJmNzNkZmMxZTBlZTZmNGYzYTYyNzE4NzAzMy4uOTBjNWNmM2Vl
ZGZiZmM1MWUxMzdlMzIzMTk3MTljMDgyMTdkNmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC03MSwxMyArNzEs
MTMgQEAgc3RhdGljIGJvb2wgY2FsbGVySXNTdHJpY3QoRXhlY1N0YXRlKiBleGVjKQogfQogCiBu
YW1lc3BhY2UgTnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChjYWxs
ZXJJc1N0cmljdChleGVjKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEg
Z2V0dGVyIl9zKSk7CisgICAgaWYgKGNhbGxlcklzU3RyaWN0KGNhbGxGcmFtZSkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCBlODJh
OGZiNGJmNDM5OTY1MTQwZDU1ZGJiNzQzOWEwMTk5ZTNlOThiLi45MDY4MjkzOGFmNDg4MDU4MWFl
NzA0NzhjODdhNWQ3NjYxMWZhMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJD
b25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3Ry
dWN0b3JGdW5jSXNJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJ
bnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCkBAIC01Miw4ICs1Miw4IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiBAZW5kCiAqLwog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
TnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogTnVtYmVy
Q29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxOdW1iZXJDb25z
dHJ1Y3RvciwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IpCkBAIC04NiwxMyArODYsMTMgQEAg
dm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90
b3R5cGUqIG51bWJlclByb3RvdHlwZSkKIH0KIAogLy8gRUNNQSAxNS43LjEKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBkb3VibGUgbiA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpIDogMDsKKyAgICBkb3VibGUgbiA9IGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID8gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b051bWJlcihjYWxsRnJhbWUpIDogMDsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0
LT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBOdW1iZXJPYmplY3QqIG9iamVjdCA9IE51bWJl
ck9iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAtMTAxLDIxICsxMDEsMjEgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjKQogfQogCiAvLyBFQ01BIDE1LjcuMgotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID8gMCA6
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpOwog
fQogCiAvLyBFQ01BLTI2MiAyMC4xLjIuMwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lz
SW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVn
ZXJJbXBsKGV4ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSk7CiB9CiAKIC8vIEVDTUEtMjYyIDIwLjEuMi41Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYm9v
bCBpc0ludGVnZXI7CiAgICAgaWYgKGFyZ3VtZW50LmlzSW50MzIoKSkKICAgICAgICAgaXNJbnRl
Z2VyID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCmluZGV4IDAzYTVlMWIwMDM3OGJiMmJlY2MyNjRiZDg5M2FjNzdlN2Y5ZGU5
ZTIuLjI4ZTJmNTQxMzJlYzhjZGI2NGU5M2ZjMjc1ZmJjOGI5MGE0Mzc2OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDQs
MTEgKzQ0LDExIEBAIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRl
ciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVu
dGlhbChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVk
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQ
cm90b0Z1bmNUb1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAK
QEAgLTM4NiwxOCArMzg2LDE4IEBAIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91
YmxlVmFsdWUsIGludDMyX3QgcmFkaXgpCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25h
bCBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRv
IHJvdW5kIHRoZSBzaWduaWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRo
b2Qgb3B0aW9uYWxseSByb3VuZHMKIC8vIHRvIGFyZ3VtZW50LXBsdXMtb25lIHNpZ25pZmljYW50
IGZpZ3VyZXMpLgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJl
cih2bSwgZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhp
c051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0
b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgLy8gUGVyZm9ybSBU
b0ludGVnZXIgb24gdGhlIGFyZ3VtZW50IGJlZm9yZSByZW1haW5pbmcgc3RlcHMuCi0gICAgaW50
IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0ludGVnZXIoZXhlYykpOwor
ICAgIGludCBkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRlZ2VyKGNh
bGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAv
LyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KQEAgLTQwNSw3ICs0MDUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwgMCB8
fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
ZXhlYywgc2NvcGUsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAg
YW5kIDEwMCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAx
MDAiX3MpOwogCiAgICAgLy8gUm91bmQgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB1bmRlZmluZWQs
IGFsd2F5cyBmb3JtYXQgYXMgZXhwb25lbnRpYWwuCiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIg
YnVmZmVyOwpAQCAtNDIzLDE5ICs0MjMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFRoaXMg
bWV0aG9kIHRha2VzIGFuIGFyZ3VtZW50IHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgZGVjaW1hbCBw
bGFjZXMgdG8gcm91bmQgdGhlCiAvLyBzaWduaWZpY2FuZCB0by4gSG93ZXZlciB3aGVuIGNvbnZl
cnRpbmcgbGFyZ2UgdmFsdWVzICgxZSsyMSBhbmQgYWJvdmUpIHRoaXMKIC8vIG1ldGhvZCB3aWxs
IGluc3RlYWQgZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSB4OwotICAg
IGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwg
eCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBpbnQgZGVjaW1hbFBsYWNlcyA9
IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGV4ZWMpKTsKKyAg
ICBpbnQgZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0ludGVnZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICBpZiAoZGVjaW1hbFBsYWNlcyA8IDAgfHwgZGVjaW1hbFBsYWNlcyA+IDEw
MCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9GaXhl
ZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVu
dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3Rh
dGVzICJJZiB4ID49IDEwXjIxLCB0aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhp
cyBhbHNvIGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5h
TgpAQCAtNDU3LDIyICs0NTcsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKIC8vIGRlY2ltYWwsIHdoaWxzdCAx
MDAwIGlzIGNvbnZlcnRlZCB0byB0aGUgZXhwb25lbnRpYWwgcmVwcmVzZW50YXRpb24gMS4wMGUr
My4KIC8vIEZvciBuZWdhdGl2ZSBleHBvbmVudHMgdmFsdWVzID49IDFlLTYgYXJlIGZvcm1hdGVk
IGFzIGRlY2ltYWwgZnJhY3Rpb25zLAogLy8gd2l0aCBzbWFsbGVyIHZhbHVlcyBjb252ZXJ0ZWQg
dG8gZXhwb25lbnRpYWwgcmVwcmVzZW50YXRpb24uCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAg
aWYgKCF0b1RoaXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFz
IFRvU3RyaW5nLgogICAgIGlmIChhcmcuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIC8v
IFBlcmZvcm0gVG9JbnRlZ2VyIG9uIHRoZSBhcmd1bWVudCBiZWZvcmUgcmVtYWluaW5nIHN0ZXBz
LgotICAgIGludCBzaWduaWZpY2FudEZpZ3VyZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0lu
dGVnZXIoZXhlYykpOworICAgIGludCBzaWduaWZpY2FudEZpZ3VyZXMgPSBzdGF0aWNfY2FzdDxp
bnQ+KGFyZy50b0ludGVnZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmluaXR5LgpAQCAtNDgwLDcg
KzQ4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Q
cmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChz
aWduaWZpY2FudEZpZ3VyZXMgPCAxIHx8IHNpZ25pZmljYW50RmlndXJlcyA+IDEwMCkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9QcmVjaXNpb24oKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50
IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMDAiX3MpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVkUHJlY2lzaW9uKHgs
IHNpZ25pZmljYW50RmlndXJlcywgS2VlcFRyYWlsaW5nWmVyb3MpKSk7CiB9CkBAIC01NTMsNTAg
KzU1Myw0OSBAQCBKU1N0cmluZyogbnVtYmVyVG9TdHJpbmcoVk0mIHZtLCBkb3VibGUgZG91Ymxl
VmFsdWUsIGludDMyX3QgcmFkaXgpCiAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW50ZXJuYWwo
dm0sIGRvdWJsZVZhbHVlLCByYWRpeCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsK
LSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpLCBkb3VibGVWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3Ioc3RhdGUsIHNjb3Bl
LCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLCBkb3VibGVWYWx1ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9U
aGlzTnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAKLSAgICBhdXRvIHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVudChzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBzY29wZSk7CisgICAgYXV0byByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29w
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlclRvU3RyaW5nSW50ZXJuYWwodm0sIGRv
dWJsZVZhbHVlLCByYWRpeCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAg
aWYgKCF0b1RoaXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CiAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKLSAgICBu
dW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKmV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVt
YmVyRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpleGVjLCB4KSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpj
YWxsRnJhbWUsIHgpKSk7CiAjZWxzZQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoeCkudG9TdHJpbmcoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoeCkudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAjZW5kaWYKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRvVGhpc051bWJlcih2
bSwgdGhpc1ZhbHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJv
cihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDI5
ZTU1YzVlYjM0ZGEyNWQ2YmFmYTVlOTE5YjAyM2QzYTEzNDg1M2YuLjc5N2EzY2IwODhkZGFhNGU2
YTEyY2QwOGQ3OWNlZjg0NTIzZmVkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlclByb3RvdHlwZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE51bWJlclBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewogICAgIE51bWJlclByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiBKU1N0cmluZyogaW50MzJUb1N0cmluZyhWTSYsIGludDMyX3QgdmFsdWUsIGludDMyX3Qg
cmFkaXgpOwogSlNTdHJpbmcqIGludDUyVG9TdHJpbmcoVk0mLCBpbnQ2NF90IHZhbHVlLCBpbnQz
Ml90IHJhZGl4KTsKIEpTU3RyaW5nKiBudW1iZXJUb1N0cmluZyhWTSYsIGRvdWJsZSB2YWx1ZSwg
aW50MzJfdCByYWRpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODg0ZDlmZmY0MmRkNTY3ZWRlN2JiM2I2NDc5MTU4
MzkwYjNhYTZiYi4uOTRlY2FiMzdmOTY0NmQxNWRhNWViMGZiOGMyNTkxZjk2YzUyNDUwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcApAQCAtNDAsMjEgKzQwLDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
RnJlZXplKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
RXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFBy
b3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNl
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50
RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9ySXNGcm96ZW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JJcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTkzLDgg
KzkzLDggQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogT2JqZWN0Q29uc3RydWN0
b3I6Ok9iamVjdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxPYmplY3RDb25zdHJ1Y3Rvciwg
Y29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKQpAQCAtMTE1LDExICsxMTUsMTAgQEAgdm9p
ZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBPYmoKIH0KIAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0p
Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVj
dCogY29uc3RydWN0T2JqZWN0V2l0aE5ld1RhcmdldChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0g
anNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG9iamVjdENvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IFdlIG5lZWQgdG8gY2hlY2sgbmV3VGFyZ2V0IGNvbmRpdGlvbiBpbiB0aGlzIGNhbGxlciBzaWRl
IGluc3RlYWQgb2YgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUgc2lk
ZS4KQEAgLTE0Myw0MyArMTQyLDQzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBj
b25zdHJ1Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1RhcmdlCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcmcudG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhP
YmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9i
amVjdChleGVjLCBKU1ZhbHVlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIEpTVmFsdWUo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldFBy
b3RvdHlwZSh2bSwgY2FsbEZyYW1lKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgb2JqZWN0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iamVjdFZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc2V0
IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfcyk7CiAKLSAgICBKU1ZhbHVlIHByb3Rv
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFw
cm90b1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgIlByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOwogCi0gICAg
SlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBzaG91
bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmpl
Y3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOworICAgIGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0s
IGNhbGxGcmFtZSwgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlRfVU5VU0VEKGRpZFNldFByb3RvdHlwZSwgc2NvcGUuZXhjZXB0aW9uKCkgfHwg
ZGlkU2V0UHJvdG90eXBlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVl
KTsKIH0KQEAgLTIzMiw2NCArMjMxLDY0IEBAIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iCiAgICAg
cmV0dXJuIGRlc2NyaXB0b3JzOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9w
ZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGNhbGxGcmFtZSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+
YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVz
Y3JpcHRvcnMoZXhlYywgb2JqZWN0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
cyhjYWxsRnJhbWUsIG9iamVjdCkpKTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRp
b24gY2FjaGUuCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVj
dCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5j
bHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShv
d25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmlu
Z3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKIC8vIEZJWE1FOiBV
c2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlTeW1ib2xzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7Cisg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9w
ZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxsRnJhbWUsIG9iamVjdCwgUHJv
cGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcktl
eXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvcktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93
blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0
LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNs
dWRlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yQXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIk9iamVjdC5hc3NpZ24gcmVxdWlyZXMgdGhhdCBp
bnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKLSAgICBKU09iamVj
dCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmplY3QuYXNzaWduIHJlcXVpcmVz
IHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7CisgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIEZJWE1FOiBFeHRlbmQg
dGhpcyBmb3Igbm9uIEpTRmluYWxPYmplY3QuIEZvciBleGFtcGxlLCB3ZSB3b3VsZCBsaWtlIHRv
IHVzZSB0aGlzIGZhc3QgcGF0aCBmb3IgZnVuY3Rpb24gb2JqZWN0cyB0b28uCkBAIC0yOTgsMTcg
KzI5NywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
QXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCA4PiBwcm9wZXJ0aWVzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsK
LSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5z
aWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGFyZ3NDb3VudDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgc291
cmNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgSlNWYWx1ZSBz
b3VyY2VWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSk7CiAgICAgICAgIGlm
IChzb3VyY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIEpTT2JqZWN0KiBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b09iamVjdChleGVjKTsK
KyAgICAgICAgSlNPYmplY3QqIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGNhbGxGcmFt
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAg
aWYgKHRhcmdldENhblBlcmZvcm1GYXN0UHV0KSB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+
c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLT5y
ZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoZXhlYyk7CisgICAgICAgICAgICAgICAgc291cmNlLT5y
ZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogCkBAIC0zNzQsMTIg
KzM3MywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
QXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdGFyZ2V0Q2FuUGVyZm9ybUZhc3RQdXQg
PSBmYWxzZTsKIAogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKHZtLCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1
ZGUpOwotICAgICAgICBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhzb3VyY2UsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSwgY2FsbEZyYW1lLCBwcm9wZXJ0aWVzLCBFbnVtZXJh
dGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGF1dG8gYXNzaWduID0gWyZd
IChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChzb3VyY2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5U2xvdChzb3VyY2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RUYWJsZSh2
bSktPmdldE93blByb3BlcnR5U2xvdChzb3VyY2UsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTM4OCwxMyArMzg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlOwogICAgICAgICAgICAgaWYgKExJS0VMWSghc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVj
dCgpKSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1l
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZhbHVl
ID0gc291cmNlLT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IHNvdXJjZS0+Z2V0KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBwdXRQcm9wZXJ0eVNsb3QodGFyZ2V0LCB0cnVlKTsKLSAgICAgICAgICAgIHRhcmdl
dC0+cHV0SW5saW5lKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7
CisgICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgICAgIH07CiAKICAgICAgICAgLy8gRmlyc3Qg
bG9vcCBpcyBmb3Igc3RyaW5ncy4gU2Vjb25kIGxvb3AgaXMgZm9yIHN5bWJvbHMgdG8ga2VlcCBz
dGFuZGFyZGl6ZWQgb3JkZXIgcmVxdWlyZW1lbnQgaW4gdGhlIHNwZWMuCkBAIC00MjYsMjggKzQy
NSwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNz
aWduKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1
ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvclZhbHVlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHRh
cmdldFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBh
cmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOwotICAgIEpTT2JqZWN0KiB0YXJn
ZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMgdGhhdCBp
bnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICBKU09iamVj
dCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNBcnJheSogdmFsdWVzID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICBKU0FycmF5KiB2YWx1ZXMgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXModm0s
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsK
LSAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQs
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSk7CisgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXModGFyZ2V0LCBjYWxsRnJhbWUsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBhdXRvIGFkZFZhbHVl
ID0gWyZdIChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRhcmdldCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blBy
b3BlcnR5KTsKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRhcmdldC0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdl
dE93blByb3BlcnR5U2xvdCh0YXJnZXQsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgaWYg
KCFoYXNQcm9wZXJ0eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1NiwxMiArNDU1LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgIGlmIChMSUtF
TFkoIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCi0gICAgICAgICAgICB2YWx1ZSA9
IHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHZhbHVlID0g
c2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHZhbHVlID0gdGFyZ2V0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgICAgIHZhbHVlID0gdGFyZ2V0LT5nZXQoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIHZhbHVl
cy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgdmFsdWUpOworICAgICAgICB2YWx1ZXMt
PnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgaW5kZXgrKywgdmFsdWUpOwogICAgIH07CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKQEAgLTU3NCwyNCArNTczLDI0IEBAIGJvb2wgdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5l
ZCBvbiBPYmplY3RzLiJfcyk7Ci0gICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFy
Z3VtZW50KDApKTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOworICAgIEpT
T2JqZWN0KiBvYmogPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGF1dG8gc3VjY2VzcyA9
IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9y
KTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlw
dG9yLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikgfHwgKCFkZXNj
cmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmos
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgb2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRydWUpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG9iaikpOwogfQogCkBAIC02NDEsMzggKzY0MCwzOCBAQCBzdGF0aWMgSlNWYWx1
ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNP
YmplY3QqIHBybwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmlu
ZWQgb24gT2JqZWN0cy4iX3MpOwotICAgIEpTT2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChl
eGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgSlNPYmplY3QqIHByb3BzID0gZXhlYy0+YXJndW1lbnQo
MSkudG9PYmplY3QoZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOworICAgIEpT
T2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAg
ICBKU09iamVjdCogcHJvcHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGNhbGxG
cmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm9w
cyk7CiAgICAgaWYgKFVOTElLRUxZKCFwcm9wcykpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRl
ZmluZVByb3BlcnRpZXMoZXhlYywgdGFyZ2V0T2JqLCBwcm9wcykpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGNhbGxGcmFt
ZSwgdGFyZ2V0T2JqLCBwcm9wcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5
IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUg
YW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKICAgICBKU09iamVjdCogbmV3T2JqZWN0ID0gcHJvdG8u
aXNPYmplY3QoKQotICAgICAgICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0
KHByb3RvKSkKLSAgICAgICAgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAg
aWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCisgICAgICAgID8gY29uc3RydWN0
RW1wdHlPYmplY3QoY2FsbEZyYW1lLCBhc09iamVjdChwcm90bykpCisgICAgICAgIDogY29uc3Ry
dWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwotICAgIEpT
T2JqZWN0KiBwcm9wZXJ0aWVzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9PYmplY3Qo
ZXhlYyk7CisgICAgSlNPYmplY3QqIHByb3BlcnRpZXMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRlZmluZVByb3BlcnRpZXMoZXhlYywgbmV3T2JqZWN0LCBwcm9wZXJ0aWVzKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRp
ZXMoY2FsbEZyYW1lLCBuZXdPYmplY3QsIHByb3BlcnRpZXMpKSk7CiB9CiAKIGVudW0gY2xhc3Mg
SW50ZWdyaXR5TGV2ZWwgewpAQCAtNzkwLDE3ICs3ODksMTcgQEAgSlNPYmplY3QqIG9iamVjdENv
bnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0
dXJuIG9iamVjdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4g
Ty4KLSAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2Jq
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvclNlYWwoZXhlYywgYXNP
YmplY3Qob2JqKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShvYmplY3RDb25zdHJ1Y3RvclNlYWwoY2FsbEZyYW1lLCBhc09iamVjdChvYmopKSkpOwog
fQogCiBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0KQpAQCAtODIyLDM2ICs4MjEsMzYgQEAgSlNPYmplY3QqIG9iamVjdENv
bnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAgICBy
ZXR1cm4gb2JqZWN0OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgcmV0
dXJuIE8uCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwotICAgIEpTT2JqZWN0KiByZXN1
bHQgPSBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShleGVjLCBhc09iamVjdChvYmopKTsKKyAgICBK
U09iamVjdCogcmVzdWx0ID0gb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoY2FsbEZyYW1lLCBhc09i
amVjdChvYmopKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICghYXJndW1lbnQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhcmd1bWVudCk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGFyZ3Vt
ZW50KTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2Jq
ZWN0LCBleGVjKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lv
bnMob2JqZWN0LCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
U2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc1NlYWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCwgcmV0dXJuIHRydWUuCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmou
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1
ZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwpAQCAtODYxLDE1ICs4
NjAsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
U2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5pc1NlYWxlZCh2bSkpKTsKIAogICAgIC8vIDIuIFJldHVybiA/IFRl
c3RJbnRlZ3JpdHlMZXZlbChPLCAic2VhbGVkIikuCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4odGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGV4
ZWMsIHZtLCBvYmplY3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGNhbGxGcmFtZSwgdm0s
IG9iamVjdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIC8vIDEuIElmIFR5cGUoTykg
aXMgbm90IE9iamVjdCwgcmV0dXJuIHRydWUuCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4odHJ1ZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwpAQCAt
ODc5LDI1ICs4NzgsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5pc0Zyb3plbih2bSkpKTsKIAogICAgIC8vIDIuIFJl
dHVybiA/IFRlc3RJbnRlZ3JpdHlMZXZlbChPLCAiZnJvemVuIikuCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpG
cm96ZW4+KGV4ZWMsIHZtLCBvYmplY3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpGcm96ZW4+KGNhbGxG
cmFtZSwgdm0sIG9iamVjdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG9iaiA9IGV4
ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChv
YmopOwotICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7
CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzRXh0ZW5zaWJsZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBleGVjLT5hcmd1bWVudCgxKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihzYW1lVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFt
ZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmlu
ZGV4IDNlMDY3MjRjZWFjMzhhMTllODIyNzZiNGYzNzBmMDg1YmE1MWE3YmQuLjZlZjI0MzgzYTNh
ZDRmZGE3ZjE5MGRhMDcyM2IxZTIzYjJjZTJmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMjYsMTEgKzI2LDExIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvcnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
S2V5cyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlT
eW1ib2xzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvcktleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY2xhc3MgT2Jq
ZWN0UHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcAppbmRleCAwMDA4NjZmZGU5ZDFjMjkxYTFmMmViMGM3Y2EzMWRjNWM0
ZmU1ZjQ4Li5lNWE5ZGFmZGUyZDcwNzc1NzA4N2Y1NGE2MDdhOTQ5NDUzMDljMjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAg
LTMzLDE1ICszMywxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blBy
b3BlcnR5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
RGVmaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
TG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KE9iamVjdFByb3RvdHlwZSk7CiAKQEAgLTc4LDI0ICs3OCwyNCBAQCBPYmplY3RQcm90b3R5cGUq
IE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBKU09iamVjdCogdmFs
dWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwor
ICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwog
ICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlT2JqKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CisgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC0xMDMsMzQgKzEwMywzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgSGFz
T3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlDYWNoZSA9IHZtLmVuc3VyZUhhc093blBy
b3BlcnR5Q2FjaGUoKTsKICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJv
cGVydHlDYWNoZS0+Z2V0KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBBU1NF
UlQoKnJlc3VsdCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5h
bWUpKTsKKyAgICAgICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVy
dHkoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oKnJlc3Vs
dCkpOwogICAgIH0KIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYm9vbCByZXN1
bHQgPSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIGJvb2wgcmVzdWx0ID0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoY2FsbEZyYW1l
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaGFzT3duUHJvcGVydHlDYWNoZS0+dHJ5QWRkKHZtLCBz
bG90LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2Yo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJh
bWUsIFN0cmljdE1vZGUpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFs
dWUgdiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBleGVj
KTsKKyAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+Z2V0
UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTEzOCwyNSArMTM4
LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90
b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgICAgICBpZiAodiA9PSB0aGlzT2JqKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICB2
ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgIHYgPSBhc09i
amVjdCh2KS0+Z2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVm
aW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09i
amVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBK
U1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHZtLCBnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJpbnZh
bGlkIGdldHRlciB1c2FnZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJpbnZhbGlkIGdldHRlciB1c2FnZSJfcyk7CiAKLSAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXko
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwpAQCAtMTY2LDI1ICsx
NjYsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxs
RnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHNldCA9IGV4
ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEodm0sIHNldCwg
Y2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgImludmFsaWQgc2V0dGVyIHVzYWdlIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImludmFsaWQgc2V0dGVyIHVz
YWdlIl9zKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2NyaXB0b3I7CkBAIC0xOTQsMjQgKzE5NCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBi
b29sIHNob3VsZFRocm93ID0gdHJ1ZTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKKyAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGNhbGxGcmFt
ZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2Rl
KS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAgICBi
b29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdldFBy
b3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5KTsKICAgICBpZiAoaGFz
UHJvcGVydHkpIHsKICAgICAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKSB7CkBAIC0yMjEsNyAr
MjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc2xvdC5hdHRyaWJ1dGVzKCkg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJh
c2UoKSk7Ci0gICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAgIGlm
IChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0
b3IuZ2V0dGVyUHJlc2VudCgpID8gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3IuZ2V0dGVyKCkp
IDogSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjI5LDE5ICsyMjksMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNMb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5
S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICBib29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90
KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwogICAgIGlmIChoYXNQcm9wZXJ0eSkg
ewogICAgICAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkpIHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikgewogICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlw
dG9yIGRlc2NyaXB0b3I7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpKTsKLSAg
ICAgICAgICAgIGlmIChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQorICAgICAgICAgICAgaWYgKHNsb3Quc2xv
dEJhc2UoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5zZXR0ZXJQ
cmVzZW50KCkgPyBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5zZXR0ZXIoKSkgOiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTksNjQgKzI1
OSw2NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1
cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlEZXNj
cmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgYm9vbCBlbnVtZXJhYmxlID0gdGhpc09iamVjdC0+Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYg
ZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CisgICAgYm9vbCBlbnVtZXJhYmxlID0gdGhpc09iamVj
dC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihlbnVtZXJhYmxlKSk7CiB9CiAKIC8vIDE1LjIuNC4zIE9iamVjdC5w
cm90b3R5cGUudG9Mb2NhbGVTdHJpbmcoKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBWIGJl
IHRoZSB0aGlzIHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAg
ICAgLy8gMi4gSW52b2tlKFYsICJ0b1N0cmluZyIpCiAKICAgICAvLyBMZXQgTyBiZSB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyB0aGUgYXJn
dW1lbnQuCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZXhlYywgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1
ZS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8g
TGV0IHRvU3RyaW5nIGJlIHRoZSBPLltbR2V0XV0oInRvU3RyaW5nIiwgVikKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwotICAgIGJvb2wgaGFzUHJvcGVydHkgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgc2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
IHx8ICFoYXNQcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSB0b1N0cmluZyA9IGhhc1Byb3BlcnR5ID8g
c2xvdC5nZXRWYWx1ZShleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykgOiBqc1VuZGVm
aW5lZCgpOworICAgIEpTVmFsdWUgdG9TdHJpbmcgPSBoYXNQcm9wZXJ0eSA/IHNsb3QuZ2V0VmFs
dWUoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykgOiBqc1VuZGVmaW5lZCgp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgLy8gSWYgSXNDYWxsYWJsZSh0b1N0cmluZykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKHZtLCB0b1N0cmluZywgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAogICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1d
IGludGVybmFsIG1ldGhvZCBvZiB0b1N0cmluZyBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFuZCBu
byBhcmd1bWVudHMuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY2FsbChleGVjLCB0b1N0cmluZywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsICp2
bS5lbXB0eUxpc3QpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChjYWxsRnJhbWUsIHRvU3RyaW5nLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RN
b2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0
cmluZ3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVj
dFN0cmluZygpKTsKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChj
YWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzI2LDI2ICszMjYsMjYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAogICAgIFByb3Bl
cnR5TmFtZSB0b1N0cmluZ1RhZ1N5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCB0b1N0cmluZ1RhZ1N5bWJvbCwgWyZdIChi
b29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU2xvdCkgLT4gSlNWYWx1ZSB7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgdG9TdHJpbmdUYWdTeW1ib2wsIFsmXSAoYm9vbCBm
b3VuZCwgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1Nsb3QpIC0+IEpTVmFsdWUgewogICAgICAg
ICBpZiAoZm91bmQpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgc3RyaW5nVGFnID0gdG9TdHJpbmdU
YWdTbG90LmdldFZhbHVlKGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sKTsKKyAgICAgICAgICAgIEpT
VmFsdWUgc3RyaW5nVGFnID0gdG9TdHJpbmdUYWdTbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgdG9T
dHJpbmdUYWdTeW1ib2wpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgICAgIGlmIChzdHJpbmdUYWcuaXNTdHJpbmcoKSkgewotICAgICAgICAg
ICAgICAgIEpTU3RyaW5nKiByZXN1bHQgPSBqc1N0cmluZyhleGVjLCB2bS5zbWFsbFN0cmluZ3Mu
b2JqZWN0U3RyaW5nU3RhcnQoKSwgYXNTdHJpbmcoc3RyaW5nVGFnKSwgdm0uc21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZygnXScpKTsKKyAgICAgICAgICAgICAgICBKU1N0cmluZyog
cmVzdWx0ID0ganNTdHJpbmcoY2FsbEZyYW1lLCB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5n
U3RhcnQoKSwgYXNTdHJpbmcoc3RyaW5nVGFnKSwgdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJh
Y3RlclN0cmluZygnXScpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNl
dE9iamVjdFRvU3RyaW5nVmFsdWUoZXhlYywgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsK
KyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0
cmluZ1ZhbHVlKGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgU3RyaW5nIHRhZyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9TdHJpbmdO
YW1lKHRoaXNPYmplY3QsIGV4ZWMpOworICAgICAgICBTdHJpbmcgdGFnID0gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT50b1N0cmluZ05hbWUodGhpc09iamVjdCwgY2FsbEZyYW1lKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgU3RyaW5nIG5l
d1N0cmluZyA9IHRyeU1ha2VTdHJpbmcoIltvYmplY3QgIiwgV1RGTW92ZSh0YWcpLCAiXSIpOwog
ICAgICAgICBpZiAoIW5ld1N0cmluZykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgbmV3U3RyaW5nKTsKLSAgICAgICAgdGhpc09iamVjdC0+c3RydWN0
dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLCB2bSwgcmVzdWx0LCB0b1N0cmlu
Z1RhZ1Nsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RU
b1N0cmluZ1ZhbHVlKGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAppbmRleCBmMjc4ODZiYjI2NjY2NTA3Mzc2
MDYxY2JkMDYyMmZmMjJhZTRiMjMwLi5iOWFhNjQ5ZjYwYzA1MjlhMDYwNTU2ZTZlMjFkM2NjYzM3
NzM0M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaApAQCAtNDUsNiArNDUsNiBAQCBjbGFzcyBPYmplY3RQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgT2JqZWN0UHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMjc3Mzk1NWFkOTk1YjZmZGM5NDgxMjM2OGU5NDA5M2ZmZWU0Njk5MS4uNDU4NmMxMzBkM2E2
OWE4YTU3OGUxZDAwMjM4MmU2NTEzOGVkZGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ4LDMwICs0OCwzMCBAQCBQ
cm94eUNvbnN0cnVjdG9yKiBQcm94eUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBQcm94eUNvbnN0cnVjdG9yOjpQcm94eUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxQcm94eSwgY29uc3RydWN0
UHJveHlPYmplY3QpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VSZXZvY2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAy
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5LnJl
dm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0
IGFuZCB0aGUgaGFuZGxlciJfcyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
IDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0
aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlciJfcyk7CiAKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7
CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdz
LmF0KDApOwogICAgIEpTVmFsdWUgaGFuZGxlciA9IGFyZ3MuYXQoMSk7Ci0gICAgUHJveHlPYmpl
Y3QqIHByb3h5ID0gUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHRhcmdldCwgaGFuZGxlcik7CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0gUHJv
eHlPYmplY3Q6OmNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVy
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBQcm94eVJldm9rZSogcmV2b2tlID0gUHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5wcm94eVJldm9rZVN0cnVjdHVyZSgpLCBwcm94eSk7CisgICAg
UHJveHlSZXZva2UqIHJldm9rZSA9IFByb3h5UmV2b2tlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+cHJveHlSZXZva2VTdHJ1Y3R1cmUoKSwgcHJveHkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRp
Zmllcih2bSwgInByb3h5IiksIHByb3h5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6Ok5vbmUpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgbWFrZUlkZW50aWZp
ZXIodm0sICJyZXZva2UiKSwgcmV2b2tlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6Ok5vbmUpKTsKQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJveHlS
ZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJQcm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25s
eSBiZSBjYWxsZWQiX3MpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlByb3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBv
bmx5IGJlIGNhbGxlZCJfcyk7CiB9CiAKIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQpAQCAtOTIsMjIgKzkyLDIyIEBAIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCoKICAgICBwdXRE
aXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAicmV2b2NhYmxlIl9zLCBtYWtlUmV2b2NhYmxlUHJv
eHksIE5vSW50cmluc2ljLCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcikpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKLSAgICBpZiAoZXhlYy0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJuZXcudGFyZ2V0
IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBp
ZiAoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAibmV3LnRhcmdldCBvZiBQcm94eSBj
b25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiX3MpOwogCi0gICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgdGFyZ2V0
ID0gYXJncy5hdCgwKTsKICAgICBKU1ZhbHVlIGhhbmRsZXIgPSBhcmdzLmF0KDEpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFByb3h5T2JqZWN0OjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0YXJnZXQsIGhhbmRsZXIpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmpl
Y3Q6OmNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5IikpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm94eSIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXgg
ZTM1ZDQ5NWFiYzE2YjEwYzM3NjViMTk3ZGQwMmQxYzNkYjJmMjY0MC4uOGJlODE4Mjc5OTNiMjEx
NGQxZjE1YjA3Mzc5N2M3MTViYzc5NDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNTExLDQyICs1MTEsNDIgQEAgYm9vbCBQcm94eU9i
amVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW0KICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleENvbW1vbihleGVj
LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVBy
b3h5Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBOT19UQUlMX0NBTExTKCk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VT
b2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAgICBQcm94eU9iamVjdCogcHJv
eHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBQcm94eU9i
amVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
OwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAo
aGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgc19wcm94eUFscmVhZHlS
ZXZva2VkRXJyb3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpT
T2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJhcHBseSIp
LCAiJ2FwcGx5JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFi
bGUiX3MpOworICAgIEpTVmFsdWUgYXBwbHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoY2Fs
bEZyYW1lLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiYXBwbHkiKSwg
IidhcHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxl
Il9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJveHktPnRhcmdldCgpOwogICAgIGlmIChhcHBseU1l
dGhvZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0
YSh0YXJnZXQsIGNhbGxEYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBleGVjLT50
aGlzVmFsdWUoKSwgQXJnTGlzdChleGVjKSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIHRhcmdldCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7
CiAgICAgfQogCi0gICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBz
dGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoZXhl
YykpOworICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCBz
dGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoY2Fs
bEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5h
cHBlbmQodGFyZ2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhleGVjLCBFQ01BTW9kZTo6U3RyaWN0TW9kZSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBFQ01BTW9kZTo6U3RyaWN0
TW9kZSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJn
dW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlPYmplY3Q6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtNTYyLDQ1
ICs1NjIsNDUgQEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6OmdldENhbGxEYXRhKEpTQ2VsbCogY2Vs
bCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBl
cmZvcm1Qcm94eUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBOT19UQUlMX0NBTExTKCk7CiAKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1Nh
ZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAgICBQcm94
eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5qc0NhbGxlZSgpKTsK
KyAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIo
KTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVy
ID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9
IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlm
aWVyKHZtLCAiY29uc3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3Mg
aGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgY29uc3RydWN0TWV0
aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGNhbGxGcmFtZSwgY2FsbERhdGEsIGNhbGxUeXBlLCBt
YWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2Yg
YSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0
ID0gcHJveHktPnRhcmdldCgpOwogICAgIGlmIChjb25zdHJ1Y3RNZXRob2QuaXNVbmRlZmluZWQo
KSkgewogICAgICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgICAgIENvbnN0
cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25z
dHJ1Y3REYXRhKHRhcmdldCwgY29uc3RydWN0RGF0YSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXQs
IGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIEFyZ0xpc3QoZXhlYyksIGV4ZWMtPm5ld1Rh
cmdldCgpKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEsIEFyZ0xpc3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpKTsKICAg
ICB9CiAKLSAgICBKU0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRp
Y19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7
CisgICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHN0YXRp
Y19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJh
bWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZCh0YXJnZXQpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwotICAgIGFyZ3VtZW50
cy5hcHBlbmQoZXhlYy0+bmV3VGFyZ2V0KCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgp
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgY29uc3RydWN0TWV0aG9kLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBjYWxsKGNhbGxGcmFtZSwgY29uc3RydWN0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhh
bmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVy
J3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVzdWx0IGZyb20gUHJv
eHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9zKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAppbmRleCBmODc1ZjY1ZDQ1MTM5NDk3
MDY0ZDkzNmE5NzRhNzlkZjYwOGVlYTRlLi43MDY2MmMwZThkOGMxNjY3YzBlNWIwNmUzZmEzYmVj
NGZkOTdhMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eVJldm9rZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZv
a2UuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFByb3h5UmV2b2tlKiBQcm94eVJldm9rZTo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3h5T2JqZWN0KiBwcm94CiAgICAgcmV0
dXJuIHJldm9rZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVy
Zm9ybVByb3h5UmV2b2tlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcGVyZm9ybVByb3h5UmV2b2tlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIFByb3h5UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBwZXJmb3JtUHJveHlSZXZva2UsIG51bGxwdHIp
CkBAIC01NywxNSArNTcsMTUgQEAgdm9pZCBQcm94eVJldm9rZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBjb25zdCBjaGFyKiBuYW1lLCBQcm94eU9iamVjdCogcHJveHkpCiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVBy
b3h5UmV2b2tlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpzQ2FzdDxQcm94eVJldm9r
ZSo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpz
Q2FzdDxQcm94eVJldm9rZSo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBw
cm94eVZhbHVlID0gcHJveHlSZXZva2UtPnByb3h5KCk7CiAgICAgaWYgKHByb3h5VmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
ICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihwcm94eVZhbHVl
KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBwcm94eS0+cmV2b2tlKHZtKTsKICAgICBwcm94eVJldm9rZS0+c2V0UHJveHlU
b051bGwodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4
IDg1NjA5YjNjMGZlODlhNjRkYmMzOGIxMzUyMWEwMGFhZjhhMjk4ZjAuLjg0NmQyOTM5MzJiNGYz
ZmU4MmQ3MDcxZTE0YmEwZGNiOGZiMjc1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC0zNCwxNiArMzQsMTYgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2li
bGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVm
aW5lUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQ
cm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdE93bktleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5z
aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNl
dFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODcs
NTkgKzg3LDU5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCopCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuY29uc3RydWN0Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YSBjb25zdHJ1Y3RvciJfcykpOwogCiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwog
ICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZTsKICAgICBpZiAoIXRhcmdldC5pc0NvbnN0
cnVjdG9yKHZtLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29u
c3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhIGNvbnN0cnVjdG9yIl9zKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKLSAgICAgICAgbmV3VGFyZ2V0
ID0gZXhlYy0+YXJndW1lbnQoMik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDMpIHsKKyAgICAgICAgbmV3VGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAg
ICAgICAgaWYgKCFuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5j
b25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYg
cHJlc2VudCJfcykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhl
IHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCJfcykpOwogICAgIH0K
IAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBKU09iamVjdCogYXJn
dW1lbnRzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVu
dCgxKSk7CisgICAgSlNPYmplY3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKCFhcmd1bWVudHNP
YmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50
IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0
aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgY3JlYXRlTGlzdEZy
b21BcnJheUxpa2UoZXhlYywgYXJndW1lbnRzT2JqZWN0LCBSdW50aW1lVHlwZU1hc2tBbGxUeXBl
cywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCAiVGhpcyBlcnJvciBtdXN0IG5v
dCBiZSByYWlzZWQiX3MsIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wg
eworICAgIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGNhbGxGcmFtZSwgYXJndW1lbnRzT2JqZWN0
LCBSdW50aW1lVHlwZU1hc2tBbGxUeXBlcywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2Vk
Il9zLCAiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiX3MsIFsmXSAoSlNWYWx1ZSB2YWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIChhcmd1bWVudHMub3ZlcmZsb3dDaGVja05vdE5lZWRlZCgpLCBlbmNvZGVkSlNW
YWx1ZSgpKSk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpKSB7
Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29u
c3RydWN0RGF0YSwgYXJndW1lbnRzLCBuZXdUYXJnZXQpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0LCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudHMsIG5ld1RhcmdldCkpKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVw
cm9wZXJ0eQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5l
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0
YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVj
dC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0
Il9zKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwot
ICAgIGJvb2wgc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDIpLCBkZXNjcmlwdG9yKTsKKyAgICBib29sIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3Jp
cHRvcihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOwogICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgIGlm
IChVTkxJS0VMWSghc3VjY2VzcykpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpA
QCAtMTQ5LDE0MSArMTQ5LDE0MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gUmVmbGVjdC5k
ZWZpbmVQcm9wZXJ0eSBzaG91bGQgbm90IHRocm93IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93
blByb3BlcnR5IG9wZXJhdGlvbiBmYWlscy4KICAgICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7
CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0T2JqZWN0LCBjYWxs
RnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSkpOwogfQogCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5nZXQgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZs
ZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAK
LSAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUg
cmVjZWl2ZXIgPSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKQot
ICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIGlmIChjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSA+PSAzKQorICAgICAgICByZWNlaXZlciA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMik7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0LmdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0Lmdl
dChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgYXV0byBrZXkgPSBleGVjLT5h
cmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8ga2V5ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0cHJv
dG90eXBlb2YKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0YXJnZXQpLT5nZXRQcm90b3R5cGUo
dm0sIGV4ZWMpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlwZSh2
bSwgY2FsbEZyYW1lKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIv
I3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJS
ZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zKSk7CiAKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IGFzT2JqZWN0KHRhcmdldCktPmlz
RXh0ZW5zaWJsZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IGFzT2JqZWN0KHRhcmdl
dCktPmlzRXh0ZW5zaWJsZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGlzRXh0ZW5zaWJsZSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1yZWZsZWN0Lm93bmtleXMKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAo
IXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywganNDYXN0PEpTT2JqZWN0
Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFt
ZSwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0Fu
ZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lv
bnMKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRl
bnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVz
IHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0
Il9zKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgYm9v
bCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2Jq
ZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
cmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLXJlZmxlY3Quc2V0Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3RTZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1l
bnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSByZWNl
aXZlciA9IHRhcmdldDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDQpCi0gICAg
ICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1lbnQoMyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgzKTsKIAogICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFw
cGVuIGluIHN0cmljdCBtb2RlLgogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxz
ZTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldE9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudCgyKSwgc2xvdCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5
TmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgc2xvdCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNl
dFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0
YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVu
dCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQo
MSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1l
bnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIl9zKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Quc2V0
UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2Jq
ZWN0IG9yIG51bGwiX3MpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwotICAgIGJvb2wg
ZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvLCBz
aG91bGRUaHJvd0lmQ2FudFNldCk7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3Qt
PnNldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lLCBwcm90bywgc2hvdWxkVGhyb3dJZkNhbnRTZXQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRpZFNldFByb3RvdHlwZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGUzYmM4OTNmYjNjMmNhMGZkMDk5MGVmZTIwMTJkNTIwMzgyMjk5YzkuLjgzZGMx
NTczMWE5NDUxYmMzNmFiNzE2Y2FjYmIyYjM5MTJkZTEyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTc4LDggKzc4
LDggQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUmVnRXhwQ29uc3RydWN0b3I6
OlJlZ0V4cENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxSZWdFeHBDb25zdHJ1Y3RvciwgY29u
c3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKQpAQCAtMTAwLDUwICsxMDAsNDMgQEAgdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSwKIHRlbXBsYXRlPGludCBOPgogRW5jb2RlZEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGV4ZWMs
IGdsb2JhbE9iamVjdCwgTikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
cklucHV0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxS
ZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qo
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFs
RGF0YSgpLmlucHV0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11
bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9i
YWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9i
amVjdCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGdsb2JhbE9iamVj
dC0+cmVnRXhwR2xvYmFsRGF0YSgpLm11bHRpbGluZSgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVj
dG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3Iq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0QmFj
a3JlZihleGVjLCBnbG9iYWxPYmplY3QsIDApKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhw
Q29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRMYXN0UGFyZW4o
ZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yTGVmdENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRMZWZ0Q29udGV4dChleGVj
LCBnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JS
aWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRSaWdodENvbnRleHQoZXhlYywg
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKQEAgLTE1NSw3ICsxNDgsNyBAQCBib29sIHNldFJlZ0V4cENv
bnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZQogICAgICAgICBhdXRvKiBzdHJpbmcgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRv
U3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuc2V0SW5wdXQoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzAsNyAr
MTYzLDcgQEAgYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICAgICAgYm9vbCBtdWx0aWxpbmUg
PSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCh2bSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1
Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFs
RGF0YSgpLnNldE11bHRpbGluZShtdWx0aWxpbmUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0yNzcsMjQgKzI3MCwyMyBAQCBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQQogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVnRXhwQ3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bmV3VGFyZ2V0LCBwYXR0ZXJuQXJnLCBmbGFnc0FyZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIEpTVmFs
dWUgcGF0dGVybkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgZmxhZ3NBcmcg
PSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cENy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHBhdHRlcm5BcmcsIGZsYWdz
QXJnKSk7CisgICAgSlNWYWx1ZSBwYXR0ZXJuQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIGZsYWdzQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cENyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwg
anNVbmRlZmluZWQoKSwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoZXhlYywganNDYXN0PEludGVybmFs
RnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBh
cmdzLCBleGVjLT5qc0NhbGxlZSgpLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xpc3Qg
YXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVn
RXhwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCks
IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBB
cmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RS
ZWdFeHAoZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBleGVjLT5qc0NhbGxlZSgpKSk7CisgICAg
QXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RSZWdFeHAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGNhbGxGcmFtZS0+anND
YWxsZWUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IDJlYjJjNjkzNDg1OGMx
NmZmZjIyMzk1MmM1OGY3Mjk3ZjUyN2U2NTYuLjk3NmU3YjZhZjgzYzE1MzBjNTIwMzQyN2E4Mzlk
NTNlMGFjZDFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaApAQCAtNzUsNiArNzUsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNS
ZWdFeHAoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJu
IG9iamVjdC0+aW5oZXJpdHM8UmVnRXhwT2JqZWN0Pih2bSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZXNTcGVjUmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4ZDBlNWE5ZjBkNTcwNTlh
MmY0YmYxNjUzMzdlYmEwY2ViM2YxMWM5Li40YjhhZjA1YmU3NDUwNjNmNzAzN2Q1NzQzOGU3ZWYz
NjUyZDVhY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKQEAgLTQyLDE3ICs0MiwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJJZ25vcmVDYXNlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0
dGVyU3RpY2t5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZs
YWdzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9GdW5jRXhlYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xv
YmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvR2V0dGVyTXVsdGlsaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0
dGVyVW5pY29kZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29u
c3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHBQcm90
b3R5cGUpIH07CiAKQEAgLTg2LDgzICs4Niw4MyBAQCB2b2lkIFJlZ0V4cFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y1Rlc3RGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmdPck51bGwoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFzdHJpbmcpOwogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnRlc3Qo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnRl
c3QoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHN0cmluZykpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBP
YmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQnVpbHRpbiBSZWdFeHAg
ZXhlYyBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7Ci0gICAgSlNTdHJp
bmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQnVpbHRpbiBS
ZWdFeHAgZXhlYyBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CisgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwo
Y2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXN0cmluZyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUocmVnZXhwLT5leGVjKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
c3RyaW5nKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHJlZ2V4cC0+ZXhlYyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgc3RyaW5nKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y01hdGNoRmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwT2Jq
ZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Nhc3Q8
SlNTdHJpbmcqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUmVnRXhwT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPnJlZ0V4cCgpLT5n
bG9iYWwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5leGVj
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5tYXRjaEdsb2JhbChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRoaXNPYmplY3QtPmV4ZWMoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHN0cmluZykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bWF0Y2hHbG9iYWwoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIHN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNSZWdFeHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9i
amVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1JlZ0V4cCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBSZWdFeHAqIHJl
Z0V4cDsKLSAgICBKU1ZhbHVlIGFyZzAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVl
IGFyZzEgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGFyZzAgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
CiAgICAgCiAgICAgaWYgKGF1dG8qIHJlZ0V4cE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhw
T2JqZWN0Kj4odm0sIGFyZzApKSB7CiAgICAgICAgIGlmICghYXJnMS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJDYW5ub3Qg
c3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiJf
cyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20g
YW5vdGhlci4iX3MpOwogICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBwYXR0ZXJuID0gYXJnMC5pc1VuZGVmaW5lZCgp
ID8gZW1wdHlTdHJpbmcoKSA6IGFyZzAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIFN0cmlu
ZyBwYXR0ZXJuID0gYXJnMC5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGFyZzAudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAgYXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmlu
ZWQoKSA/IG1ha2VPcHRpb25hbChPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpw
YXJzZUZsYWdzKGFyZzEudG9XVEZTdHJpbmcoZXhlYykpOworICAgICAgICBhdXRvIGZsYWdzID0g
YXJnMS5pc1VuZGVmaW5lZCgpID8gbWFrZU9wdGlvbmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4g
eyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmluZyhjYWxsRnJhbWUpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIGlmICghZmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBS
ZWdFeHAgY29uc3RydWN0b3IuIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwgIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcykpOwogCiAgICAgICAgIHJl
Z0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBmbGFncy52YWx1ZSgpKTsKICAgICB9
CiAKICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIHNjb3BlLCByZWdFeHAtPmVycm9yVG9UaHJvdyhleGVjKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3co
Y2FsbEZyYW1lKSk7CiAKICAgICB0aGlzUmVnRXhwLT5zZXRSZWdFeHAodm0sIHJlZ0V4cCk7CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHRoaXNSZWdFeHAtPnNldExhc3RJbmRleChleGVjLCAw
KTsKKyAgICB0aGlzUmVnRXhwLT5zZXRMYXN0SW5kZXgoY2FsbEZyYW1lLCAwKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNSZWdFeHApOwogfQogCkBAIC0yMDcsMTQxICsyMDcsMTQx
IEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogcmVnZXhwKQogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIFN0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAg
ICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAK
LSAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPnNvdXJjZSk7CisgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3Qt
PmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHNvdXJjZSA9
IHNvdXJjZVZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBzb3Vy
Y2VWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhp
c09iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKKyAgICBKU1ZhbHVl
IGZsYWdzVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVz
LT5mbGFncyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgU3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAg
ICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICcvJywgc291cmNlLCAnLycsIGZsYWdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZy
YW1lLCAnLycsIHNvdXJjZSwgJy8nLCBmbGFncykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhw
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAg
ICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
Lmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUg
UmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJl
Z0V4cCBvYmplY3QiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVD
YXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFy
ZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBl
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdF
eHAucHJvdG90eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJl
Z0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJN
dWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVs
dGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsK
ICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJl
Z0V4cCgpLT5tdWx0aWxpbmUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmRvdEFs
bCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhw
LnByb3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBv
YmplY3QiX3MpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZWdleHAtPnJlZ0V4cCgpLT5kb3RBbGwoKSkpOwogfQogICAgIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8
UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHAp
KSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJv
dG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBv
biBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5zdGlja3koKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
VW5pY29kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5
bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFByb3Rv
dHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUg
UmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBS
ZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KICAgICAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT51bmljb2RlKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZs
YWdzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJGbGFncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCJfcyk7CiAKLSAgICBhdXRvIGZsYWdz
ID0gZmxhZ3NTdHJpbmcoZXhlYywgYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgYXV0byBmbGFn
cyA9IGZsYWdzU3RyaW5nKGNhbGxGcmFtZSwgYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBmbGFncy5kYXRhKCkpKTsKQEAgLTQ1NCwzNyAr
NDU0LDM2IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSByZWdFeHBQcm90b0dldHRlclNvdXJjZUlu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZt
LCByZXN1bHQudG9TdHJpbmcoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJjZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAo
dGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgIig/OikiX3MpKTsKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJl
Z0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0Il9zKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IHJlZ2V4cC0+cmVn
RXhwKCktPnBhdHRlcm4oKTsKICAgICBpZiAocGF0dGVybi5pczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGV4ZWMs
IHBhdHRlcm4sIHBhdHRlcm4uY2hhcmFjdGVyczgoKSwgcGF0dGVybi5sZW5ndGgoKSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJbnRlcm5hbChl
eGVjLCBwYXR0ZXJuLCBwYXR0ZXJuLmNoYXJhY3RlcnMxNigpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJ
bnRlcm5hbChjYWxsRnJhbWUsIHBhdHRlcm4sIHBhdHRlcm4uY2hhcmFjdGVyczgoKSwgcGF0dGVy
bi5sZW5ndGgoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0
ZXJTb3VyY2VJbnRlcm5hbChjYWxsRnJhbWUsIHBhdHRlcm4sIHBhdHRlcm4uY2hhcmFjdGVyczE2
KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgUmVnRXhwKiByZWdFeHAgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhp
c1ZhbHVlKS0+cmVnRXhwKCk7CiAKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHMgPSBzdHJpbmctPnZh
bHVlKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CisgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZh
bHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IGdsb2JhbE9iamVj
dC0+cmVnRXhwR2xvYmFsRGF0YSgpLnBlcmZvcm1NYXRjaCh2bSwgZ2xvYmFsT2JqZWN0LCByZWdF
eHAsIHN0cmluZywgcywgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBqc051bWJl
cihyZXN1bHQuc3RhcnQpIDoganNOdW1iZXIoLTEpKTsKQEAgLTU3OCwxOSArNTc3LDE5IEBAIHZv
aWQgZ2VuZXJpY1NwbGl0KAogfQogCiAvLyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtA
QHNwbGl0XShzdHJpbmcsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRp
bl0gTGV0IHJ4IGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1
aWx0aW5dIElmIFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBSZWdFeHAqIHJl
Z2V4cCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPih0aGlzVmFsdWUpLT5yZWdFeHAoKTsKIAogICAg
IC8vIDMuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5n
KS4KLSAgICBKU1N0cmluZyogaW5wdXRTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKTsKLSAgICBTdHJpbmcgaW5wdXQgPSBpbnB1dFN0cmluZy0+dmFsdWUoZXhlYyk7Cisg
ICAgSlNTdHJpbmcqIGlucHV0U3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhjYWxsRnJhbWUpOworICAgIFN0cmluZyBpbnB1dCA9IGlucHV0U3RyaW5nLT52YWx1ZShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOwogCkBAIC02MDQsMTMgKzYwMywxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICAvLyAxMS4gTGV0IEEgYmUgQXJyYXlDcmVhdGUoMCkuCiAgICAg
Ly8gMTIuIExldCBsZW5ndGhBIGJlIDAuCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAogICAgIC8v
IDEzLiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gYmUgMl4zMi0xOyBlbHNlIGxldCBs
aW0gYmUgPyBUb1VpbnQzMihsaW1pdCkuCi0gICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMSk7Ci0gICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVk
KCkgPyAweEZGRkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgSlNWYWx1
ZSBsaW1pdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICB1bnNpZ25lZCBsaW1p
dCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50
b1VJbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMTQuIExldCBzaXplIGJlIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gUy4KQEAgLTYzMCw3ICs2MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8v
IGMuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KICAgICAgICAgLy8g
ZC4gUmV0dXJuIEEuCiAgICAgICAgIGlmICghcmVnZXhwLT5tYXRjaCh2bSwgaW5wdXQsIDApKSB7
Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGlucHV0U3RyaW5n
KTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCAwLCBpbnB1
dFN0cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC02NTIsNyArNjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0
dXJuIENvbnRpbnVlU3BsaXQ7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoYm9vbCBpc0RlZmlu
ZWQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIC0+IFNwbGl0Q29udHJvbCB7Ci0g
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBp
c0RlZmluZWQgPyBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBzdGFydCwg
bGVuZ3RoKSA6IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCsrLCBpc0RlZmluZWQgPyBqc1N1YnN0cmluZ09m
UmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBzdGFydCwgbGVuZ3RoKSA6IGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgQWJvcnRTcGxpdCk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID49IGxpbWl0KQogICAgICAgICAgICAgICAgIHJl
dHVybiBBYm9ydFNwbGl0OwpAQCAtNjY2LDcgKzY2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgLy8gMjAuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcg
b2YgUyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkg
dGhyb3VnaCBzaXplIChleGNsdXNpdmUpLgogICAgICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0
ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExl
bmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgcG9zaXRpb24sIGlu
cHV0U2l6ZSAtIHBvc2l0aW9uKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2Fs
bEZyYW1lLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJp
bmcsIHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikpOwogICAgICAgICAKICAgICAgICAg
Ly8gMjIuIFJldHVybiBBLgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC02OTEsNyArNjkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9KTsKICAgICAKICAg
ICBpZiAocmVzdWx0TGVuZ3RoICsgZHJ5UnVuQ291bnQgPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVO
R1RIKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogICAgIApAQCAtNzA1LDcgKzcwNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNwbGl0OwogICAgICAgICB9
LAogICAgICAgICBbJl0gKGJvb2wgaXNEZWZpbmVkLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoKSAtPiBTcGxpdENvbnRyb2wgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChleGVjLCByZXN1bHRMZW5ndGgrKywgaXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29s
dmVkKHZtLCBpbnB1dFN0cmluZywgc3RhcnQsIGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgr
KywgaXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgc3Rh
cnQsIGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEFib3J0U3BsaXQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+
PSBsaW1pdCkKICAgICAgICAgICAgICAgICByZXR1cm4gQWJvcnRTcGxpdDsKQEAgLTcxOSw3ICs3
MTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0
RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMjAuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVl
IGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50cyBh
dCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBzaXplIChleGNsdXNpdmUpLgogICAgIC8v
IDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3RoQSks
IFQpLgogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywg
cG9zaXRpb24sIGlucHV0U2l6ZSAtIHBvc2l0aW9uKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBp
bnB1dFN0cmluZywgcG9zaXRpb24sIGlucHV0U2l6ZSAtIHBvc2l0aW9uKSk7CiAgICAgLy8gMjIu
IFJldHVybiBBLgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggNWI2
NTk4NjZjMDBlODlhOGYxN2EwMTVjYmM1MTQ1YzI1OTljYWYwZC4uNDYwZTJhNDVhZGQ3MTM5MjQ4
OWYwMWQyYmQwN2UyZjhlZDE2YzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKQEAgLTUxLDkgKzUxLDkgQEAgY2xhc3MgUmVnRXhwUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jVGVzdEZhc3QoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY01hdGNoRmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCA2MDJiZWQ5
ZTVhNTdlMThmYmU4MmJlNWQ3ODVmOTNhZDRmNDAyODA5Li5iMGRiMTU2ZjQ4OGQ2NDJlNmZlNzBk
OGE1ODIzYTcxMWExZGFlOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC00Nyw3NCArNDcsNzMgQEAgdm9pZCBTZXRDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSwg
R2V0dGVyU2UKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3Bl
cnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxTZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU2V0Q29uc3RydWN0b3I6OlNldENvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxTZXQsIGNvbnN0cnVjdFNldCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXQiKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJTZXQiKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anND
YWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5u
ZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJl
KiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3Ry
dWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCi0gICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgaXRlcmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJs
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1Nl
dDo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSkpKTsKIAogICAgIGlmIChhdXRv
KiBpdGVyYWJsZVNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPih2bSwgaXRlcmFibGUpKSB7CiAg
ICAgICAgIGlmIChpdGVyYWJsZVNldC0+Y2FuQ2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShzZXRT
dHJ1Y3R1cmUpKSAKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGl0ZXJhYmxlU2V0LT5jbG9uZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRl
cmFibGVTZXQtPmNsb25lKGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSkpKTsKICAgICB9CiAK
LSAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKTsK
KyAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzZXRTdHJ1Y3R1
cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gc2V0LT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPmFkZCk7CisgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gc2V0LT5K
U09iamVjdDo6Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRh
IGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAoVU5MSUtFTFkoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBmb3JFYWNo
SW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG5leHRWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNhbGxGcmFtZSwgaXRlcmFi
bGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIG5leHRWYWx1ZSkgewog
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQobmV4dFZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZs
b3dlZCgpKTsKLSAgICAgICAgY2FsbChleGVjLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgc2V0LCBhcmd1bWVudHMpOworICAgICAg
ICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBh
ZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHNldCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkp
OwotICAgIEpTU2V0KiBzZXQgPSBqc0Nhc3Q8SlNTZXQqPihleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNT
ZXQqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBK
U1NldCogc2V0ID0ganNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgYXV0byogaGVhZCA9IHNldC0+aGVhZCgpOwogICAgIEFTU0VSVChoZWFkKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGhlYWQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4
ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNr
ZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVChqc0R5bmFt
aWNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRU
eXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tl
dCk7CiAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgd2hpbGUgKGJ1Y2tldCkgewpA
QCAtMTIyLDEzICsxMjEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2
YXRlRnVuY1NldEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShidWNrZXQpOwogICAgICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQo
KTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnNlbnRpbmVs
U2V0QnVja2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT52
bSgpLnNlbnRpbmVsU2V0QnVja2V0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJU
KGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1
bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+
KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9i
amVjdCwganNEeW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0o
KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxK
U1NldDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IEFTU0VSVChidWNrZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0LT5rZXko
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
aAppbmRleCAzZjZlOGI5MjdiYzkyNTdkNTRmYmFkMWQxMmMxM2I3NTZlOWNjMzdjLi43MWFiNjk1
MGZmNTc5NDdmZTk2YzEzMjlhMTVhYjE4NmE1ZTUwYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmgKQEAgLTU1LDggKzU1LDggQEAgY2xhc3Mg
U2V0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNldFByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2ll
c1N5bWJvbCk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVG
dW5jU2V0QnVja2V0SGVhZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShFeGVjU3RhdGUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFk
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEtleShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4
IDQ2ZjRiY2QzMzljMWQ3NmQ3MTRmNzg4MmRkNDQ1NDk2ODUwMjE0ZjEuLmM2NmQ5NWY2NTkxMWQx
YzgyNjA3NDM1NWVmMWI4OTgzYWY3OWEzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIGNvbnN0IENsYXNz
SW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpzX2luZm8sICZzZXRQ
cm90b3R5cGVUYWJsCiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNBZGQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0FkZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0Rl
bGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5j
U2l6ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNl
dFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKQEAgLTc2LDkgKzc2LDkgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZF
X0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgc2V0UHJv
dG9GdW5jU2l6ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJh
bWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdGhpc1Zh
bHVlLmlzQ2VsbCgpKSkgewpAQCAtOTIsNDQgKzkyLDQ0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IEpTU2V0KiBnZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNl
dFByb3RvRnVuY0FkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKLSAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgdGhpc1Zh
bHVlKTsKKyAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIHNldC0+YWRkKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFyKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVh
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgc2V0LT5jbGVhcihjYWxsRnJhbWUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNEZWxldGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHNldC0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hh
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oc2V0LT5oYXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoc2V0LT5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA2MmM0MjJjMTRjNjEyYzZkM2Iw
NzQyNzUyOWRhNDAwZTkzNGIzNjYyLi4zMzFkNGIwMDcyMzQ1YTQ4NmE5YWQ5NGM3MTQ5NGJmZGVh
OTUxZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9t
Q29kZVBvaW50KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNTMsOCArNTMsOCBAQCBjb25zdCBD
bGFzc0luZm8gU3RyaW5nQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaQogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KFN0cmluZ0NvbnN0cnVjdG9yKTsKIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoU3Ry
aW5nQ29uc3RydWN0b3IpCkBAIC03MCwxNSArNzAsMTUgQEAgdm9pZCBTdHJpbmdDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlw
ZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoTElLRUxZKGxlbmd0aCA9PSAxKSkgewogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNvZGUgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgdW5zaWduZWQgY29kZSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICAgICAg
Ly8gTm90IGNoZWNraW5nIGZvciBhbiBleGNlcHRpb24gaGVyZSBpcyBvayBiZWNhdXNlIGpzU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nIHdpbGwganVzdCBmZXRjaCBhbiB1bnVzZWQgc3RyaW5nIGlmIHRo
ZXJlJ3MgYW4gZXhjZXB0aW9uLgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKHZtLCBjb2RlKSk7CiAgICAgfQpAQCAtODYsNyArODYsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIExDaGFyKiBidWY4Qml0OwogICAgIGF1dG8gaW1wbDhCaXQgPSBT
dHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmOEJpdCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoYXJh
Y3RlciA9IHN0YXRpY19jYXN0PFVDaGFyPihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1VJ
bnQzMihleGVjKSk7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHN0YXRpY19jYXN0PFVDaGFy
PihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMyKGNhbGxGcmFtZSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc0xhdGluMShjaGFyYWN0ZXIpKSkgewogICAgICAgICAgICAg
VUNoYXIqIGJ1ZjE2Qml0OwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgYnVmMTZCaXRbaV0gPSBjaGFyYWN0ZXI7CiAgICAgICAgICAgICArK2k7CiAgICAgICAg
ICAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYnVmMTZCaXRb
aV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50
MzIoZXhlYykpOworICAgICAgICAgICAgICAgIGJ1ZjE2Qml0W2ldID0gc3RhdGljX2Nhc3Q8VUNo
YXI+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50MzIoY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgV1RGTW92ZShpbXBsMTZCaXQpKSkpOwpA
QCAtMTEwLDIzICsxMTAsMjMgQEAgSlNTdHJpbmcqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNo
YXJDb2RlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCiAgICAgcmV0dXJuIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKGV4ZWMtPnZtKCksIGFyZyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNvZGVQb2ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZG91YmxlIGNvZGVQb2ludEFzRG91
YmxlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhlYyk7CisgICAgICAg
IGRvdWJsZSBjb2RlUG9pbnRBc0RvdWJsZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
aSkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29k
ZVBvaW50ICE9IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxV
RSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2Yg
cmFuZ2Ugb2YgY29kZSBwb2ludHMiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJBcmd1bWVu
dHMgY29udGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9z
KSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpCiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CkBAIC0xMzksMTggKzEz
OSwxNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29k
ZVBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgYnVpbGRlci50b1N0cmluZygpKSkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9i
amVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVy
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgIGlmICghY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3RyaW5nT2Jq
ZWN0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOwotICAgIEpTU3RyaW5nKiBzdHIgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogc3RyID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoU3RyaW5nT2JqZWN0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgc3Ry
KSk7CiB9CkBAIC0xNjMsMTIgKzE2MiwxMiBAQCBKU1N0cmluZyogc3RyaW5nQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIHJldHVybiBhcmd1bWVudC50
b1N0cmluZyhleGVjKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdDb25z
dHJ1Y3RvcihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA1ZmE5NTFhMGMxZjNjMTY1MGQyNGNhYWExNjAw
NDY1YTVmY2E4YzFjLi5jNzVkZmMwYjgwZmFhNTE3MDI3NWQ1M2Y1MTU2MjYxZDFkZDliYjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKQEAgLTYxLDMwICs2MSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFN0cmluZ1Byb3RvdHlwZSk7CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNv
ZGVBdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jQ29kZVBvaW50QXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdF
eHAoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
b0xvd2VyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNl
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUb0xvY2FsZVVwcGVyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbVN0YXJ0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRo
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNFbmRzV2l0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0NvZGVQb2ludEF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhw
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vi
c3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Rv
VXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVG9Mb2NhbGVMb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2Uo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVHJpbShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVHJpbUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0VuZHNXaXRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY05vcm1hbGl6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTg0NiwzOCArODQ2LDM4IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZShKU1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gRm9yIGEgc3RyaW5nIHdoaWNoIGxl
bmd0aCBpcyBzaW5nbGUsIGluc3RlYWQgb2YgY3JlYXRpbmcgcm9wZXMsCiAgICAgLy8gYWxsb2Nh
dGluZyBhIHNlcXVlbnRpYWwgYnVmZmVyIGFuZCBmaWxsIHdpdGggdGhlIHJlcGVhdGVkIHN0cmlu
ZyBmb3IgZWZmaWNpZW5jeS4KLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIp
OworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKIAotICAgIEFT
U0VSVChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1N0cmluZygpKTsKLSAgICBKU1N0cmlu
Zyogc3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFT
U0VSVChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzU3RyaW5nKCkpOworICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBBU1NFUlQoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKTsKIAotICAgIEpTVmFsdWUgcmVw
ZWF0Q291bnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUg
cmVwZWF0Q291bnRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQocmVwZWF0Q291bnRWYWx1ZS5pc051bWJlcigpKTsKICAgICBpbnQzMl90
IHJlcGVhdENvdW50OwogICAgIGRvdWJsZSB2YWx1ZSA9IHJlcGVhdENvdW50VmFsdWUuYXNOdW1i
ZXIoKTsKICAgICBpZiAodmFsdWUgPiBKU1N0cmluZzo6TWF4TGVuZ3RoKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxs
RnJhbWUsIHNjb3BlKSk7CiAgICAgcmVwZWF0Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2
YWx1ZSk7CiAgICAgQVNTRVJUKHJlcGVhdENvdW50ID49IDApOwogICAgIEFTU0VSVCghcmVwZWF0
Q291bnRWYWx1ZS5pc0RvdWJsZSgpIHx8IHJlcGVhdENvdW50VmFsdWUuYXNEb3VibGUoKSA9PSBy
ZXBlYXRDb3VudCk7CiAKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHN0cmlu
Zy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgU3RyaW5nVmlldyB2
aWV3ID0gdmlld1dpdGhTdHJpbmcudmlldzsKICAgICBBU1NFUlQodmlldy5sZW5ndGgoKSA9PSAx
KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIFVDaGFyIGNoYXJhY3RlciA9
IHZpZXdbMF07CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmIChpc0xhdGluMShjaGFyYWN0
ZXIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqZXhl
Yywgc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlciksIHJlcGVhdENvdW50KSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmV4ZWMsIGNoYXJhY3RlciwgcmVw
ZWF0Q291bnQpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0
ZXIoKmNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlciksIHJlcGVhdENvdW50
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmNhbGxGcmFt
ZSwgY2hhcmFjdGVyLCByZXBlYXRDb3VudCkpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5n
KiByZXBsYWNlKApAQCAtOTAyLDMwICs5MDIsMzAgQEAgQUxXQVlTX0lOTElORSBKU1N0cmluZyog
cmVwbGFjZSgKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlcGxhY2Uodm0sIGV4ZWMs
IHN0cmluZywgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Jl
cGxhY2VVc2luZ1JlZ0V4cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9TdHJpbmco
ZXhlYyk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9T
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgc2VhcmNoVmFsdWUgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIHNlYXJjaFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXNlYXJjaFZhbHVlLmluaGVyaXRzPFJlZ0V4cE9iamVjdD4odm0pKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKHZt
LCBleGVjLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBleGVjLT5hcmd1bWVudCgxKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdSZWdF
eHBTZWFyY2godm0sIGNhbGxGcmFtZSwgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdT
ZWFyY2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpOworICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNl
VXNpbmdTdHJpbmdTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgZXhlYy0+YXJndW1lbnQoMCksIGV4
ZWMtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCh2bSwgY2FsbEZyYW1lLCBzdHJpbmcs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2Vu
ZXJpYygKQEAgLTk0MCwxMiArOTQwLDEyIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYygKICAgICAgICAgSlNWYWx1ZTo6ZGVjb2Rl
KHJlcGxhY2VWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0
cmluZygpKQpAQCAtOTU1LDU0ICs5NTUsNTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHN0cmlu
Z09iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdPYmplY3QtPmlu
dGVybmFsVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Q2hhckF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmco
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0g
YTAuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGkgPCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgdmll
d1tpXSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0p
KTsKICAgICB9Ci0gICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91
YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZHBvcyA+PSAwICYmIGRwb3Mg
PCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKHZtLCB2aWV3W3N0YXRpY19jYXN0PHVuc2lnbmVkPihkcG9zKV0pKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Q2hhckNvZGVBdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0
Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIGF1dG8gdmlld1dpdGhTdHJp
bmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhVbmRlcmx5aW5nU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmlld1dpdGhTdHJpbmcudmlldzsKLSAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9IGEwLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChpIDwgdmlldy5sZW5ndGgoKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlld1tpXSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIH0KLSAgICBkb3Vi
bGUgZHBvcyA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGEwLnRvSW50
ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IHZpZXcubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlld1tzdGF0aWNfY2FzdDxp
bnQ+KGRwb3MpXSkpOwpAQCAtMTAxOSwyMCArMTAxOSwyMCBAQCBzdGF0aWMgaW5saW5lIFVDaGFy
MzIgY29kZVBvaW50QXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZwogICAgIHJldHVybiBjaGFyYWN0ZXI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBTdHJp
bmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJp
bmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoKCk7CiAKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoYXJndW1lbnQwLmlzVUludDMyKCkpIHsKICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24g
PSBhcmd1bWVudDAuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuZ3RoKQpA
QCAtMTA0MiwyOCArMTA0MiwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgZG91YmxlIGRvdWJsZVBv
c2l0aW9uID0gYXJndW1lbnQwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZG91YmxlUG9z
aXRpb24gPSBhcmd1bWVudDAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGRvdWJsZVBvc2l0aW9u
ID49IDAgJiYgZG91YmxlUG9zaXRpb24gPCBsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoY29kZVBvaW50QXQoc3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZG91YmxlUG9zaXRpb24pLCBsZW5ndGgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJn
dW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFs
dWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOwogCi0gICAgSlNTdHJpbmcqIHRoaXNKU1N0cmluZyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50b1N0cmlu
ZyhleGVjKTsKKyAgICBKU1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICB1bnNpZ25lZCBwb3MgPSAwOwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgaWYgKGExLmlzVUludDMyKCkpCiAgICAgICAgICAgICBwb3MgPSBzdGQ6Om1p
bjx1aW50MzJfdD4oYTEuYXNVSW50MzIoKSwgbGVuKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlcihleGVjKTsKKyAgICAgICAgICAgIGRvdWJs
ZSBkcG9zID0gYTEudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkcG9z
IDwgMCkKICAgICAgICAgICAgICAgICBkcG9zID0gMDsKQEAgLTEwODYsOSArMTA4Niw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNKU1N0cmluZy0+bGVuZ3RoKCkgPCBvdGhlckpTU3RyaW5n
LT5sZW5ndGgoKSArIHBvcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cigtMSkpOwogCi0gICAgYXV0byB0aGlzVmlld1dpdGhTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZp
ZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHRoaXNWaWV3V2l0aFN0cmlu
ZyA9IHRoaXNKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0
byBvdGhlclZpZXdXaXRoU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKGV4ZWMpOworICAgIGF1dG8gb3RoZXJWaWV3V2l0aFN0cmluZyA9IG90aGVySlNTdHJp
bmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNpemVfdCByZXN1bHQgPSB0
aGlzVmlld1dpdGhTdHJpbmcudmlldy5maW5kKG90aGVyVmlld1dpdGhTdHJpbmcudmlldywgcG9z
KTsKICAgICBpZiAocmVzdWx0ID09IG5vdEZvdW5kKQpAQCAtMTA5NiwyNSArMTA5NiwyNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdElu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYTAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOwogCi0gICAgSlNTdHJpbmcqIHRoaXNKU1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKTsKKyAgICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdW5zaWduZWQgbGVuID0gdGhpc0pTU3RyaW5nLT5sZW5ndGgoKTsKLSAgICBK
U1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5n
KiBvdGhlckpTU3RyaW5nID0gYTAudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGRvdWJsZSBkcG9zID0g
YTEudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgZG91YmxlIGRwb3MgPSBhMS50b0lu
dGVnZXJQcmVzZXJ2ZU5hTihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb247CiAgICAg
aWYgKGRwb3MgPCAwKQpAQCAtMTEyNyw5ICsxMTI3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKGxlbiA8IG90aGVySlNTdHJpbmctPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKLSAgICBTdHJpbmcgdGhpc1N0cmluZyA9IHRoaXNK
U1N0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHRoaXNTdHJpbmcgPSB0aGlzSlNTdHJp
bmctPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIG90aGVyU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIG90aGVyU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmFs
dWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBzaXplX3QgcmVzdWx0OwogICAgIGlmICghc3RhcnRQb3NpdGlvbikKQEAg
LTExNDEsMjkgKzExNDEsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5nKiBzdHJp
bmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFs
dWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CiAKICAgICBpbnQgbGVuZ3RoID0gc3RyaW5nLT5sZW5ndGgoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChsZW5ndGggPj0gMCk7CiAKICAgICAvLyBUaGUgYXJnIHByb2Nlc3NpbmcgaXMgdmVy
eSBtdWNoIGxpa2UgQXJyYXlQcm90b0Z1bmM6OlNsaWNlCi0gICAgZG91YmxlIHN0YXJ0ID0gYTAu
dG9JbnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGRvdWJsZSBlbmQgPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuZ3RoIDogYTEudG9JbnRlZ2Vy
KGV4ZWMpOworICAgIGRvdWJsZSBlbmQgPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuZ3RoIDogYTEu
dG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoc3RyaW5nU2xpY2UoZXhlYywgdm0sIHN0cmluZywgbGVuZ3RoLCBzdGFydCwgZW5kKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1Ns
aWNlKGNhbGxGcmFtZSwgdm0sIHN0cmluZywgbGVuZ3RoLCBzdGFydCwgZW5kKSkpOwogfQogCiAv
LyBSZXR1cm4gdHJ1ZSBpbiBjYXNlIG9mIGVhcmx5IHJldHVybiAocmVzdWx0TGVuZ3RoIGdvdCB0
byBsaW1pdExlbmd0aCkuCkBAIC0xMjAyLDMwICsxMjAyLDMwIEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIGJvb2wgc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGwoRXhlY1N0YXRlKiBleGVjLCBK
U0FycmF5CiB9CiAKIC8vIEVTIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFy
YXRvciwgbGltaXQpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgQVNT
RVJUKGNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCiAgICAgLy8gMy4gTGV0IFMg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFs
dWUgYXMgaXRzIGFyZ3VtZW50LgogICAgIC8vIDcuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiBTLgotICAgIFN0cmluZyBpbnB1dCA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhl
eGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBBU1NFUlQoIWlucHV0LmlzTnVsbCgpKTsKIAogICAgIC8vIDQuIExldCBBIGJlIGEgbmV3IGFy
cmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFycmF5KCkKICAgICAvLyAg
ICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29uc3RydWN0b3Igd2l0aCB0
aGF0IG5hbWUuCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFt
ZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAvLyA1LiBMZXQgbGVuZ3RoQSBiZSAwLgogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0
aCA9IDA7CiAKICAgICAvLyA2LiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gPSAyXjMy
LTE7IGVsc2UgbGV0IGxpbSA9IFRvVWludDMyKGxpbWl0KS4KLSAgICBKU1ZhbHVlIGxpbWl0VmFs
dWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICB1bnNpZ25lZCBsaW1pdCA9IGxp
bWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJbnQz
MihleGVjKTsKKyAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOworICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgp
ID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA4LiBM
ZXQgcCA9IDAuCkBAIC0xMjMzLDggKzEyMzMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyA5
LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdF
eHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAgICAgLy8gICAgb3RoZXJ3aXNlIGxldCBSID0gVG9T
dHJpbmcoc2VwYXJhdG9yKS4KLSAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVl
LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0
b3JWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMTAuIElmIGxpbSA9PSAwLCByZXR1
cm4gQS4KQEAgLTEyNDUsNyArMTI0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc2VwYXJh
dG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAvLyBhLiBDYWxsIHRoZSBbW0RlZmlu
ZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAog
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
ZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgMCwganNTdHJpbmdXaXRoUmV1
c2UoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0KSk7CiAgICAgICAgIC8vIGIuIFJldHVybiBB
LgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTI1
OCw3ICsxMjU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyBkLiBSZXR1cm4gQS4KICAg
ICAgICAgaWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3Ry
aW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShjYWxsRnJh
bWUsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBBU1NFUlQobGltaXQpOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcG9zaXRpb24sIGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKHZtLCBpbnB1dFtwb3NpdGlvbl0pKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoY2FsbEZyYW1lLCBwb3NpdGlvbiwganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0s
IGlucHV0W3Bvc2l0aW9uXSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0gd2hpbGUgKCsrcG9zaXRpb24gPCBsaW1p
dCk7CiAKQEAgLTEyOTMsMTAgKzEyOTMsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
c2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9ySW1wbC0+Y2hhcmFjdGVyczE2KClbMF07CiAK
ICAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBpZiAoc3Bs
aXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8TENoYXI+KGV4ZWMsIHJlc3VsdCwgdGhpc1ZhbHVl
LCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0
TGVuZ3RoLCBsaW1pdCkpIAorICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0
ZXJJbXBsPExDaGFyPihjYWxsRnJhbWUsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5n
SW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkp
IAogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNwbGl0U3Ry
aW5nQnlPbmVDaGFyYWN0ZXJJbXBsPFVDaGFyPihleGVjLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5w
dXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0
aCwgbGltaXQpKSAKKyAgICAgICAgICAgIGlmIChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1w
bDxVQ2hhcj4oY2FsbEZyYW1lLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGws
IHNlcGFyYXRvckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEzMTEsOSArMTMxMSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJz
dHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChp
bmNsdXNpdmUpCiAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCiAgICAg
ICAgICAgICAvLyAyLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhB
KSwgVCkuCi0gICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyhleGVjLCB0
aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGF1dG8qIHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwgdGhpc1Zh
bHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1YnN0cmluZyk7CisgICAgICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0TGVuZ3RoLCBzdWJz
dHJpbmcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICAgICAgICAgIC8vIDMuIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCiAgICAgICAgICAgICAvLyA0
LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCkBAIC0xMzI5LDIzICsxMzI5LDIzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8g
dGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRp
b25zIHAgKGluY2x1c2l2ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgogICAg
IC8vIDE2LiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCku
Ci0gICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1
dCwgcG9zaXRpb24sIGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pOworICAgIGF1dG8qIHN1YnN0
cmluZyA9IGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24s
IGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIHN1YnN0cmluZyk7CisgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCsrLCBzdWJzdHJpbmcpOwogCiAgICAgLy8g
MTcuIFJldHVybiBBLgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHN0cmluZ1Byb3RvRnVuY1N1YnN0cklt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
ICAgIHVuc2lnbmVkIGxlbjsKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmlu
ZyB1U3RyaW5nOwpAQCAtMTM1MywxNyArMTM1MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGpz
U3RyaW5nID0gYXNTdHJpbmcodGhpc1ZhbHVlKTsKICAgICAgICAgbGVuID0ganNTdHJpbmctPmxl
bmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgICAgIHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgICAgIGxlbiA9IHVTdHJpbmcubGVuZ3RoKCk7CiAgICAgfQogCi0gICAgSlNW
YWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1
bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIGRvdWJsZSBzdGFydCA9
IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBkb3VibGUgbGVuZ3RoID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6IGExLnRvSW50
ZWdlcihleGVjKTsKKyAgICBkb3VibGUgbGVuZ3RoID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6
IGExLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChzdGFydCA+PSBsZW4gfHwgbGVuZ3RoIDw9IDAp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwpAQCAt
MTM3OCwxMSArMTM3OCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVu
Z3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgc2NvcGUucmVsZWFzZSgp
OwogICAgIGlmIChqc1N0cmluZykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1
YnN0cmluZyhleGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwg
anNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKHZtLCB1U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwg
c3Vic3RyaW5nTGVuZ3RoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVp
bHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBzdHJpbmdQcm90
b0Z1bmNTdWJzdHJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gQHN1
YnN0ckludGVybmFsIHNob3VsZCBub3QgaGF2ZSBhbnkgb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMg
KGUuZy4gaXQgc2hvdWxkIG5vdCBjYWxsCiAgICAgLy8gR2V0TWV0aG9kKC4uLiwgQEB0b1ByaW1p
dGl2ZSkgb24gdGhlIHRoaXNWYWx1ZSkuCkBAIC0xMzkyLDI4ICsxMzk3LDI4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAvLyBndWFyYW50ZWUgdGhhdCB3ZSBvbmx5IHBhc3MgaXQgYSBzdHJpbmcg
dGhpc1ZhbHVlLiBBcyBhIHJlc3VsdCwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyCiAgICAgLy8gd2ls
bCBub3QgbmVlZCB0byBjYWxsIHRvU3RyaW5nKCkgb24gdGhlIHRoaXNWYWx1ZSwgYW5kIHRoZXJl
IHdpbGwgYmUgbm8gb2JzZXJ2YWJsZQogICAgIC8vIHNpZGUtZWZmZWN0cy4KLSAgICBBU1NFUlQo
ZXhlYy0+dGhpc1ZhbHVlKCkuaXNTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVu
Y1N1YnN0cihleGVjKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5pc1N0cmlu
ZygpKTsKKyAgICByZXR1cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSB0aGlzVmFs
dWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CiAgICAgaW50IGxlbiA9IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICBSRUxFQVNFX0FT
U0VSVChsZW4gPj0gMCk7CiAKLSAgICBkb3VibGUgc3RhcnQgPSBhMC50b051bWJlcihleGVjKTsK
KyAgICBkb3VibGUgc3RhcnQgPSBhMC50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRvdWJsZSBlbmQ7CiAg
ICAgaWYgKCEoc3RhcnQgPj0gMCkpIC8vIGNoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb3IgTmFO
CkBAIC0xNDIzLDcgKzE0MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGExLmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgIGVuZCA9IGxlbjsKICAgICBlbHNlIHsgCi0gICAgICAgIGVuZCA9IGEx
LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBlbmQgPSBhMS50b051bWJlcihjYWxsRnJhbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgaWYgKCEoZW5kID49IDApKSAvLyBjaGVjayBmb3IgbmVnYXRpdmUgdmFsdWVzIG9yIE5h
TgogICAgICAgICAgICAgZW5kID0gMDsKQEAgLTE0MzcsMjAgKzE0NDIsMjAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogICAgIH0KICAgICB1bnNpZ25lZCBzdWJzdHJpbmdTdGFydCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGFydCk7CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVuZCkgLSBzdWJzdHJpbmdTdGFydDsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCBqc1N0cmluZywgc3Vi
c3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhjYWxsRnJhbWUsIGpzU3RyaW5nLCBz
dWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
Ci0gICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5n
KiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHMgPSBzVmFsLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgU3RyaW5n
IGxvd2VyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsK
ICAgICBpZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCkBAIC0xNDU4LDE3
ICsxNDYzLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBsb3dlcmNhc2VkU3RyaW5nKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jVG9VcHBlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOworICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
U3RyaW5nIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVl
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgU3RyaW5nIHVwcGVyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb1VwcGVyY2Fz
ZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAodXBwZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5p
bXBsKCkpCkBAIC0xNDc2LDQ0ICsxNDgxLDQzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB1cHBlcmNh
c2VkU3RyaW5nKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMSBTdHJp
bmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmUgKHRoYXQgWywgbG9jYWxlcyBbLCBvcHRpb25zIF1d
KSAoRUNNQS00MDIgMi4wKQogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1
YmxpY2F0aW9ucy9zdGFuZGFyZHMvRWNtYS00MDIuaHRtCiAKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTdHJpbmcucHJvdG90eXBlLmxv
Y2FsZUNvbXBhcmUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOwogCiAgICAgLy8gMi4gTGV0IFMgYmUgVG9TdHJpbmco
TykuCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoUykuCi0gICAgU3RyaW5nIHN0cmluZyA9IHRo
aXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVl
LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA0LiBMZXQgVGhhdCBiZSBUb1N0cmluZyh0aGF0
KS4KICAgICAvLyA1LiBSZXR1cm5JZkFicnVwdChUaGF0KS4KLSAgICBKU1ZhbHVlIHRoYXRWYWx1
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyB0aGF0ID0gdGhhdFZhbHVlLnRvV1RG
U3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgdGhhdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBTdHJpbmcgdGhhdCA9IHRoYXRWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAj
aWYgRU5BQkxFKElOVEwpCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBKU1ZhbHVlIGxvY2FsZXMgPSBleGVjLT5hcmd1
bWVudCgxKTsKLSAgICBKU1ZhbHVlIG9wdGlvbnMgPSBleGVjLT5hcmd1bWVudCgyKTsKKyAgICBK
U1ZhbHVlIGxvY2FsZXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgb3B0
aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRv
ciA9IG51bGxwdHI7CiAgICAgaWYgKGxvY2FsZXMuaXNVbmRlZmluZWQoKSAmJiBvcHRpb25zLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29sbGF0b3IgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRD
b2xsYXRvcihleGVjKTsKKyAgICAgICAgY29sbGF0b3IgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRD
b2xsYXRvcihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb2xsYXRvciA9IEludGxD
b2xsYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmNvbGxhdG9yU3RydWN0dXJlKCkpOwot
ICAgICAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpleGVjLCBsb2NhbGVzLCBvcHRp
b25zKTsKKyAgICAgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqY2FsbEZyYW1lLCBs
b2NhbGVzLCBvcHRpb25zKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqZXhlYywgc3RyaW5nLCB0aGF0
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxh
dG9yLT5jb21wYXJlU3RyaW5ncygqY2FsbEZyYW1lLCBzdHJpbmcsIHRoYXQpKSk7CiAjZWxzZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoQ29sbGF0b3IoKS5jb2xsYXRlKHN0
cmluZywgdGhhdCkpKTsKICNlbmRpZgpAQCAtMTUyNSw5ICsxNTI5LDkgQEAgZW51bSBjbGFzcyBD
YXNlQ29udmVyc2lvbk1vZGUgewogICAgIExvd2VyLAogfTsKIHRlbXBsYXRlPENhc2VDb252ZXJz
aW9uTW9kZSBtb2RlPgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3Rh
dGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvIGNvbnZlcnRDYXNlID0g
WyZdIChhdXRvJiYuLi4gYXJncykgewpAQCAtMTYxNSwxOSArMTYxOSwxOSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxl
TG93ZXJDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMiBTdHJpbmcucHJv
dG90eXBlLnRvTG9jYWxlTG93ZXJDYXNlIChbbG9jYWxlc10pCiAgICAgLy8gaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5kYXJkcy9FY21hLTQwMi5odG0KLSAg
ICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXI+KHN0YXRlKTsK
KyAgICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXI+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICAvLyAxMy4xLjMgU3RyaW5nLnByb3RvdHlwZS50b0xvY2FsZVVwcGVyQ2FzZSAoW2xvY2FsZXNd
KQogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9zdGFu
ZGFyZHMvRWNtYS00MDIuaHRtCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpbnRlcnByZXRzIGEgc3Ry
aW5nIHZhbHVlIGFzIGEgc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMsIGFzIGRlc2NyaWJlZCBpbiBF
UzIwMTUsIDYuMS40LiBUaGlzIGZ1bmN0aW9uIGJlaGF2ZXMgaW4gZXhhY3RseSB0aGUgc2FtZSB3
YXkgYXMgU3RyaW5nLnByb3RvdHlwZS50b0xvY2FsZUxvd2VyQ2FzZSwgZXhjZXB0IHRoYXQgY2hh
cmFjdGVycyBhcmUgbWFwcGVkIHRvIHRoZWlyIHVwcGVyY2FzZSBlcXVpdmFsZW50cyBhcyBzcGVj
aWZpZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlLgotICAgIHJldHVybiB0b0xv
Y2FsZUNhc2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpVcHBlcj4oc3RhdGUpOworICAgIHJldHVybiB0
b0xvY2FsZUNhc2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpVcHBlcj4oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCkBAIC0xNjY0LDIyICsxNjY4LDIy
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBqc1N0cmluZyh2bSwgc3RyLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGxlZnQsIHJpZ2h0IC0gbGVm
dCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
cmltKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVHJpbShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgVHJpbVN0YXJ0IHwgVHJp
bUVuZCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFs
dWUsIFRyaW1TdGFydCB8IFRyaW1FbmQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhl
eGVjLCB0aGlzVmFsdWUsIFRyaW1TdGFydCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJp
bmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIFRyaW1TdGFydCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1T
dHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBUcmltRW5kKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJp
bVN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgVHJpbUVuZCkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGRvdWJsZSB2YWx1ZSwgdW5z
aWduZWQgbWluLCB1bnNpZ25lZCBtYXgpCkBAIC0xNjkxLDc2ICsxNjk1LDc2IEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQoZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBtaW4sIHVuCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRz
V2l0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N0YXJ0c1dpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFj
aGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKLSAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywg
YTApOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGJvb2wg
aXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBjYWxsRnJhbWUsIGEwKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJl
IGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJl
IGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmco
ZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
LSAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1
ZSBwb3NpdGlvbkFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgdW5zaWduZWQgc3Rh
cnQgPSAwOwogICAgIGlmIChwb3NpdGlvbkFyZy5pc0ludDMyKCkpCiAgICAgICAgIHN0YXJ0ID0g
c3RkOjptYXgoMCwgcG9zaXRpb25BcmcuYXNJbnQzMigpKTsKICAgICBlbHNlIHsKICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKLSAgICAgICAgc3Rh
cnQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoZXhl
YyksIDAsIGxlbmd0aCk7CisgICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWdu
ZWQocG9zaXRpb25BcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uaGFz
SW5maXhTdGFydGluZ0F0KHNlYXJjaFN0cmluZywgc3RhcnQpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRo
aXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsK
KyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGJvb2wgaXNSZWd1
bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CisgICAgSlNWYWx1ZSBhMCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0g
aXNSZWdFeHAodm0sIGNhbGxGcmFtZSwgYTApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0
cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJBcmd1bWVudCB0byBTdHJp
bmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hT
dHJpbmcgPSBhMC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
aW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKIAotICAgIEpTVmFsdWUgZW5kUG9zaXRpb25BcmcgPSBl
eGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGVuZFBvc2l0aW9uQXJnID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKICAgICB1bnNpZ25lZCBlbmQgPSBsZW5ndGg7CiAgICAgaWYgKGVuZFBv
c2l0aW9uQXJnLmlzSW50MzIoKSkKICAgICAgICAgZW5kID0gc3RkOjptYXgoMCwgZW5kUG9zaXRp
b25BcmcuYXNJbnQzMigpKTsKICAgICBlbHNlIGlmICghZW5kUG9zaXRpb25BcmcuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICBlbmQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChlbmRQb3Np
dGlvbkFyZy50b0ludGVnZXIoZXhlYyksIDAsIGxlbmd0aCk7CisgICAgICAgIGVuZCA9IGNsYW1w
QW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGVuZFBvc2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJhbWUp
LCAwLCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihzdHJpbmdUb1NlYXJjaEluLmhhc0luZml4RW5kaW5nQXQoc2VhcmNoU3RyaW5nLCBzdGQ6Om1p
bihlbmQsIGxlbmd0aCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nIHN0
cmluZ1RvU2VhcmNoSW4sIFN0cmluZyBzZWFyY2hTdHJpbmcsIEpTVmFsdWUgcG9zaXRpb25Bcmcp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwo
Vk0mIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4sIFN0
cmluZyBzZWFyY2hTdHJpbmcsIEpTVmFsdWUgcG9zaXRpb25BcmcpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKQEAg
LTE3NjgsNzAgKzE3NzIsNzAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nSW5jbHVkZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLAogICAgICAgICBzdGFy
dCA9IHN0ZDo6bWF4KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7Ci0gICAgICAg
IHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25BcmcudG9JbnRlZ2Vy
KGV4ZWMpLCAwLCBsZW5ndGgpOworICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vu
c2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJhbWUpLCAwLCBsZW5ndGgpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaElu
LmZpbmQoc2VhcmNoU3RyaW5nLCBzdGFydCkgIT0gbm90Rm91bmQpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
OworICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1Jl
Z3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEw
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24g
PSBpc1JlZ0V4cCh2bSwgY2FsbEZyYW1lLCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8g
U3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0
cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJp
bmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHBvc2l0aW9uQXJn
ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0lu
Y2x1ZGVzSW1wbCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3Np
dGlvbkFyZykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJ
bXBsKHZtLCBjYWxsRnJhbWUsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRp
b25BcmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5n
SW5jbHVkZXNJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKTsKIAotICAg
IFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3Ry
aW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgYTAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIFN0cmluZyBzZWFyY2hTdHJp
bmcgPSBhMC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4
ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRl
c0ltcGwodm0sIGV4ZWMsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25B
cmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2
bSwgY2FsbEZyYW1lLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJn
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRl
cmF0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhl
YywgZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+c3RyaW5nSXRlcmF0b3JTdHJ1
Y3R1cmUoKSwgc3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPnN0cmluZ0l0ZXJhdG9yU3Ry
dWN0dXJlKCksIHN0cmluZykpOwogfQogCiBlbnVtIGNsYXNzIE5vcm1hbGl6YXRpb25Gb3JtIHsg
TkZDLCBORkQsIE5GS0MsIE5GS0QgfTsKQEAgLTE5MTUsMjEgKzE5MTksMjEgQEAgc3RhdGljIEpT
VmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZywgTm9ybWFs
aXphdGlvbkZvcm0gZm8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKHZt
LCBXVEZNb3ZlKHJlc3VsdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0
cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBhdXRvIGZvcm0gPSBOb3JtYWxpemF0aW9uRm9ybTo6TkZDOwotICAgIEpT
VmFsdWUgZm9ybVZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmb3JtVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghZm9ybVZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKLSAgICAgICAgU3RyaW5nIGZvcm1TdHJpbmcgPSBmb3JtVmFsdWUudG9XVEZTdHJp
bmcoZXhlYyk7CisgICAgICAgIFN0cmluZyBmb3JtU3RyaW5nID0gZm9ybVZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICAgICAgaWYgKGZvcm1TdHJpbmcgPT0gIk5GQyIpCkBAIC0xOTQxLDEwICsxOTQ1LDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIp
CiAgICAgICAgICAgICBmb3JtID0gTm9ybWFsaXphdGlvbkZvcm06Ok5GS0Q7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgImFy
Z3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBub3JtYWxpemF0aW9uIGZvcm0iX3MpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJhcmd1bWVu
dCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3JtIl9zKTsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoZXhl
Yywgc3RyaW5nLCBmb3JtKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG5vcm1hbGl6ZShjYWxsRnJhbWUsIHN0cmluZywgZm9ybSkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5oCmluZGV4IDdkNTUwZDdkMTY0ZjFjZWQ2NWM0NjNlYWEzNzRmZmQ3OGE0ZDIw
OTIuLjVjMjY4YWMxYTFkOWQ5YjZkOWY1NWEwNmEwMDRlYzFhMTdlZTkwODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCkBAIC02MSwxMCAr
NjEsMTAgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1Jl
cGxhY2VSZWdFeHBTdHJpbmcoCiAKIHZvaWQgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKFN0cmlu
Z0J1aWxkZXImIHJlc3VsdCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBz
b3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKik7CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhl
Y1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Jl
cGVhdENoYXJhY3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3Ry
aW5nU3Vic3RySW50ZXJuYWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRp
blN0cmluZ0luY2x1ZGVzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWQ5ZmE4MGRjN2ZmNTU2MTY2NzRlOTE1MjQz
MGYxMzY3NDY2NWNiYi4uZjM3OTA3NzJmMjBhMmU5ZDhmNDYyMjQyNGI5NjIwNmIxMTFhMjk1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVj
dG9yLmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3Rv
cktleUZvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN5bWJvbENvbnN0cnVjdG9yRm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTU2LDcgKzU2LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIFN5bWJvbENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sICZzeW1ib2wKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIFN5bWJvbENvbnN0cnVjdG9yOjpTeW1ib2xDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxs
U3ltYm9sLCBudWxscHRyKQpAQCAtNzcsNDMgKzc3LDQzIEBAIHZvaWQgU3ltYm9sQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxTeW1ib2woRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSBkZXNjcmlwdGlvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGRl
c2NyaXB0aW9uLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
U3ltYm9sOjpjcmVhdGUodm0pKTsKIAotICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi50
b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gZGVzY3JpcHRpb24udG9XVEZT
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGVXaXRoRGVzY3JpcHRpb24o
dm0sIHN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENv
bnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNTdHJpbmcqIHN0cmluZ0tleSA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwg
ZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHJpbmcpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgdm0uc3ltYm9sUmVnaXN0
cnkoKS5zeW1ib2xGb3JLZXkoc3RyaW5nKSkpOwogfQogCiBjb25zdCBBU0NJSUxpdGVyYWwgU3lt
Ym9sS2V5Rm9yVHlwZUVycm9yIHsgIlN5bWJvbC5rZXlGb3IgcmVxdWlyZXMgdGhhdCB0aGUgZmly
c3QgYXJndW1lbnQgYmUgYSBzeW1ib2wiX3MgfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHN5bWJvbFZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXN5bWJvbFZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJv
bEtleUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOwogCiAg
ICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUgPSBhc1N5bWJvbChzeW1ib2xWYWx1ZSktPnByaXZh
dGVOYW1lKCk7CiAgICAgU3ltYm9sSW1wbCYgdWlkID0gcHJpdmF0ZU5hbWUudWlkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAppbmRl
eCA0MmEwN2M2YTQzYTQ3Y2Q2NDI5MjM5ZTlhYmVhOTk2YmFkODAxN2Y2Li4yMzRlYjE4OTE5Yjlh
OTk0OTMxNGY0NDYwNjFlOGM5Y2YwMGQ2YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvR2V0dGVyRGVzY3JpcHRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQ
cm90b0dldHRlckRlc2NyaXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB9CiAKQEAgLTg4LDM4ICs4OCwzOCBAQCBpbmxpbmUgU3ltYm9sKiB0cnlFeHRyYWN0
U3ltYm9sKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIGFzU3ltYm9sKGpz
Q2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJv
dG9HZXR0ZXJEZXNjcmlwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3ltYm9sKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJy
b3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBT
eW1ib2xEZXNjcmlwdGlvblR5cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGNv
bnN0IGF1dG8gZGVzY3JpcHRpb24gPSBzeW1ib2wtPmRlc2NyaXB0aW9uKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdGlvbi5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgZGVzY3JpcHRpb24pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5
RXh0cmFjdFN5bWJvbCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9s
ID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFzeW1ib2wpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
eW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0s
IHN5bWJvbC0+ZGVzY3JpcHRpdmVTdHJpbmcoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTeW1ib2wqIHN5bWJvbCA9
IHRyeUV4dHJhY3RTeW1ib2wodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5
bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghc3ltYm9sKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3ltYm9sKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgKaW5kZXggNTUzNTVkNjk2MWVk
OGM0NDI0YjBlYjdkZTg1YmM1OTBkNjJlZWE2Yi4uYmM3OGIzYTMxMjZiZTcyZTcyZTM5YjQzYTZh
Y2VmODlmY2JjNzQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGhyb3dTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2Nv
cGUuaApAQCAtMjksOCArMjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0
YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiAKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250
cm9sbGVyLmgKaW5kZXggNjRkM2Y1NTA0ZTU1MDE5MDlkYmE2ZmQxMGFlZDk4OWMxOTg4NzdlOC4u
YzIxYWNhZTIxOGM3MjZhMGFlN2VlMWVlNTg4OGFhNDFlYTFhYmZlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oCkBAIC0z
MCw5ICszMCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5QnVmZmVyOwotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNBcnJheUJ1ZmZlcjsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFz
cyBUeXBlZEFycmF5Q29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFR5cGVkQXJyYXlDb250
cm9sbGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA2NzZk
OWMyYzE2MjY5Nzk2YjU4MjY4MmVmZjQxYjg5ZWI1N2Y1OTkzLi40ZTIxNjIxYzY0NDZkMzNmY2Nk
YWQyY2QzNjY5NmJhY2MwNTk1NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTEwMiwxMyArMTAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OworY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUNhY2hlOwogY2xhc3MgQ29tbW9uSWRlbnRp
ZmllcnM7CiBjbGFzcyBDb21wYWN0VmFyaWFibGVNYXA7CiBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0
ZXI7CiBjbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBFeGVjU3RhdGU7CiBj
bGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGNlcHRpb25TY29wZTsKIGNsYXNzIEZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0cnVjdCBIYXNoVGFi
bGU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCi10eXBlZGVm
IEV4ZWNTdGF0ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIHN0
cnVjdCBMb2NhbFRpbWVPZmZzZXRDYWNoZSB7CiAgICAgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCmluZGV4IGMxNmQzYTJlMGU2NTk0
NDk3ZDk0NzJkMGFjYzVkYTgwNmU2Nzk3NzEuLjBlZmI2MGMzNzRlZjFhMTc5MDNmNWMzM2UwYTdh
Y2UzZmE4MjNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmgKQEAg
LTM2LDggKzM2LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
CiBjbGFzcyBWTVRyYXBzIHsKICAgICB0eXBlZGVmIHVpbnQ4X3QgQml0RmllbGQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAppbmRleCBkMzU2M2FmODNlN2I2ZmU5Nzdh
MDQ0MzU3MWFlYjJmMWExNzFhZWQ2Li5kMmFlMDUzNmMyMDFjMTVjYWZkOTgyZWRlZTA0MzBmYmMz
NGY3YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRv
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKQEAgLTMz
LDggKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBj
bGFzcyBXYXRjaGRvZyA6IHB1YmxpYyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkPFdhdGNoZG9n
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCAzOWEyMDc2MGEw
MTk5MGU2MGI3YWRhMmNhYmQ2NjlkYjcwNWVhZjhlLi5lNGVhOTU5NDI3NmQ2ODk4N2YxM2UzMTdk
MjQ3NTI2YzNlYjI5NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDU0ICs0NSw1MyBAQCB2b2lkIFdlYWtN
YXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrTWFwUHJvdG90eXBlKiBw
cm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtNYXBDb25z
dHJ1Y3Rvcjo6V2Vha01hcENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrTWFwLCBjb25zdHJ1Y3RXZWFrTWFw
KQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01h
cChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsV2Vha01hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha01hcCIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYWtNYXAiKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBl
eGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCkpOworICAg
IFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha01hcCogd2Vha01hcCA9IEpTV2Vha01h
cDo6Y3JlYXRlKHZtLCB3ZWFrTWFwU3RydWN0dXJlKTsKLSAgICBKU1ZhbHVlIGl0ZXJhYmxlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVu
Y3Rpb24gPSB3ZWFrTWFwLT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNl
dCk7CisgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+SlNPYmplY3Q6OmdldChj
YWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9u
Q2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFk
ZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKIAog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJs
ZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CisgICAg
Zm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0
YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0SXRlbS5nZXQoZXhlYywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKKyAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0SXRl
bS5nZXQoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBuZXh0SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IG5leHRJdGVtLmdldChjYWxsRnJhbWUsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigxKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
ICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtMTAwLDcgKzk5LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIGNhbGwoZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtNYXAsIGFyZ3VtZW50cyk7CisgICAg
ICAgIGNhbGwoY2FsbEZyYW1lLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUs
IGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCmluZGV4IGM3M2ZkM2VjNzAy
NTkxMTJkZDVkMTVjMmEwNjVlMTkyMTBjZGFlZjcuLmNkNGM1OWFiOTJiZmRlNjQ2MWQ2NWIxNmQy
ZTViYTA2ZjlmN2NjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBQcm90b3R5cGUuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrTWFwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWFrTWFw
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWFrTWFwUHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFr
TWFwU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jV2Vha01hcERlbGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFdlYWtNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAg
LTUxLDkgKzUxLDkgQEAgdm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmlu
Zyh2bSwgIldlYWtNYXAiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrTWFw
KiBnZXRXZWFrTWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNXZWFrTWFwKiBnZXRXZWFrTWFwKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVO
TElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgewpAQCAtNjksMTggKzY5LDE4IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oa2V5
LmlzT2JqZWN0KCkgJiYgbWFwLT5yZW1vdmUoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CkBAIC04OSwyMSArODksMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwLT5nZXQoYXNPYmplY3Qoa2V5KSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihrZXkuaXNPYmplY3QoKSAmJiBtYXAtPmhhcyhhc09iamVjdChrZXkpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICFtYXApOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDQ2
ZjJlN2U4ODlkNDg0N2U1NjllYjIwZmE2Yzg3ODg5NjUyNGY1MS4uZThiMjUzODBjZGJkMWM2MGRm
YTI3ZjkwNDJkNGNjY2YxYmJkMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCkBAIC00NSwzMyAr
NDUsMzIgQEAgdm9pZCBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgV2Vha09iamVjdFJlZlByb3RvdHlwZSogcHIKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtSZWYoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
UmVmKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yOjpXZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgY2FsbFdlYWtSZWYsIGNvbnN0cnVjdFdlYWtSZWYpCiB7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJXZWFrUmVmIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiV2Vha1JlZiIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2Vha1JlZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJGaXJz
dCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gV2Vha1JlZiBz
aG91bGQgYmUgYW4gb2JqZWN0Il9zKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxP
YmplY3Qodm0pOwotICAgIFN0cnVjdHVyZSogV2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rhcmdl
dCgpLCBnbG9iYWxPYmplY3QtPndlYWtPYmplY3RSZWZTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0
dXJlKiBXZWFrT2JqZWN0UmVmU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPndlYWtPYmplY3RSZWZTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNXZWFrT2JqZWN0UmVmOjpjcmVhdGUodm0sIFdlYWtPYmplY3RS
ZWZTdHJ1Y3R1cmUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2Vha09iamVj
dFJlZjo6Y3JlYXRlKHZtLCBXZWFrT2JqZWN0UmVmU3RydWN0dXJlLCBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCmlu
ZGV4IDUyZjllYWNkYTAxMzFkMzUxMTEwMjRlYWYxMzc1ZjRjMDNlM2FkOTUuLjg5OWNkM2E4NWEx
ZTI2NTM1N2I5MmYwNjI0OWVlZmQyMjJhOWU5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vha09iamVjdFJl
ZlByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vha1JlZiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSkgfTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRl
cmVmKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jV2Vha1JlZkRlcmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHZvaWQg
V2Vha09iamVjdFJlZlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNDcsOSArNDcsOSBAQCB2b2lkIFdlYWtPYmplY3RS
ZWZQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJXZWFrUmVmIiksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAK
LUFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJlZiogZ2V0V2Vha1JlZihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vh
a09iamVjdFJlZiogZ2V0V2Vha1JlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJh
bWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUu
aXNPYmplY3QoKSkpIHsKQEAgLTY1LDEwICs2NSwxMCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBK
U1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
dgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtSZWZEZXJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRlcmVmKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKLSAgICBhdXRvKiByZWYgPSBnZXRXZWFrUmVmKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8qIHJlZiA9IGdldFdlYWtSZWYoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghcmVmKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCA2NTI0OWQ1YmMwYTE1NGE2Y2Qx
M2IyZWQzZTQ3NWY1ZGZiYjFlOGI4Li4xN2RlYjg4NTU3YzJhMzZlODU5Y2RlNGUwODNhNTBjN2U5
ZGMyMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDQ4ICs0NSw0NyBAQCB2b2lkIFdlYWtTZXRDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUp
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6
V2Vha1NldENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrU2V0LCBjb25zdHJ1Y3RXZWFrU2V0KQogewogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1Nl
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIldlYWtTZXQiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrU2V0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVy
ZSogd2Vha1NldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53
ZWFrU2V0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha1NldCogd2Vha1NldCA9IEpTV2Vha1NldDo6Y3JlYXRl
KHZtLCB3ZWFrU2V0U3RydWN0dXJlKTsKLSAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUod2Vha1NldCk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3
ZWFrU2V0LT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CisgICAg
SlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha1NldC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUs
IHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFk
ZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKIAogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZN
JiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0
ZXJhYmxlKGNhbGxGcmFtZSwgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIG5leHRWYWx1ZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobmV4dFZhbHVlKTsKICAgICAgICAgQVNT
RVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgY2FsbChleGVjLCBhZGRl
ckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwg
d2Vha1NldCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFkZGVyRnVuY3Rp
b24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrU2V0
LCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3ZWFr
U2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3Rv
dHlwZS5jcHAKaW5kZXggZjVlMDc4MDFmYzgwMTEyODBmYmU3N2VlZDJhOTdhNmVlZGZjNzgxMy4u
MGY3MzVkYjBmZDYxNzNmNDI3ZGFjNWNhYzA1YzJiMjAxYWJiMjRjMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKQEAgLTMzLDkg
KzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrU2V0UHJvdG90
eXBlOjpzX2luZm8gPSB7ICJXZWFrU2V0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWFrU2V0UHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1Nl
dEhhcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
b3RvRnVuY1dlYWtTZXRBZGQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFr
U2V0SGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNDksOSArNDksOSBAQCB2b2lk
IFdlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiV2Vha1NldCIpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dl
YWtTZXQqIGdldFdlYWtTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2Jq
ZWN0KCkpKSB7CkBAIC02NywzMCArNjcsMzAgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFr
U2V0KiBnZXRXZWFrU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtTZXREZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogc2V0ID0gZ2V0V2Vh
a1NldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHNldCA9
IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBzZXQt
PnJlbW92ZShhc09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogc2V0ID0gZ2V0
V2Vha1NldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHNl
dCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBz
ZXQtPmhhcyhhc09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZy
YW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFr
U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0g
Z2V0V2Vha1NldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFzZXQpOwog
ICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDM1
NTkyYTQwMGI3OTE2YzBjYTQ5MzA0NTI1YzE3ODkyZjc3YTMwN2QuLjI1N2IyOTU1M2NhYTJmN2Qx
NGE4YTVkYzY3MGQxNDkxNmM2ZThjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKQEAgLTg4NSwxMSArODg1LDExIEBAIGNsYXNzIERPTUpJVEdldHRlckNv
bXBsZXggOiBwdWJsaWMgRE9NSklUTm9kZSB7CiBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQor
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhj
ZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byogb2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxET01KSVRHZXR0ZXJDb21wbGV4Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvKiBvYmplY3QgPSBq
c0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgICAgIGlmIChvYmplY3QpCiAgICAgICAgICAgICBvYmplY3QtPm1fZW5hYmxl
RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTk0OSwxNiArOTQ5LDE2IEBAIGNsYXNzIERPTUpJVEZ1bmN0aW9uT2JqZWN0
IDogcHVibGljIERPTUpJVE5vZGUgewogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVD
aGVjayhFeGVjU3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERP
TUpJVE5vZGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBET01KSVROb2RlKiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMDI4LDE1
ICsxMDI4LDE1IEBAIGNsYXNzIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QgOiBwdWJsaWMgRE9N
SklUTm9kZSB7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEV4ZWNTdGF0
ZSogZXhlYykKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldpdGhUeXBlQ2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVRDaGVj
a1N1YkNsYXNzT2JqZWN0Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogICAg
IH0KIApAQCAtMTI5NCw4ICsxMjk0LDggQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFJvb3QqIHJvb3QpCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFk
ZEJ5dGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJB
ZGRCeXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY2xhc3MgV2FzbVN0cmVhbWluZ1BhcnNlciA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMzYwLDI2ICsxMzYw
LDI2IEBAIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogCiBjb25zdCBDbGFzc0luZm8gV2FzbVN0cmVhbWluZ1BhcnNlcjo6c19pbmZvID0g
eyAiV2FzbVN0cmVhbWluZ1BhcnNlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoV2FzbVN0cmVhbWluZ1BhcnNlcikgfTsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2Fz
bVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShleGVjLT52bSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgp
KTsKIAotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQ
YXJzZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKSk7CiAKLSAgICBhdXRvIGRh
dGEgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIGRhdGEgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGhpc09iamVjdC0+c3RyZWFtaW5nUGFyc2Vy
KCkuYWRkQnl0ZXMoYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmZpcnN0KSwgZGF0
YS5zZWNvbmQpKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFsaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFy
c2VyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVhbWlu
Z1BhcnNlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0
aGlzT2JqZWN0LT5zdHJlYW1pbmdQYXJzZXIoKS5maW5hbGl6ZSgpKSkpOwpAQCAtMTM5NSw3ICsx
Mzk1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTRG9sbGFyVk06OnNfaW5mbyA9IHsgIkRvbGxhclZN
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHAKIAogLy8gVHJpZ2dlcnMgYSBjcmFzaCBp
bW1lZGlhdGVseS4KIC8vIFVzYWdlOiAkdm0uY3Jhc2goKQotc3RhdGljIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEV4ZWNT
dGF0ZSopCitzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3Jhc2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgQ1JBU0goKTsKQEAgLTE0
MDMsMTQgKzE0MDMsMTQgQEAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEV4ZWNTdGEKIAogLy8gRXhlY3V0ZXMg
YSBicmVha3BvaW50IGluc3RydWN0aW9uIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0cnV0aHkg
b3IgaXMgdW5zZXQuCiAvLyBVc2FnZTogJHZtLmJyZWFrcG9pbnQoPGNvbmRpdGlvbj4pCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJyZWFrcG9pbnQoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25C
cmVha3BvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgLy8gTm90
aGluZyBzaG91bGQgdGhyb3cgaGVyZSBidXQgd2UgbWlnaHQgYXMgd2VsbCBkb3VibGUgY2hlY2su
Li4KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgVU5V
U0VEX1BBUkFNKHNjb3BlKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSB8fCBleGVj
LT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSB8fCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihjYWxsRnJhbWUp
KQogICAgICAgICBXVEZCcmVha3BvaW50VHJhcCgpOwogCiAgICAgcmV0dXJuIGVuY29kZWRKU1Vu
ZGVmaW5lZCgpOwpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25CcmVha3BvaW50KEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgREZHIGZyYW1lLgogLy8gVXNhZ2U6
IGlzREZHID0gJHZtLmRmZ1RydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25ERkdUcnVlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRGR1RydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKQEAgLTE0MjYsMTMgKzE0MjYsMTMgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25ERkdUcnVlKEV4ZWNTdGF0
ZSopCiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIEZUTCBmcmFt
ZS4KIC8vIFVzYWdlOiBpc0ZUTCA9ICR2bS5mdGxUcnVlKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRlRMVHJ1ZShFeGVjU3RhdGUqKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GVExUcnVlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1TWZlbmNlKEV4ZWNTdGF0ZSop
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdU1mZW5jZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAgLTE0NDEsNyAr
MTQ0MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1
TWZlbmNlKEV4ZWNTdGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cHVSZHRzYyhFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcHVSZHRzYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lO
RE9XUykKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3B1UmR0c2MoRXhlY1N0YXRlKikKICNlbmRpZgogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEV4ZWNTdGF0ZSop
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ2Myw3ICsx
NDYzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVD
cHVpZChFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1
UGF1c2UoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3B1UGF1c2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRP
V1MpCkBAIC0xNDgxLDEzICsxNDgxLDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3B1UGF1c2UoRXhlY1N0YXRlKikKIC8vCiAvLyBJZiB0aGUgZmlyc3Qg
YXJndW1lbnQgaXMgbm90IGEgSlNBcnJheUJ1ZmZlciwgd2UgbG9hZCB0aGUgYnV0dGVyZmx5CiAv
LyBhbmQgY2xmbHVzaCBhdCB0aGUgYWRkcmVzcyBvZiB0aGUgYnV0dGVyZmx5Lgotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xm
bHVzaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIENQVShYODZfNjQp
ICYmICFPUyhXSU5ET1dTKQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0ludDMy
KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzSW50MzIoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIGF1dG8gY2xm
bHVzaCA9IFtdICh2b2lkKiBwdHIpIHsKQEAgLTE0OTgsMTEgKzE0OTgsMTEgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIFZlY3Rvcjx2b2lkKj4gdG9GbHVzaDsKIAotICAgIHVpbnQzMl90IG9mZnNl
dCA9IGV4ZWMtPmFyZ3VtZW50KDEpLmFzVUludDMyKCk7CisgICAgdWludDMyX3Qgb2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS5hc1VJbnQzMigpOwogCi0gICAgaWYgKEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCBleGVj
LT5hcmd1bWVudCgwKSkpCisgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5h
bWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkK
ICAgICAgICAgdG9GbHVzaC5hcHBlbmQoYml0d2lzZV9jYXN0PGNoYXIqPih2aWV3LT52ZWN0b3Io
KSkgKyBvZmZzZXQpOwotICAgIGVsc2UgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkgeworICAgIGVsc2UgaWYgKEpT
T2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKSB7CiAgICAgICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkg
ewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBB
TExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTE1MTksNyArMTUxOSw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xmbHVzaChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIGNsZmx1c2gocHRyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0cnVlKSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwogI2VuZGlmCiB9CkBAIC0xNTY4LDI1ICsxNTY4LDI1IEBAIHN0YXRp
YyBGdW5jdGlvbkV4ZWN1dGFibGUqIGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbihKU1ZhbHVlIHRo
ZUZ1bmN0aW9uVmFsdWUpCiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBp
cyBhIExMSW50IGZyYW1lLgogLy8gVXNhZ2U6IGlzTExJbnQgPSAkdm0ubGxpbnRUcnVlKCkKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTExpbnRUcnVlKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TExpbnRUcnVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBpZiAoIWV4ZWMpCisgICAgaWYg
KCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgQ2FsbGVyRnJhbWVKSVRUeXBlRnVuY3RvciBmdW5jdG9yOwotICAgIGV4ZWMtPml0
ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZ1bmN0b3Iuaml0VHlwZSgpID09IEpJVFR5
cGU6OkludGVycHJldGVyVGh1bmspKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJy
ZW50IGZyYW1lIGlzIGEgYmFzZWxpbmUgSklUIGZyYW1lLgogLy8gVXNhZ2U6IGlzQmFzZWxpbmVK
SVQgPSAkdm0uaml0VHJ1ZSgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkpJVFRydWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25KSVRUcnVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBp
ZiAoIWV4ZWMpCisgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQ2FsbGVyRnJhbWVKSVRUeXBlRnVuY3RvciBmdW5j
dG9yOwotICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRl
KGZ1bmN0b3IpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZ1bmN0b3Iu
aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKSk7CiB9CiAKQEAgLTE1OTQsMTMgKzE1
OTQsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KSVRU
cnVlKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVzYWdlOgogLy8gZnVuY3Rpb24gZigpIHsgfTsKIC8v
ICR2bS5ub0lubGluZShmKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTm9JbmxpbmUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Ob0lubGluZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAKLSAgICBKU1ZhbHVlIHRoZUZ1bmN0aW9uVmFsdWUgPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRoZUZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwogCiAgICAgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbih0aGVGdW5jdGlvblZhbHVlKSkKICAg
ICAgICAgZXhlY3V0YWJsZS0+c2V0TmV2ZXJJbmxpbmUodHJ1ZSk7CkBAIC0xNjEwLDI4ICsxNjEw
LDI4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9Jbmxp
bmUoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBSdW5zIGEgZnVsbCBHQyBzeW5jaHJvbm91c2x5Lgog
Ly8gVXNhZ2U6ICR2bS5nYygpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNSW5zcGVjdG9y
OjpnYyhleGVjKTsKKyAgICBWTUluc3BlY3Rvcjo6Z2MoY2FsbEZyYW1lKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAvLyBSdW5zIHRoZSBlZGVuR0Mg
c3luY2hyb25vdXNseS4KIC8vIFVzYWdlOiAkdm0uZWRlbkdDKCkKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKLSAgICBWTUluc3BlY3Rvcjo6ZWRlbkdDKGV4ZWMpOworICAgIFZNSW5zcGVj
dG9yOjplZGVuR0MoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCiAvLyBEdW1wcyB0aGUgaGFzaGVzIG9mIGFsbCBzdWJzcGFjZXMgY3Vy
cmVudGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgVk0uCiAvLyBVc2FnZTogJHZtLmR1bXBTdWJzcGFj
ZUhhc2hlcygpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1
bXBTdWJzcGFjZUhhc2hlcyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgVk1JbnNwZWN0b3I6OmR1bXBTdWJzcGFjZUhhc2hlcygmdm0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNjUwLDEy
ICsxNjUwLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RHVtcFN1YnNwYWNlSGFzaGVzKEV4ZWNTdGF0ZSogZXhlYykKIC8vIE5vdGU6IHlvdSBjYW5ub3Qg
dG9TdHJpbmcoKSBhIGNvZGVCbG9jaywgdW5saW5rZWRDb2RlQmxvY2ssIG9yIGV4ZWN1dGFibGUg
YmVjYXVzZQogLy8gdGhlcmUgYXJlIGludGVybmFsIG9iamVjdHMgYW5kIG5vdCBhIEpTIG9iamVj
dC4gSGVuY2UsIHlvdSBjYW5ub3QgZG8gc3RyaW5nCiAvLyBjb25jYXRlbmF0aW9uIHdpdGggdGhl
bS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbEZyYW1l
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2FsbEZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICB1bnNpZ25lZCBmcmFt
ZU51bWJlciA9IDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAo
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCF2YWx1ZS5p
c1VJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIApAQCAtMTY2NSwxOCArMTY2NSwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZy
YW1lTnVtYmVyID0gdmFsdWUuYXNVSW50MzIoKSArIDE7CiAgICAgfQogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0RvbGxhclZNQ2FsbEZyYW1lOjpjcmVhdGUoZXhlYywgZnJhbWVOdW1i
ZXIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRG9sbGFyVk1DYWxsRnJhbWU6OmNy
ZWF0ZShjYWxsRnJhbWUsIGZyYW1lTnVtYmVyKSk7CiB9CiAKIC8vIEdldHMgYSB0b2tlbiBmb3Ig
dGhlIENvZGVCbG9jayBmb3IgYSBzcGVjaWZpZWQgZnJhbWUgaW5kZXguCiAvLyBVc2FnZTogY29k
ZUJsb2NrVG9rZW4gPSAkdm0uY29kZUJsb2NrRm9yRnJhbWUoMCkgLy8gZnJhbWUgMCBpcyB0aGUg
dG9wIGZyYW1lLgogLy8gVXNhZ2U6IGNvZGVCbG9ja1Rva2VuID0gJHZtLmNvZGVCbG9ja0ZvckZy
YW1lKCkgLy8gaW1wbGllcyBmcmFtZSAwIGkuZS4gY3VycmVudCBmcmFtZS4KLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
b2RlQmxvY2tGb3JGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgdW5zaWduZWQgZnJh
bWVOdW1iZXIgPSAxOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMSkgewotICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKQEAgLTE2ODYsMjAgKzE2ODYsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIGZyYW1lTnVtYmVyID0gdmFsdWUuYXNVSW50MzIoKSArIDE7CiAgICAgfQogCi0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yRnJhbWUoZXhl
YywgZnJhbWVOdW1iZXIpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gVk1JbnNwZWN0b3I6
OmNvZGVCbG9ja0ZvckZyYW1lKGNhbGxGcmFtZSwgZnJhbWVOdW1iZXIpOwogICAgIGlmIChjb2Rl
QmxvY2spCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29kZUJsb2NrKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgQ29kZUJs
b2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBDb2RlQmxvY2sq
IGNvZGVCbG9ja0Zyb21BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAx
KQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBDb2RlQmxvY2sqIGNhbmRp
ZGF0ZUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFs
dWUuYXNDZWxsKCkpOwpAQCAtMTcxMiw3ICsxNzEyLDcgQEAgc3RhdGljIENvZGVCbG9jayogY29k
ZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjYW5kaWRhdGVDb2Rl
QmxvY2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQog
Ci0gICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rvcjo6aXNWYWxpZENvZGVC
bG9jayhleGVjLCBjYW5kaWRhdGVDb2RlQmxvY2spKQorICAgIGlmIChjYW5kaWRhdGVDb2RlQmxv
Y2sgJiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxvY2soY2FsbEZyYW1lLCBjYW5kaWRhdGVD
b2RlQmxvY2spKQogICAgICAgICByZXR1cm4gY2FuZGlkYXRlQ29kZUJsb2NrOwogCiAgICAgaWYg
KGNhbmRpZGF0ZUNvZGVCbG9jaykKQEAgLTE3MjYsMjQgKzE3MjYsMjQgQEAgc3RhdGljIENvZGVC
bG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAvLyBVc2FnZTogJHZtLnBy
aW50KCJjb2RlYmxvY2sgPSAiLCAkdm0uY29kZUJsb2NrRm9yKGNvZGVCbG9ja1Rva2VuKSkKIC8v
IE5vdGU6IHlvdSBjYW5ub3QgdG9TdHJpbmcoKSBhIGNvZGVCbG9jayBiZWNhdXNlIGl0J3MgYW4g
aW50ZXJuYWwgb2JqZWN0IGFuZCBub3QKIC8vIGEgSlMgb2JqZWN0LiBIZW5jZSwgeW91IGNhbm5v
dCBkbyBzdHJpbmcgY29uY2F0ZW5hdGlvbiB3aXRoIGl0Lgotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNvZGVCbG9ja0Zyb21BcmcoZXhlYyk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
b2RlQmxvY2tGcm9tQXJnKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKICAgICBXVEY6OlN0cmlu
Z1ByaW50U3RyZWFtIHN0cmVhbTsKICAgICBpZiAoY29kZUJsb2NrKSB7CiAgICAgICAgIHN0cmVh
bS5wcmludCgqY29kZUJsb2NrKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RyZWFtLnRvU3RyaW5n
KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAogLy8gVXNhZ2U6ICR2bS5kdW1wU291cmNlRm9yKGZ1bmN0aW9uT2JqKQogLy8gVXNhZ2U6
ICR2bS5kdW1wU291cmNlRm9yKGNvZGVCbG9ja1Rva2VuKQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU291cmNlRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFNvdXJjZUZvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY29kZUJsb2NrRnJvbUFyZyhleGVjKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNvZGVCbG9ja0Zyb21BcmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogICAgIGlmIChjb2Rl
QmxvY2spCiAgICAgICAgIGNvZGVCbG9jay0+ZHVtcFNvdXJjZSgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNzUxLDIxICsxNzUxLDIxIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFNvdXJjZUZvcihFeGVj
U3RhdGUqIGV4ZWMpCiAKIC8vIFVzYWdlOiAkdm0uZHVtcEJ5dGVjb2RlRm9yKGZ1bmN0aW9uT2Jq
KQogLy8gVXNhZ2U6ICR2bS5kdW1wQnl0ZWNvZGVGb3IoY29kZUJsb2NrKQotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQnl0ZWNvZGVGb3IoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
Qnl0ZWNvZGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZXhlYyk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsK
ICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZSgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBkb1ByaW50KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBhZGRMaW5lRmVlZCkK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBib29sIGFkZExpbmVGZWVkKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoaSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
Z2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSk7CiAgICAgICAgIGlmIChhcmcuaXNDZWxsKCkKICAg
ICAgICAgICAgICYmICFhcmcuaXNPYmplY3QoKQogICAgICAgICAgICAgJiYgIWFyZy5pc1N0cmlu
ZygpCkBAIC0xNzczLDcgKzE3NzMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludChF
eGVjU3RhdGUqIGV4ZWMsIGJvb2wgYWRkTGluZUZlZWQpCiAgICAgICAgICAgICBkYXRhTG9nKGFy
Zyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcgYXJn
U3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAg
ICAgIFN0cmluZyBhcmdTdHIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvV1RG
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkYXRhTG9nKGFyZ1N0cik7CiAgICAgfQpAQCAtMTc4
NCw0MSArMTc4NCw0MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludChFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wgYWRkTGluZUZlZWQpCiAKIC8vIFByaW50cyBhIHNlcmllcyBvZiBjb21tYSBz
ZXBhcmF0ZSBzdHJpbmdzIHdpdGhvdXQgYXBwZW5kaW5nIGEgbmV3bGluZS4KIC8vIFVzYWdlOiAk
dm0uZGF0YUxvZyhzdHIxLCBzdHIyLCBzdHIzKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EYXRhTG9nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGF0YUxvZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwogICAgIGNvbnN0IGJvb2wgYWRkTGluZUZlZWQgPSBmYWxzZTsKLSAg
ICByZXR1cm4gZG9QcmludChleGVjLCBhZGRMaW5lRmVlZCk7CisgICAgcmV0dXJuIGRvUHJpbnQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFkZExpbmVGZWVkKTsKIH0KIAogLy8gUHJpbnRzIGEg
c2VyaWVzIG9mIGNvbW1hIHNlcGFyYXRlIHN0cmluZ3MgYW5kIGFwcGVuZHMgYSBuZXdsaW5lLgog
Ly8gVXNhZ2U6ICR2bS5wcmludChzdHIxLCBzdHIyLCBzdHIzKQotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgY29uc3QgYm9vbCBhZGRMaW5lRmVlZCA9IHRydWU7
Ci0gICAgcmV0dXJuIGRvUHJpbnQoZXhlYywgYWRkTGluZUZlZWQpOworICAgIHJldHVybiBkb1By
aW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhZGRMaW5lRmVlZCk7CiB9CiAKIC8vIER1bXBz
IHRoZSBjdXJyZW50IENhbGxGcmFtZS4KIC8vIFVzYWdlOiAkdm0uZHVtcENhbGxGcmFtZSgpCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBDYWxsRnJhbWUo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EdW1wQ2FsbEZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAvLyBXaGVuIHRo
ZSBjYWxsZXJzIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhleSBhcmUgZXhwZWN0aW5nIHRvIGR1bXAg
dGhlaXIKICAgICAvLyBvd24gZnJhbWUuIFNvIHNraXAgMSBmb3IgdGhpcyBmcmFtZS4KLSAgICBW
TUluc3BlY3Rvcjo6ZHVtcENhbGxGcmFtZShleGVjLCAxKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVt
cENhbGxGcmFtZShjYWxsRnJhbWUsIDEpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKIC8vIER1bXBzIHRoZSBKUyBzdGFjay4KIC8vIFVzYWdlOiAkdm0u
cHJpbnRTdGFjaygpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBTdGFjayhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkR1bXBTdGFjayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgLy8g
V2hlbiB0aGUgY2FsbGVycyBjYWxsIHRoaXMgZnVuY3Rpb24sIHRoZXkgYXJlIGV4cGVjdGluZyB0
byBkdW1wIHRoZQogICAgIC8vIHN0YWNrIHN0YXJ0aW5nIHRoZWlyIG93biBmcmFtZS4gU28gc2tp
cCAxIGZvciB0aGlzIGZyYW1lLgotICAgIFZNSW5zcGVjdG9yOjpkdW1wU3RhY2soZXhlYywgMSk7
CisgICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFjayhjYWxsRnJhbWUsIDEpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTE4MjcsMTIgKzE4MjcsMTIg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU3RhY2so
RXhlY1N0YXRlKiBleGVjKQogLy8gVXNhZ2U6ICR2bS5kdW1wUmVnaXN0ZXJzKCkgLy8gZHVtcCB0
aGUgcmVnaXN0ZXJzIG9mIHRoZSBjdXJyZW50IENhbGxGcmFtZS4KIC8vIEZJWE1FOiBDdXJyZW50
bHksIHRoaXMgZnVuY3Rpb24gZHVtcHMgdGhlIHBoeXNpY2FsIGZyYW1lLiBXZSBzaG91bGQgbWFr
ZQogLy8gaXQgZHVtcCB0aGUgbG9naWNhbCBmcmFtZSAoaS5lLiBiZSBhYmxlIHRvIGR1bXAgaW5s
aW5lZCBmcmFtZXMgYXMgd2VsbCkuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICAgICB1bnNpZ25lZCByZXF1ZXN0ZWRGcmFtZUluZGV4ID0gMTsKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIXZhbHVlLmlzVUludDMyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xODQzLDcgKzE4
NDMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBS
ZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIHVuc2lnbmVkIGZyYW1lSW5k
ZXggPSAwOwotICAgIGV4ZWMtPml0ZXJhdGUoWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsK
KyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKICAg
ICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgaWYgKGZyYW1l
SW5kZXgrKyAhPSByZXF1ZXN0ZWRGcmFtZUluZGV4KQogICAgICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6Q29udGludWU7CkBAIC0xODU2LDEwICsxODU2LDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJlZ2lzdGVycyhFeGVjU3RhdGUqIGV4
ZWMpCiAKIC8vIER1bXBzIHRoZSBpbnRlcm5hbCBtZW1vcnkgbGF5b3V0IG9mIGEgSlNDZWxsLgog
Ly8gVXNhZ2U6ICR2bS5kdW1wQ2VsbChjZWxsKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2VsbChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBDZWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogICAgIApAQCAtMTg2OSwy
MiArMTg2OSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBDZWxsKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gR2V0cyB0aGUgZGF0YUxvZyBkdW1wIG9m
IHRoZSBpbmRleGluZ01vZGUgb2YgdGhlIHBhc3NlZCB2YWx1ZS4KIC8vIFVzYWdlOiAkdm0ucHJp
bnQoImluZGV4aW5nTW9kZSA9ICIgKyAkdm0uaW5kZXhpbmdNb2RlKGpzVmFsdWUpKQotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmRleGluZ01vZGUoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25J
bmRleGluZ01vZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsK
IAogICAgIFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwotICAgIHN0cmVhbS5wcmludChJ
bmRleGluZ1R5cGVEdW1wKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5p
bmRleGluZ01vZGUoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhl
Yy0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKKyAgICBzdHJlYW0ucHJpbnQoSW5kZXhpbmdU
eXBlRHVtcChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5pbmRl
eGluZ01vZGUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFs
T2JqZWN0LT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklubGluZUNhcGFjaXR5KEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSW5saW5lQ2Fw
YWNpdHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5pbmxpbmVDYXBhY2l0eSgpKSk7CiAKICAg
ICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBAIC0xODkyLDIyICsxODkyLDIyIEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHko
RXhlY1N0YXRlKiBleGVjKQogCiAvLyBHZXRzIHRoZSBkYXRhTG9nIGR1bXAgb2YgYSBnaXZlbiBK
UyB2YWx1ZSBhcyBhIHN0cmluZy4KIC8vIFVzYWdlOiAkdm0ucHJpbnQoInZhbHVlID0gIiArICR2
bS52YWx1ZShqc1ZhbHVlKSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uVmFsdWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwogICAgIFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAg
IGlmIChpKQogICAgICAgICAgICAgc3RyZWFtLnByaW50KCIsICIpOwotICAgICAgICBzdHJlYW0u
cHJpbnQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBzdHJlYW0ucHJpbnQo
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgfQogICAgIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0o
KSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKIH0KIAogLy8gR2V0cyB0aGUgcGlkIG9mIHRoZSBjdXJy
ZW50IHByb2Nlc3MuCiAvLyBVc2FnZTogJHZtLnByaW50KCJwaWQgPSAiICsgJHZtLmdldHBpZCgp
KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQSUQoRXhl
Y1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0
UElEKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpKSk7CkBAIC0xOTE1LDM0MiArMTkxNSwzNDEgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQSUQoRXhlY1N0YXRlKikKIAog
Ly8gTWFrZSB0aGUgZ2xvYmFsT2JqZWN0IGhhdmUgYSBiYWQgdGltZS4gRG9lcyBub3RoaW5nIGlm
IHRoZSBvYmplY3QgaXMgbm90IGEgSlNHbG9iYWxPYmplY3QuCiAvLyBVc2FnZTogJHZtLmhhdmVB
QmFkVGltZShnbG9iYWxPYmplY3QpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkhhdmVBQmFkVGltZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhdmVBQmFkVGltZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBK
U1ZhbHVlIG9ialZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmpWYWx1
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmpWYWx1ZS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCiAg
ICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KG9ialZhbHVlLmFzQ2VsbCgpKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KHZtLCBvYmopOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgIEpTR2xvYmFsT2JqZWN0KiB0
YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odm0sIG9iaik7CisgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAot
ICAgIGdsb2JhbE9iamVjdC0+aGF2ZUFCYWRUaW1lKHZtKTsKKyAgICB0YXJnZXQtPmhhdmVBQmFk
VGltZSh2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwog
fQogCiAvLyBDaGVja3MgaWYgdGhlIG9iamVjdCAob3IgaXRzIGdsb2JhbCBpZiB0aGUgb2JqZWN0
IGlzIG5vdCBhIGdsb2JhbCkgaXMgaGF2aW5nIGEgYmFkIHRpbWUuCiAvLyBVc2FnZTogJHZtLmlz
SGF2aW5nQUJhZFRpbWUob2JqKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBKU1ZhbHVlIG9ialZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBv
YmpWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmpWYWx1ZS5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KG9ialZhbHVlLmFzQ2VsbCgpKTsKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KHZtLCBvYmopOwotICAgIGlmIChnbG9iYWxPYmplY3QpCi0gICAgICAgIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKTsKKyAgICBK
U0dsb2JhbE9iamVjdCogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZt
LCBvYmopOworICAgIGlmICh0YXJnZXQpCisgICAgICAgIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4odGFyZ2V0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKTsKIAotICAgIGdsb2JhbE9iamVjdCA9IG9i
ai0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgdGFyZ2V0PSBv
YmotPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmlzSGF2aW5nQUJhZFRpbWUoKSkp
OwogfQogCiAvLyBDcmVhdGVzIGEgbmV3IGdsb2JhbCBvYmplY3QuCiAvLyBVc2FnZTogJHZtLmNy
ZWF0ZUdsb2JhbE9iamVjdCgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGpzTnVsbCgpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0g
ICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU09i
amVjdCoganNUYXJnZXQgPSBhc09iamVjdCh0YXJnZXQuYXNDZWxsKCkpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQ
cm94eVR5cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzVGFyZ2V0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
LCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkqIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b3h5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJ1bnRpbWVBcnJheSog
YXJyYXkgPSBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhjYWxsRnJhbWUpOworICAgIFJ1bnRpbWVBcnJheSogYXJyYXkgPSBSdW50aW1lQXJyYXk6OmNy
ZWF0ZShjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyYXkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU51bGxS
b3BlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTnVsbFJvcGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTUm9wZVN0cmluZzo6Y3JlYXRlTnVsbEZvclRlc3Rpbmcodm0pKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgSlNWYWx1ZSB0YXJnZXQg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgSlNPYmplY3QqIGRlbGVnYXRlID0gbnVsbHB0cjsKICAgICBpZiAodGFy
Z2V0LmlzT2JqZWN0KCkpCiAgICAgICAgIGRlbGVnYXRlID0gYXNPYmplY3QodGFyZ2V0LmFzQ2Vs
bCgpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEltcHVyZUdldHRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEltcHVyZUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIHJlc3VsdCA9IEltcHVy
ZUdldHRlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGRlbGVnYXRlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9t
R2V0dGVyT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDdXN0b21HZXR0ZXI6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDdXN0b21HZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgQ3VzdG9tR2V0dGVyKiByZXN1bHQg
PSBDdXN0b21HZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVE5vZGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBET01KSVRHZXR0ZXI6OmNyZWF0
ZSh2bSwgRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwganNOdWxsKCkpKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01K
SVROb2RlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgRE9NSklUR2V0dGVyOjpj
cmVhdGUodm0sIERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGpzTnVsbCgpKSkpOwogICAgIERPTUpJVE5vZGUqIHJlc3VsdCA9IERPTUpJVE5vZGU6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9N
SklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051
bGwoKSk7CiAgICAgRE9NSklUR2V0dGVyKiByZXN1bHQgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2
bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyQ29tcGxleE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAg
RE9NSklUR2V0dGVyQ29tcGxleCogcmVzdWx0ID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAgIERPTUpJVEdldHRlckNvbXBsZXgqIHJlc3Vs
dCA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRGdW5jdGlvbk9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZURPTUpJVEZ1bmN0aW9uT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBET01KSVRGdW5jdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKLSAgICBET01KSVRGdW5jdGlvbk9iamVj
dCogcmVzdWx0ID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
RE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBq
c051bGwoKSk7CisgICAgRE9NSklURnVuY3Rpb25PYmplY3QqIHJlc3VsdCA9IERPTUpJVEZ1bmN0
aW9uT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklUQ2hlY2tTdWJDbGFz
c09iamVjdCogcmVzdWx0ID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAgIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qq
IHJlc3VsdCA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01K
SVRHZXR0ZXJCYXNlSlNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckJhc2VKU09iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckJhc2VKU09iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBET01KSVRHZXR0
ZXJCYXNlSlNPYmplY3QqIHJlc3VsdCA9IERPTUpJVEdldHRlckJhc2VKU09iamVjdDo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ1BhcnNlcihFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVdhc21T
dHJlYW1pbmdQYXJzZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhc21TdHJlYW1pbmdQ
YXJzZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShXYXNtU3RyZWFtaW5nUGFyc2VyOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCkpOwogfQogI2VuZGlmCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVTdGF0aWND
dXN0b21BY2Nlc3NvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RhdGljQ3VzdG9tQWNj
ZXNzb3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBq
c051bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdGF0aWNDdXN0b21BY2Nlc3Nv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBhdXRv
KiByZXN1bHQgPSBTdGF0aWNDdXN0b21BY2Nlc3Nvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldEltcHVyZUdldHRlckRlbGVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgYmFzZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgYmFzZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFiYXNlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgSlNWYWx1ZSBkZWxlZ2F0ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAg
IEpTVmFsdWUgZGVsZWdhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghZGVs
ZWdhdGUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIGltcHVyZUdldHRlciA9IGpzRHluYW1pY0Nhc3Q8
SW1wdXJlR2V0dGVyKj4odm0sIGFzT2JqZWN0KGJhc2UuYXNDZWxsKCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWltcHVyZUdldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYW4gSW1wdXJlR2V0dGVyIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0
ZXIiX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgaW1w
dXJlR2V0dGVyLT5zZXREZWxlZ2F0ZSh2bSwgYXNPYmplY3QoZGVsZWdhdGUuYXNDZWxsKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVCdWlsdGluKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEgfHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCisgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSB8fCAhY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgU3RyaW5nIGZ1bmN0aW9uVGV4dCA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZ1bmN0aW9uVGV4dCA9IGFzU3RyaW5n
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgU291cmNlQ29kZSBz
b3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwgeyB9KTsKLSAgICBKU0Z1bmN0aW9uKiBm
dW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwg
c291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgbnVs
bHB0ciwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0Z1bmN0
aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vIiksIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2
bSwgbnVsbHB0ciwgc291cmNlKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZnVuYyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR2V0UHJpdmF0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIg
fHwgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpIDwgMiB8fCAhY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKQog
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiAKLSAgICBTdHJpbmcgc3RyID0g
YXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3Ry
ID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAK
ICAgICBTeW1ib2xJbXBsKiBzeW1ib2wgPSB2bS5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRl
TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBzdHIpKTsKICAgICBpZiAoIXN5bWJvbCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIlVua25vd24gcHJpdmF0
ZSBuYW1lLiIpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJVbmtub3duIHByaXZhdGUgbmFtZS4iKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmFyZ3VtZW50KDApLmdldChleGVjLCBzeW1ib2wpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS5nZXQoY2FsbEZyYW1lLCBzeW1ib2wpKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJv
b3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJvb3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSb290Ojpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJv
b3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOwor
ICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ2Fubm90IGNy
ZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBy
b290KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ2Fubm90IGNyZWF0ZSBFbGVt
ZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVs
ZW1lbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCByb290KSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVudChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1l
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBl
eGVjLT5hcmd1bWVudCgwKSk7CisgICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+
KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgRWxlbWVudCogcmVzdWx0
ID0gcm9vdC0+ZWxlbWVudCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8g
cmVzdWx0IDoganNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTaW1wbGVPYmplY3Q6OmNyZWF0ZSh2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShTaW1wbGVPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0SGlkZGVuVmFsdWUoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25H
ZXRIaWRkZW5WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBTaW1wbGVPYmpl
Y3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGdldEhp
ZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlv
biJfcyk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNpbXBsZU9iamVjdC0+aGlkZGVuVmFsdWUoKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRIaWRkZW5WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBTaW1w
bGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghc2ltcGxlT2JqZWN0
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgdXNlIG9m
IHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUgdGVzdCBm
dW5jdGlvbiJfcyk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgc2ltcGxlT2JqZWN0LT5zZXRIaWRkZW5WYWx1
ZSh2bSwgdmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93
Q2hpY2tlbkZ1bmN0aW9uc09uU3RhY2soRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rpb25zT25TdGFj
ayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoYXV0byogc2hhZG93Q2hpY2tlbiA9
IHZtLnNoYWRvd0NoaWNrZW4oKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hhZG93Q2hpY2tlbi0+ZnVuY3Rpb25zT25TdGFjayhl
eGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hhZG93Q2hpY2tlbi0+ZnVu
Y3Rpb25zT25TdGFjayhjYWxsRnJhbWUpKTsKICAgICB9CiAKLSAgICBKU0FycmF5KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoZXhlYywgJnZtLCBbJl0gKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgIFN0YWNr
VmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCAmdm0sIFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
KSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CiAgICAgICAgIGlmICh2aXNpdG9yLT5pc0lubGluZWRGcmFtZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgICAgIGlmICh2aXNp
dG9yLT5pc1dhc21GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7Ci0gICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih2aXNp
dG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOworICAgICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1l
LCBqc0Nhc3Q8SlNPYmplY3QqPih2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOwogICAgICAg
ICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsgLy8gVGhpcyBmdW5jdGlvbiBpcyBv
bmx5IGNhbGxlZCBmcm9tIHRlc3RzLgogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250
aW51ZTsKICAgICB9KTsKQEAgLTIyNTgsODEgKzIyNTcsODEgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayhF
eGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xh
cmF0aW9uU2hvdWxkTm90VGhyb3coRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91
bGROb3RUaHJvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uc2V0R2xvYmFs
Q29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coZmFsc2UpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JF
eHByZXNzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0udHlwZVByb2ZpbGVyKCkpOwogICAgIHZtLnR5cGVQcm9maWxlckxvZygp
LT5wcm9jZXNzTG9nRW50cmllcyh2bSwgImpzYyBUZXN0aW5nIEFQSTogZnVuY3Rpb25GaW5kVHlw
ZUZvckV4cHJlc3Npb24iX3MpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0p
KTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpz
RXhlY3V0YWJsZSgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNT
dHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50
KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS5pc1N0cmluZygpKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQo
c3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAgIAog
ICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0udHlwZVByb2ZpbGVyKCktPnR5cGVJbmZvcm1hdGlv
bkZvckV4cHJlc3Npb25BdE9mZnNldChUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFs
LCBvZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHZtKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVjLCBqc29uU3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU09OUGFyc2UoY2FsbEZyYW1lLCBqc29uU3RyaW5nKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmV0dXJuVHlwZUZvcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJldHVyblR5cGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7CiAgICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJl
dHVyblR5cGVGb3IiX3MpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsK
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhl
Y3V0YWJsZSgpOwogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gZXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KHZtKTsKICAgICBTdHJpbmcganNvblN0cmluZyA9IHZtLnR5cGVQcm9m
aWxlcigpLT50eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuLCBvZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJj
ZUlEKCksIHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVjLCBq
c29uU3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoY2FsbEZy
YW1lLCBqc29uU3RyaW5nKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFy
eU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpICYm
IHZhbHVlLmdldE9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIHZh
bHVlLmdldE9iamVjdCgpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAgICAgcmV0dXJu
IGVuY29kZWRKU1VuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJh
c2ljQmxvY2tFeGVjdXRpb25SYW5nZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAgICAgdm0uY29udHJv
bEZsb3dQcm9maWxlcigpLT5kdW1wRGF0YSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1
bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmpl
Y3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhleGVj
LT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3Ry
aW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFN0cmlu
ZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHNvdXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykp
OwogICAgIGludCBvZmZzZXQgPSBzb3VyY2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVj
dXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOwpAQCAtMjM0MSwxOCArMjM0MCwxOCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tF
eGVjdXRlZChFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGhhc0V4ZWN1dGVkKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1
dGlvbkNvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKIAotICAgIEpTVmFsdWUgZnVu
Y3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25W
YWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgp
LT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0
cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHN1YnN0cmlu
ZyA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShjYWxsRnJhbWUpOwog
ICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50
b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNvdXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1
YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3VyY2VDb2RlVGV4dC5maW5kKHN1YnN0cmlu
ZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOwpAQCAtMjM2MSw3ICsyMzYw
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Js
b2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShleGVjdXRpb25Db3VudCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKikKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6
eihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKICAgICBPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkgPSB0cnVlOwpA
QCAtMjQxMiwyMiArMjQxMSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hhbmdlRGVidWdn
ZXJNb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjLCBPcHRpb25TZXQ8Q29kZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
cmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxlKGV4ZWMsIHsgQ29kZUdlbmVyYXRpb25N
b2RlOjpEZWJ1Z2dlciB9KTsKKyAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUo
Y2FsbEZyYW1lLCB7IENvZGVHZW5lcmF0aW9uTW9kZTo6RGVidWdnZXIgfSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9k
ZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKLSAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUoZXhlYywgeyB9
KTsKKyAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUoY2FsbEZyYW1lLCB7IH0p
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbGV0
ZUFsbENvZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbGV0ZUFsbENvZGVXaGVuSWRsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgVk0qIHZtID0gJmds
b2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS0+d2hlbklkbGUoWz1dICgpIHsKICAgICAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgdm0tPmRlbGV0ZUFsbENvZGUo
UHJldmVudENvbGxlY3Rpb25BbmREZWxldGVBbGxDb2RlKTsKQEAgLTI0MzUsNDEgKzI0MzQsNDEg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxldGVBbGxD
b2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkdsb2JhbE9iamVjdENvdW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2xvYmFsT2JqZWN0Q291bnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhl
Yy0+dm0oKS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwLmdsb2JhbE9iamVjdENvdW50
KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25H
bG9iYWxPYmplY3RGb3JPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KGV4
ZWMtPnZtKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiByZXN1
bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPmdsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEdldHRlclNldHRlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHByb3BlcnR5ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBwcm9wZXJ0eSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm9w
ZXJ0eS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N0cmluZyhwcm9wZXJ0eSktPnRv
SWRlbnRpZmllcihleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3Bl
cnR5KS0+dG9JZGVudGlmaWVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3Qo
Y2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKQEAgLTI0ODEsMTUgKzI0ODAsMTUg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2Fk
R2V0dGVyRnJvbUdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIg
PSBqc0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBqc0R5bmFtaWNDYXN0PEdldHRlclNldHRl
cio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWdldHRl
clNldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbnZhbGlk
IHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBhcmd1bWVu
dCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIg
dGVzdCBmdW5jdGlvbjogYXJndW1lbnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9zKTsKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0yNDk4LDIwICsyNDk3LDE5
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZEdldHRl
ckZyb21HZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShn
ZXR0ZXIpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21UZXN0R2V0dGVy
U2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZs
aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBKU09iamVjdCogYSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
ZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIEpTT2JqZWN0KiBiID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIEpTT2JqZWN0KiBhID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBKU09iamVjdCogYiA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKCFhIHx8ICFi
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFBOYU4pKTsKIApAQCAt
MjUyMywyMCArMjUyMSwyMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZsaWVzKEV4ZWNTdGF0ZSogZQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVsdGEpKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxHQ1Rp
bWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Ub3RhbEdDVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLnRvdGFsR0NUaW1lKCkuc2Vjb25k
cygpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UGFyc2VDb3VudChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QYXJzZUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoZ2xvYmFsUGFyc2VDb3VudC5sb2FkKCkpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1dhc21TdXBwb3J0ZWQoRXhlY1N0
YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNXYXNt
U3VwcG9ydGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbWJlZGRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmgKaW5kZXggYTIzNzlmZDU4OWM4OWRmNjM1
N2U2ZTQ0MWJlZDJhNTE4NzM5Y2EzZS4uOTdiYjEwYzk4ZThjZjkzZWE3M2QxOTg1OWVhNzhhNjQ5
ZDg2NjhjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVtYmVk
ZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmgKQEAg
LTM2LDcgKzM2LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNl
IFdhc20gewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuY3BwCmluZGV4IGQxYjM4YTE0OGEyYjQ5NDFmY2U2OTI3MjcxOTNlYWNmMTdhMGZkMjEuLjM5
NDY0YThhYzAzMzgxM2YyNzcyMDQxZTY4ZGE3ZDAwMzk3NGMwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC02OSw5ICs2OSw5IEBA
IEZPUl9FQUNIX1dFQkFTU0VNQkxZX0NPTlNUUlVDVE9SX1RZUEUoREVGSU5FX0NBTExCQUNLX0ZP
Ul9DT05TVFJVQ1RPUikKIAogI3VuZGVmIERFRklORV9DQUxMQkFDS19GT1JfQ09OU1RSVUNUT1IK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
RnVuYyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5j
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlWYWxpZGF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC0x
NTgsMjMgKzE1OCwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5
bmNJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZgogICAgIH0pKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVu
YyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKIAotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNl
RGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIHsKICAgICAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVh
dGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1
ZSh2bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAogICAgICAgICBpZiAo
VU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICByZWplY3QoZXhl
YywgY2F0Y2hTY29wZSwgcHJvbWlzZSk7CisgICAgICAgICAgICByZWplY3QoY2FsbEZyYW1lLCBj
YXRjaFNjb3BlLCBwcm9taXNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViQXNzZW1i
bHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoZXhlYywgcHJvbWlzZSwgV1RGTW92ZShzb3Vy
Y2UpKTsKKyAgICAgICAgICAgIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFs
KGNhbGxGcmFtZSwgcHJvbWlzZSwgV1RGTW92ZShzb3VyY2UpKTsKIAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CiAgICAgfQpAQCAtMzA0LDQyICsz
MDMsNDEgQEAgdm9pZCBKU1dlYkFzc2VtYmx5Ojp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0
ZUFzeW5jKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXMKICAgICBDTEVBUl9BTkRfUkVUVVJOX0lG
X0VYQ0VQVElPTihjYXRjaFNjb3BlLCB2b2lkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlRnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0
cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogCi0gICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVu
dCgxKTsKKyAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CiAgICAgICAgIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QgPSBpbXBvcnRBcmd1bWVudC5n
ZXRPYmplY3QoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpbXBvcnRBcmd1bWVudC5pc1VuZGVm
aW5lZCgpICYmICFpbXBvcnRPYmplY3QpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3Qo
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsCisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3Qo
Y2FsbEZyYW1lLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgICJz
ZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUgbXVzdCBiZSB1bmRlZmlu
ZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9y
VmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpOwogICAgICAgICAgICAgQ0xFQVJfQU5EX1JFVFVS
Tl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21p
c2UoKSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgICAgICBKU1ZhbHVlIGZpcnN0QXJndW1l
bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICAgICAgaWYgKGF1dG8qIG1vZHVs
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBmaXJzdEFyZ3VtZW50
KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVs
ZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpT
KTsKKyAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgY2FsbEZyYW1lLCBwcm9taXNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRl
TW9kdWxlS2V5KCksIFJlc29sdmU6OldpdGhJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpG
cm9tSlMpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0
YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQ
cml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6
V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CisgICAg
ICAgICAgICAgICAgY29tcGlsZUFuZEluc3RhbnRpYXRlKHZtLCBjYWxsRnJhbWUsIHByb21pc2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFy
Z3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwgV2Fz
bTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH0KIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlWYWxpZGF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgYXV0byBbYmFzZSwgYnl0ZVNpemVdID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBbYmFzZSwgYnl0ZVNpemVdID0gZ2V0
V2FzbUJ1ZmZlckZyb21WYWx1ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEJC
UVBsYW4gcGxhbigmdm0ud2FzbUNvbnRleHQsIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRv
bnRGaW5hbGl6ZSgpKTsKICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB0aHJvdyBhbiBP
T00gZXhjZXB0aW9uIGhlcmUgaWYgd2UgZGV0ZWN0IHRoYXQgc29tZXRoaW5nIHdpbGwgT09NLgpA
QCAtMzQ3LDIwICszNDUsMTkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHBsYW4ucGFyc2VBbmRWYWxpZGF0ZU1vZHVsZShiYXNlLCBi
eXRlU2l6ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNl
RGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7CiAKICAgICBWZWN0
b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAgICB2bS5wcm9taXNlRGVmZXJy
ZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5jb21waWxlU3RyZWFtaW5nKQotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBleGVjLCBwcm9taXNl
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
cHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IENvbXBpbGVTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBqc2MsIG9ubHkgaW4gYnJvd3Nl
ciBlbnZpcm9ubWVudAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM3MSwyMSAr
MzY4LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
U3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVT
dHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVy
cmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Byb21pc2VEZWZlcnJl
ZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgewogICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKIAotICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwogICAgICAgICBKU09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1l
bnQuZ2V0T2JqZWN0KCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaW1wb3J0QXJndW1lbnQuaXNV
bmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLAorICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KGNhbGxGcmFtZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwKICAgICAgICAgICAgICAg
ICAic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nIG11
c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBy
dW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1bWVudCkpKTsKICAgICAgICAgICAgIENM
RUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIEpTVmFsdWU6OmVuY29kZShw
cm9taXNlLT5wcm9taXNlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM5Niw3ICszOTIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJl
YW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqCiAgICAgICAgICAgICAgICAgdm0ucHJvbWlzZURlZmVy
cmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVu
Y2llcykpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9i
LzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBvcnRPYmplY3QgYW5kIGl0IGNvbnRhaW5zIGEgTWVt
b3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRoZSBtb2R1bGUgd2l0aCB0aGUgcmlnaHQgbWVtb3J5
IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29raW5nIGF0IHRoZSBtZW1vcnkncyB0eXBlLgotICAg
ICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+aW5z
dGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBleGVjLCBwcm9taXNlLCBleGVjLT5hcmd1
bWVudCgwKSwgaW1wb3J0T2JqZWN0KTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmpl
Y3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0
ZVN0cmVhbWluZyBpcyBub3Qgc3VwcG9ydGVkIGluIGpzYywgb25seSBpbiBicm93c2VyIGVudmly
b25tZW50LgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCmluZGV4IDAxNzFjMTRhYjQ3
MzQ0MDA5MDIzYTNlNDFhYTRkNmNiYzBlNDYzYjUuLjcxZTQxZGM1ZDhmMDA2NjcyMzIxYjU5ODVl
MTE5OTZjNTg3YTc4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmgKQEAgLTUzLDggKzUzLDggQEAgY2xhc3MgSlNXZWJBc3NlbWJseSBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU1dlYkFzc2VtYmx5KFZNJiwgU3RydWN0
dXJlKik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29t
cGlsZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRl
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVh
bWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA3ZjJkMTdkZjI3MmI5N2Ri
YzA2MzhmMWRmNzcwYzA5MGVhOWIyZWNiLi5jNzM2ODVjZGYzZTBhZTU1MDg2ZTNmYzk3YWE2YjYz
N2UxMDVlOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAt
NDQsMjEgKzQ0LDIxIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlCiAgQGVuZAogICovCiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0p
LT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpKTsKKyAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgc3RydWN0dXJlLCBtZXNz
YWdlKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMs
IGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsK
KyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yU3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNl
OjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlw
ZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3IqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogdGhp
c1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggZGRlNDJjNTZmN2U1NTVjZDc2MDQ0ZmExYzgzMTdl
ZjFiMjMwZmI5Ni4uYjFlNjQ5ZjdiYjY3M2Q4OGExNjlmZmE0MDk1MzYwNWFkODUwMTliYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKQEAgLTU4LDExICs1OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5RnVuY3Rpb246OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5RnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFdlYkFzc2VtYmx5RnVuY3Rpb24pIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBXZWJBc3NlbWJseUZ1
bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpOworICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpz
Q2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBX
YXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0
dXJlSW5kZXgoKTsKICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206
OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogCkBAIC03OCwxNCAr
NzgsMTQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2Vt
Ymx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIFdhc206Okluc3RhbmNlKiB3YXNtSW5z
dGFuY2UgPSAmaW5zdGFuY2UtPmluc3RhbmNlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGFyZ0lu
ZGV4ID0gMDsgYXJnSW5kZXggPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2FyZ0luZGV4
KSB7Ci0gICAgICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+YXJndW1lbnQoYXJnSW5kZXgpOworICAg
ICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoYXJnSW5kZXgpOwogICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChhcmdJbmRleCkpIHsKICAgICAgICAgY2FzZSBX
YXNtOjpJMzI6Ci0gICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJnLnRvSW50MzIo
ZXhlYykpOworICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGFyZy50b0ludDMyKGNh
bGxGcmFtZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6RnVuY3Jl
ZjogewogICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcp
ICYmICFhcmcuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcihleGVjLCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9u
IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0
aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoY2Fs
bEZyYW1lLCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6QW55
cmVmOgpAQCAtOTQsMTAgKzk0LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAg
IGFyZyA9IEpTVmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206
OkYzMjoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWlu
dDMyX3Q+KGFyZy50b0Zsb2F0KGV4ZWMpKSk7CisgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpk
ZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQzMl90PihhcmcudG9GbG9hdChjYWxsRnJhbWUpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpGNjQ6Ci0gICAgICAgICAgICBh
cmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQ2NF90PihhcmcudG9OdW1iZXIo
ZXhlYykpKTsKKyAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8
dWludDY0X3Q+KGFyZy50b051bWJlcihjYWxsRnJhbWUpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAgICAgICBjYXNlIFdhc206OkZ1bmM6CkBAIC0x
MTcsNyArMTE3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdl
YkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIFRoZSByZWFzb24gZm9y
IHRoaXMgaXMgdGhhdCBjYWxsaW5nIGludG8gdGhlIGxsaW50IG1heSBzdGFjayBvdmVyZmxvdywg
YW5kIHRoZSBzdGFjayBvdmVyZmxvdwogICAgIC8vIGhhbmRsZXIgbWlnaHQgcmVhZCB0aGUgZ2xv
YmFsIG9iamVjdCBmcm9tIHRoZSBjYWxsZWUuCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxs
RnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24sIGNv
bnRleHQsIGFyZ0NvdW50LCBhcmdzKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIs
IGdsb2JhbE9iamVjdCwgd2FzbUZ1bmN0aW9uLCBjb250ZXh0LCBhcmdDb3VudCwgYXJncyk7CiAK
ICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGggdGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5
IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYKICAgICBXYXNtOjpJbnN0YW5jZSogcHJldldhc21J
bnN0YW5jZSA9IHZtLndhc21Db250ZXh0LmxvYWQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGNvbnN0IGludHB0cl90IGZyYW1lU2l6ZSA9IChib3hl
ZEFyZ3Muc2l6ZSgpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpICogc2l6ZW9m
KFJlZ2lzdGVyKTsKICAgICAgICAgY29uc3QgaW50cHRyX3Qgc3RhY2tTcGFjZVVzZWQgPSAyICog
ZnJhbWVTaXplOyAvLyBXZSdyZSBtYWtpbmcgdHdvIGNhbGxzLiBPbmUgdG8gdGhlIHdyYXBwZXIs
IGFuZCBvbmUgdG8gdGhlIGFjdHVhbCB3YXNtIGNvZGUuCiAgICAgICAgIGlmIChVTkxJS0VMWSgo
c3AgPCBzdGFja1NwYWNlVXNlZCkgfHwgKChzcCAtIHN0YWNrU3BhY2VVc2VkKSA8IGJpdHdpc2Vf
Y2FzdDxpbnRwdHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoY2FsbEZyYW1lKSkpOwogICAgIH0KICAgICB2bS53YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5z
dGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmlu
c3RhbmNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjg0MmY5NThi
ZDk4YTgzYWQ1MzkxYmRiYWY4MjJjYTMyNTYxY2UxMy4uMDhmNDRhOTc0MTRmNGIwNWNmOGYxMjg1
MTBmZTc4NDRiMDdmNjg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC01
OCwzOCArNTgsMzggQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c18KIAogdXNpbmcgV2FzbTo6UGxh
bjsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJB
c3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBJZiBtb2R1bGVPYmplY3Qg
aXMgbm90IGEgV2ViQXNzZW1ibHkuTW9kdWxlIGluc3RhbmNlLCBhIFR5cGVFcnJvciBpcyB0aHJv
d24uCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dl
YkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiZmlyc3QgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVz
dCBiZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50
aW1lVHlwZUZvclZhbHVlKHZtLCBleGVjLT5hcmd1bWVudCgwKSkpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGNhbGxGcmFtZSwgImZpcnN0IGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3Rh
bmNlIG11c3QgYmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7CiAK
ICAgICAvLyBJZiB0aGUgaW1wb3J0T2JqZWN0IHBhcmFtZXRlciBpcyBub3QgdW5kZWZpbmVkIGFu
ZCBUeXBlKGltcG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3du
LgotICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBK
U1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBKU09i
amVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1lbnQuZ2V0T2JqZWN0KCk7CiAgICAgaWYg
KCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5lZCgpICYmICFpbXBvcnRPYmplY3QpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVy
LCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1bWVudCkpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5J
bnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSkpOwogICAg
IAotICAgIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT53ZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCkpOworICAg
IFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2Jh
bE9iamVjdC0+d2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0
YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmpl
Y3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgp
KSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgY2FsbEZyYW1l
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1
bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlv
bih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRleHQs
IGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIsICZX
YXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25Nb2Rl
OjpGcm9tSlMpOworICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBjYWxsRnJhbWUs
IG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+
bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRv
SlNFeGNlcHRpb24pLCBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoaW5zdGFuY2UpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5Lkluc3RhbmNlIikpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7CiB9CiAK
IFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHAKaW5kZXggZjgxYjJhMWQ2MTMxMWM0MWQ5ZWE2OWE2ZDEyMGU1ODIxYmZhODVlYi4uY2E2Zjk0
MjU1YTFmOTM0OWYxYjdiZjU1ZmMwZTYwMjI3MTA4MTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b0Z1bmNFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRl
ICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oIgpAQCAtNjEsMTIgKzYxLDEyIEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogZ2V0SW5zdGFuY2Uo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVu
Y0V4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgp
KTsgCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGNh
bGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0
YW5jZS0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmNwcAppbmRleCA0NzNjMjYzZGRmZDNjZDhkY2I1MDg5MjllZWYxMTlmMDZiZGMwNTEw
Li4zNDEwOGEwOWMzNDk1NzhjY2VkMjQ1MzBmNzdjZDhkMzNiNDlkMGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxp
bmtFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxp
bmtFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGF1dG8qIHN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5nbG9iYWxPYmplY3Qodm0pLT53ZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpKTsK
KyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGF1dG8q
IHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJs
eUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVjdHVy
ZSwgbWVzc2FnZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgc3RydWN0
dXJlLCBtZXNzYWdlKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBK
U1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9y
U3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMs
IGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsK
KyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TGlua0Vycm9y
U3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5v
dGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IqIFdl
YkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjM3MTI2N2I1ZTM2ODdjYWIzY2JhZGY3
MTcxYTI4ZDQ3NGQwOTZiNS4uYTdjMWM2MWNhMzc5YmQzY2Y4ZjZmZThkNTE1M2VmZjlhNzM4MTI2
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ4LDMyICs0OCwzMiBAQCBjb25z
dCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbgogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlNZW1vcnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJn
dW1lbnQiX3MpKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpICE9IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5
IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQiX3MpKSk7CiAKICAgICBKU09iamVjdCogbWVt
b3J5RGVzY3JpcHRvcjsKICAgICB7Ci0gICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgICAgIGlmICghYXJndW1lbnQuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3Qg
YXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5
cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3Qg
YXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOwogICAgICAgICBtZW1vcnlEZXNjcmlwdG9y
ID0ganNDYXN0PEpTT2JqZWN0Kj4oYXJndW1lbnQpOwogICAgIH0KIAogICAgIFdhc206OlBhZ2VD
b3VudCBpbml0aWFsUGFnZUNvdW50OwogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBpbml0aWFs
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImluaXRpYWwiKTsKLSAgICAgICAgSlNWYWx1
ZSBtaW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgaW5pdGlhbCk7Cisg
ICAgICAgIEpTVmFsdWUgbWluU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxG
cmFtZSwgaW5pdGlhbCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIHVpbnQzMl90IHNpemUgPSB0b05vbldyYXBwaW5n
VWludDMyKGV4ZWMsIG1pblNpemVWYWx1ZSk7CisgICAgICAgIHVpbnQzMl90IHNpemUgPSB0b05v
bldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgbWluU2l6ZVZhbHVlKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KCFXYXNtOjpQYWdlQ291bnQ6OmlzVmFsaWQoc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcgcGFnZSBjb3VudCBpcyB0
b28gbGFyZ2UiX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJh
bWUsICJXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdl
Il9zKSkpOwogICAgICAgICBpZiAoV2FzbTo6UGFnZUNvdW50KHNpemUpLmJ5dGVzKCkgPiBNQVhf
QVJSQVlfQlVGRkVSX1NJWkUpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhl
YykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSkp
KTsKICAgICAgICAgaW5pdGlhbFBhZ2VDb3VudCA9IFdhc206OlBhZ2VDb3VudChzaXplKTsKICAg
ICB9CiAKQEAgLTgyLDIzICs4MiwyMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYwogICAgICAg
ICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVu
ZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1bHQuCiAgICAgICAgIC8vIGh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1kaWN0aW9uYXJpZXMKICAgICAgICAgSWRlbnRp
ZmllciBtYXhpbXVtID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iKTsKLSAg
ICAgICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywg
bWF4aW11bSk7CisgICAgICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRv
ci0+Z2V0KGNhbGxGcmFtZSwgbWF4aW11bSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghbWF4U2l6ZVZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IHNpemUgPSB0b05vbldyYXBw
aW5nVWludDMyKGV4ZWMsIG1heFNpemVWYWx1ZSk7CisgICAgICAgICAgICB1aW50MzJfdCBzaXpl
ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIG1heFNpemVWYWx1ZSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgICAgICAgICAgaWYgKCFXYXNtOjpQYWdlQ291bnQ6OmlzVmFsaWQoc2l6ZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5NZW1vcnkgJ21heGlt
dW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkpOworICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSAnbWF4aW11bScg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiX3MpKSk7CiAgICAgICAgICAgICBtYXhpbXVtUGFnZUNv
dW50ID0gV2FzbTo6UGFnZUNvdW50KHNpemUpOwogCiAgICAgICAgICAgICBpZiAoaW5pdGlhbFBh
Z2VDb3VudCA+IG1heGltdW1QYWdlQ291bnQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIidtYXhpbXVtJyBwYWdlIGNvdW50IG11
c3QgYmUgdGhhbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwYWdlIGNv
dW50Il9zKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLAorICAgICAgICAgICAgICAgICAgICBjcmVh
dGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIidtYXhpbXVtJyBwYWdlIGNvdW50IG11c3QgYmUgdGhh
biBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwYWdlIGNvdW50Il9zKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byoganNNZW1vcnkg
PSBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CisgICAgYXV0byoganNN
ZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgZ2xvYmFs
T2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUmVmUHRyPFdhc206
Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUoaW5pdGlhbFBhZ2VDb3Vu
dCwgbWF4aW11bVBhZ2VDb3VudCwKQEAgLTEwNiwxOCArMTA2LDE4IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0p
IHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAg
ICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VD
b3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1v
cnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsg
fSk7CiAgICAgaWYgKCFtZW1vcnkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVj
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxG
cmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUpKSk7CiAK
ICAgICBqc01lbW9yeS0+YWRvcHQobWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNZW1vcnkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJs
eU1lbW9yeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5Lk1lbW9y
eSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCAiV2ViQXNz
ZW1ibHkuTWVtb3J5IikpOwogfQogCiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZS5jcHAKaW5kZXggMTQ0MWE5YjRmNWE0MjI5YjY5YmU1YjY2NDBhOTcwNDQ3MGMy
YzA4NC4uYzE0MjExNzU0MGVhNGY4MTM4Zjk0NDU1MjkzYTNmYTI3YzA0NWYyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmNwcApAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlIZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90
b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAK
ICNpbmNsdWRlICJXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCIKQEAgLTY2LDMxICs2
NiwzMSBAQCBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlNZW1vcnkqIGdldE1lbW9yeShFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YQogICAgIHJldHVybiBtZW1vcnk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNH
cm93KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0
TWVtb3J5KGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlN
ZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IAotICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogCi0gICAgV2FzbTo6UGFnZUNvdW50IHJlc3VsdCA9IG1lbW9y
eS0+Z3Jvdyh2bSwgZXhlYywgZGVsdGEpOworICAgIFdhc206OlBhZ2VDb3VudCByZXN1bHQgPSBt
ZW1vcnktPmdyb3codm0sIGNhbGxGcmFtZSwgZGVsdGEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShleGVjLCB2bSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1v
cnkoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG1lbW9yeS0+YnVmZmVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0
LT52bSgpLCBnbG9iYWxPYmplY3QpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUq
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRl
eCA2YmFiOTRlYzk5ZGMwZmYzMTc4MDZkOGM1ZDljZTI0MzM3ZGYyYjk1Li5lYmZlN2E3NzI4MWIz
OWFjZmE2NDQyNTIzOTZjMmJkNDJmMTEwNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNw
cApAQCAtNDYsOSArNDYsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBv
cnRzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJ
bXBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IubHV0LmgiCkBAIC02NSwyMyArNjUsMjIgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW4KICBA
ZW5kCiAgKi8KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVs
ZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGNhbGxGcmFtZSkp
KTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNX
ZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5
TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICgh
bW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTW9kdWxl
LmN1c3RvbVNlY3Rpb25zIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1l
bnQiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNz
ZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5N
b2R1bGUgYXJndW1lbnQiX3MpKSk7CiAKLSAgICBjb25zdCBTdHJpbmcgc2VjdGlvbk5hbWVTdHJp
bmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgY29u
c3QgU3RyaW5nIHNlY3Rpb25OYW1lU3RyaW5nID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCiAgICAgY29uc3QgYXV0byYg
Y3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuY3VzdG9tU2VjdGlv
bnM7CkBAIC04OSw5ICs4OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChT
dHJpbmc6OmZyb21VVEY4KHNlY3Rpb24ubmFtZSkgPT0gc2VjdGlvbk5hbWVTdHJpbmcpIHsKICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzZWN0aW9uLnBh
eWxvYWQuZGF0YSgpLCBzZWN0aW9uLnBheWxvYWQuc2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgh
YnVmZmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSkpKTsK
IAotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlOjpEZWZhdWx0KSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1
c2goY2FsbEZyYW1lLCBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJy
YXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIFdURk1v
dmUoYnVmZmVyKSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtOTksMTcgKzk4LDE2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxl
SW1wb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNz
ZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzIGNhbGxlZCB3aXRoIG5v
biBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVU
eXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMgY2FsbGVkIHdp
dGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKIAotICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwg
bnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRzID0gbW9kdWxlLT5tb2R1bGVJbmZv
cm1hdGlvbigpLmltcG9ydHM7CkBAIC0xMTgsMTIgKzExNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1l
Iik7CiAgICAgICAgIElkZW50aWZpZXIga2luZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJraW5kIik7CiAgICAgICAgIGZvciAoY29uc3QgV2FzbTo6SW1wb3J0JiBpbXAgOiBpbXBvcnRz
KSB7Ci0gICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2Fs
bEZyYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBtb2R1bGUsIGpzU3RyaW5nKHZtLCBT
dHJpbmc6OmZyb21VVEY4KGltcC5tb2R1bGUpKSk7CiAgICAgICAgICAgICBvYmotPnB1dERpcmVj
dCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wLmZpZWxkKSkpOwog
ICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtpbmQsIGpzU3RyaW5nKHZtLCBTdHJpbmco
bWFrZVN0cmluZyhpbXAua2luZCkpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1c2goZXhlYywg
b2JqKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChjYWxsRnJhbWUsIG9iaik7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMzEsMTcgKzEyOSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBt
b2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nh
c3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5
Lk1vZHVsZS5leHBvcnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1l
bnQiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNz
ZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBh
cmd1bWVudCJfcykpKTsKIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICBjb25zdCBhdXRv
JiBleHBvcnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmV4cG9ydHM7CkBAIC0xNDks
MTEgKzE0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9k
dWxlRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIik7CiAgICAgICAgIElkZW50aWZpZXIga2lu
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJraW5kIik7CiAgICAgICAgIGZvciAoY29u
c3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBvcnRzKSB7Ci0gICAgICAgICAgICBKU09iamVjdCog
b2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCog
b2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgICAgIG9iai0+cHV0RGly
ZWN0KHZtLCBuYW1lLCBqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOChleHAuZmllbGQpKSk7
CiAgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmcodm0sIFN0cmlu
ZyhtYWtlU3RyaW5nKGV4cC5raW5kKSkpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVj
LCBvYmopOworICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGNhbGxGcmFtZSwgb2JqKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE2MSwyMiArMTU4LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1v
ZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2
bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2Ug
PSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShleGVjLCBXVEZNb3ZlKHNvdXJjZSkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoV2ViQXNzZW1ibHlN
b2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKGNhbGxGcmFtZSwgV1RGTW92ZShzb3VyY2Up
KSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJB
c3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Nv
bnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiV2ViQXNzZW1ibHkuTW9kdWxlIikpOwogfQogCiBKU1dlYkFzc2VtYmx5TW9kdWxlKiBX
ZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDhkZTlkMmRkMDgyODA2YTFjYzhmMzI0NzIzODJiYmYyMjM4YWE2ZDUu
LmEyZjQ4OWU0Zjc0MjE3ODgxOWVkMDNhYTg1ZWY5NzZmODYxMDNhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00NCwyMyArNDQsMjMgQEAgY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2UKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAg
U3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UuaXNV
bmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1
dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0
cnVjdHVyZSgpKTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShtZXNzYWdlU3RyaW5nKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShtZXNzYWdlU3RyaW5nKSkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVu
dCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBu
dWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0
cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDQ1YzhlYjExYzhhNjliODllYjJmOWNkOGMxZWUzNWU0MGFjMjYyZDEu
LjQ5ZmU1ZTJiNjZlZTJlODBmNTU1ODA3YjgzMjY5ZWYwM2U3OGVhOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNv
bnN0cnVjdG9yLmNwcApAQCAtNDUsNzAgKzQ1LDcwIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
CiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCog
bWVtb3J5RGVzY3JpcHRvcjsKICAgICB7Ci0gICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgICAgIGlmICghYXJndW1lbnQuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZSBleHBlY3RzIGl0cyBmaXJz
dCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRl
VHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0
IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKICAgICAgICAgbWVtb3J5RGVzY3JpcHRv
ciA9IGpzQ2FzdDxKU09iamVjdCo+KGFyZ3VtZW50KTsKICAgICB9CiAKICAgICBXYXNtOjpUYWJs
ZUVsZW1lbnRUeXBlIHR5cGU7CiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGVsZW1lbnRJZGVu
dCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbGVtZW50Iik7Ci0gICAgICAgIEpTVmFs
dWUgZWxlbWVudFZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMsIGVsZW1lbnRJZGVu
dCk7CisgICAgICAgIEpTVmFsdWUgZWxlbWVudFZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0
KGNhbGxGcmFtZSwgZWxlbWVudElkZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgU3RyaW5nIGVsZW1lbnRTdHJp
bmcgPSBlbGVtZW50VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIFN0cmluZyBlbGVt
ZW50U3RyaW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIGlmIChlbGVtZW50U3RyaW5nID09ICJmdW5jcmVmIiB8fCBlbGVtZW50U3RyaW5nID09ICJh
bnlmdW5jIikKICAgICAgICAgICAgIHR5cGUgPSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpGdW5j
cmVmOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50U3RyaW5nID09ICJhbnlyZWYiKQogICAgICAg
ICAgICAgdHlwZSA9IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkFueXJlZjsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlIGV4
cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0aGUgc3RyaW5nICdmdW5jcmVmJyBvciAn
YW55cmVmJyJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1l
LCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMgJ2VsZW1lbnQnIGZpZWxkIHRvIGJlIHRo
ZSBzdHJpbmcgJ2Z1bmNyZWYnIG9yICdhbnlyZWYnIl9zKSkpOwogICAgIH0KIAogICAgIElkZW50
aWZpZXIgaW5pdGlhbElkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImluaXRpYWwi
KTsKLSAgICBKU1ZhbHVlIGluaXRpYWxTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQo
ZXhlYywgaW5pdGlhbElkZW50KTsKKyAgICBKU1ZhbHVlIGluaXRpYWxTaXplVmFsdWUgPSBtZW1v
cnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBpbml0aWFsSWRlbnQpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdWludDMyX3Qg
aW5pdGlhbCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgaW5pdGlhbFNpemVWYWx1ZSk7Cisg
ICAgdWludDMyX3QgaW5pdGlhbCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBpbml0
aWFsU2l6ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gSW4gV2ViSURMLCAicHJlc2VudCIgbWVhbnMgdGhhdCBb
W0dldF1dIHJlc3VsdCBpcyB1bmRlZmluZWQsIG5vdCBbW0hhc1Byb3BlcnR5XV0gcmVzdWx0Lgog
ICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1kaWN0aW9uYXJpZXMK
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICBJZGVudGlmaWVyIG1heGltdW1J
ZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtIik7Ci0gICAgSlNWYWx1
ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgbWF4aW11bUlkZW50
KTsKKyAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChjYWxs
RnJhbWUsIG1heGltdW1JZGVudCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoIW1heFNpemVWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIG1heGltdW0gPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIG1heFNpemVW
YWx1ZSk7CisgICAgICAgIG1heGltdW0gPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwg
bWF4U2l6ZVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoaW5pdGlhbCA+ICptYXhpbXVtKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRo
cm93U2NvcGUsCi0gICAgICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiJ21heGlt
dW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlh
bCcgcHJvcGVydHkiX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwKKyAgICAgICAgICAgICAgICBjcmVh
dGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIidtYXhpbXVtJyBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRpYWwnIHByb3BlcnR5Il9zKSkpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpU
YWJsZTo6dHJ5Q3JlYXRlKGluaXRpYWwsIG1heGltdW0sIHR5cGUpOwogICAgIGlmICghd2FzbVRh
YmxlKSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgImNvdWxk
bid0IGNyZWF0ZSBUYWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsCisgICAgICAgICAgICBjcmVhdGVS
YW5nZUVycm9yKGNhbGxGcmFtZSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSJfcykpKTsKICAgICB9
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
V2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwgd2FzbVRhYmxlLnJlbGVhc2VOb25O
dWxsKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBnbG9iYWxPYmpl
Y3QtPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxs
KCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dl
YkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Nv
bnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
V2ViQXNzZW1ibHkuVGFibGUiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Nv
bnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJXZWJBc3NlbWJseS5UYWJsZSIpKTsKIH0KIAogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcAppbmRleCBlMWMxZmJhYzE1Njg0YmE0MTllODZiNTRhMGM5YTc0
YzM5MjkwMDFjLi4wOTljNDBmOTUwYjdlOWZmMWE2MTk4NTA4YzhjNTJhOWEwNTk5OTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseVRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQ
cm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jR3JvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCIKQEAgLTY3
LDcyICs2Nyw3MiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqIGdl
dFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIodGFibGUtPmxlbmd0aCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHcm93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxl
KGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICB1aW50MzJfdCBk
ZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAg
IHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICB1aW50MzJfdCBvbGRMZW5ndGggPSB0YWJsZS0+bGVuZ3Ro
KCk7CiAKICAgICBpZiAoIXRhYmxlLT5ncm93KGRlbHRhKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3Jv
dyB0aGUgdGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFt
ZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93IGNvdWxkIG5vdCBncm93IHRoZSB0
YWJsZSJfcykpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2xkTGVu
Z3RoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBw
aW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBpbmRleCA9
IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGlmIChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdldCBleHBlY3RzIGFuIGludGVn
ZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUu
Z2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUi
X3MpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhYmxlLT5nZXQoaW5kZXgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxl
KiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNX
ZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAgICB1aW50
MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoaW5kZXggPj0gdGFibGUtPmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRo
cm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlLnByb3Rv
dHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0
YWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiV2Vi
QXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFu
IHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKSkpOwogCiAgICAgaWYgKHRhYmxlLT50YWJsZSgp
LT5hc0Z1bmNyZWZUYWJsZSgpKSB7CiAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21G
dW5jdGlvbjsKICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVy
RnVuY3Rpb247CiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlI
b3N0RnVuY3Rpb24odm0sIHZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24p
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlLnBy
b3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4g
aW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iX3MpKSk7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwg
Y3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5z
ZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ug
b2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iX3MpKSk7CiAKICAgICAgICAgaWYgKHZhbHVlLmlzTnVs
bCgpKQogICAgICAgICAgICAgdGFibGUtPmNsZWFyKGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
LmNwcAppbmRleCBjZGU0ZjNjZjI2MDRhZGQ3NmNjMDRmYjIyNGY5YTUyYmQyZGEwMzc2Li5iMWQy
ZTRlZWExNWNjMWUzZWNjMDM4ZDE5OGVmNTU5ZGMzYjRhNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbUZ1bmN0
aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSk7CisgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2Fz
dDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gd2FzbUZ1bmN0
aW9uLT5mdW5jdGlvbigpOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBSRUxFQVNF
X0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBBcmdMaXN0KGV4ZWMpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBBcmdMaXN0KGNhbGxGcmFtZSkp
KSk7CiB9CiAKIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGltcG9ydGFibGVG
dW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJv
ckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaAppbmRl
eCAzZjA2YTZiZmYxMTY4YTI1NzY5ZGRhNmNjNmJiM2Y3MmM0MmIzYTllLi40NGI2OGIyZjJjY2I2
MjM2ZDY5ZGVjZDRiOThiYTRhNjQ5ZjAwODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckVycm9yQ29kZS5oCkBAIC0yNyw4ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIFlhcnIgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAppbmRleCBi
NjhhZDkwOTc1YjhmOWQxZjI1ZDAyYjZiYWZjNGVkN2VkNjI2OGU0Li4zYTkyNTA3Y2ZlN2ViMzdm
MjMzY2EwNjYyZjgxZDQ5NzM0YTgxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKQEAgLTM2LDggKzM2LDkgQEAKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsK
K2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggMGM0
ZmEyNDcwOWUyYjcwMzJlZDQ4ZjQyM2I4MDFjMWFiMGYyNTE4MC4uYjQzMGQ2MzY1MzEwYTg5YTdm
OTU0NDNlMGU2ODI0Njk3Y2VlZjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTMxLDggKzMxLDkg
QEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogT0JKQ19DTEFTUyBQS1BheW1lbnRNZXJjaGFudFNlc3Np
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4
IDVjODNhMzdhMWI4MzdjZTMxNzVmNzQ5YzBlMTc1M2I1OTRiNTJkMjYuLjIwNmMxZDU5ZjNiN2Vk
ZmZhZmY0MThhYjZlMGE2NWE4YmI5YzdiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zNiw4ICszNiw5IEBACiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCmluZGV4IGE0NDcxMzI0MDNiNTdlZWIyODZkNGQyZmFhNDFiZTBiOWMw
NGM2NGQuLjRlMjA1MzVjNTZhZjJlN2RhZGFjMDA5ZTc2YWYwMmMzOTBhMWMzZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTM0LDggKzM0
LDkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVl
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCA1NTNh
NDI5NzE1MDI4MWZmMDdmMzQ0YThmZmJmNzQ1MDc2MGQ2ZmM2Li44ODFlZjY0NDlhYzMzZmIxMzBj
ZWRkMTlmZjBkNWI0NTQ1ZjQ1NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmgKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlICJJREJSZXF1ZXN0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAppbmRleCA3
N2FhMzcxZmVlMzc4YTEyMTI2NWU0YjJhNGE1MDYyNjAwZWI2YjBkLi5hNDllYjQxYWRhZjBhYTQ1
NTE5NGI5NjA5ZDkzZmRkOGRmZWY2NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTMzLDggKzMzLDkgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggMjlmOTU5MWYzZGUzYzg0OWZjNjRkZDY1YTE2
MjJjMGIzOThjNzAyMC4uNjFhOTUwZTE0ZWMzM2YzMTg4ZGFmYmMzMzMxOTFlZGVmYzVjOWRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5mby5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNs
YXNzIEpTVmFsdWU7CiBjbGFzcyBTbG90VmlzaXRvcjsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaAppbmRleCBlMWExYWFhMjVmYTVkN2ZhM2EzMjkxMDZiNDA2ZGVkM2Q0YzIzYmNmLi42
YTJhYTI0MWVmMTg0NGQzYmRlNzRkMjMyN2VjMTNkYmZiNzM4ZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQuaApAQCAtMzIsOCArMzIsOSBAQAogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5oCmluZGV4IGYwNjdjYjBhODM4ZmU0MTBhNWVmMzMxNGQyYjBkOTQ0YjZl
NTA1NWYuLjJmYmEzMjY5NGVjOTU5MDgzNTMxOTQ5ZjU3YWQyOGUwNTE0N2ViMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTMy
LDkgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZ1NlY3VyaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmdTZWN1cml0eS5oCmluZGV4IGViZGI4YTkwMGQxNzVjNjgwM2QxYmFhZTliOWMzNjFm
YjMyZDEzNTEuLjdmMmZlMTdjZjA5Y2I1NGVmZDE4OGM1MzA0YzNjMTc5MmNkM2ViZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaApA
QCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCA0Y2I1
YmYwYTBkYjNjODM5NTRiODIzZDYzOTllNmIzNDM5ODBiZGM2Li5lNGViNDczMjMwOTRmOTNjZjY2
ZWVlMmQ5ZThiNDhhZmVhZDA0MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01CdWlsdGluQ29uc3RydWN0b3IgOiBwdWJs
aWMgSlNET01CdWlsdGluQ28KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGlj
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3Rh
dGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogICAgIEpTQzo6
RW5jb2RlZEpTVmFsdWUgY2FsbENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09i
amVjdCYpOwogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbENvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU09iamVjdCopOwpAQCAtMTExLDExICsxMTEsMTEgQEAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8SlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQ29tcGxleFdy
YXBwZXIsIEpTQzo6SlMKICAgICByZXR1cm4gY29udGV4dCA/IGNyZWF0ZVdyYXBwZXI8dHlwZW5h
bWUgSlNDbGFzczo6RE9NV3JhcHBlZD4oY29uc3RydWN0b3IuZ2xvYmFsT2JqZWN0KCksIEpTQ2xh
c3M6OkRPTVdyYXBwZWQ6OmNyZWF0ZSgqY29udGV4dCkpIDogbnVsbHB0cjsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFz
cz46OmNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBKU0M6
OmpzQ2FzdDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKLSAg
ICByZXR1cm4gY2FzdGVkVGhpcy0+Y2FsbENvbnN0cnVjdG9yKCpzdGF0ZSwgY3JlYXRlSlNPYmpl
Y3QoKmNhc3RlZFRoaXMpKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICBhdXRvKiBjYXN0
ZWRUaGlzID0gSlNDOjpqc0Nhc3Q8SlNET01CdWlsdGluQ29uc3RydWN0b3IqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5jYWxsQ29uc3RydWN0b3IoKmNh
bGxGcmFtZSwgY3JlYXRlSlNPYmplY3QoKmNhc3RlZFRoaXMpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q29uc3RydWN0VHlwZSBKU0RPTUJ1aWx0aW5Db25z
dHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29uc3RydWN0b3IuaAppbmRleCAwMTc2N2E5NDBiMGM1YTFkOWVhYjEwNTcxMjQyY2Ri
NGY2NWM4MzYyLi45NjU2MzZhZDk0NjFjNzBjMDgzNzRiY2FkNDkyMzAwZjUwZDhmNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NQ29uc3RydWN0
b3IgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvckJhc2UKICAgICAvLyBVc3VhbGx5IGRlZmluZWQg
Zm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCiAgICAgdm9pZCBpbml0aWFsaXplUHJvcGVy
dGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7IH0KICAgICAvLyBNdXN0IGJlIGRl
ZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKKyAg
ICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNvbnN0cnVjdG9yPEpTQ2xhc3M+KiBKU0RPTUNvbnN0
cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKaW5kZXggOTZiYWQy
NDU2NzFkZDkwMmVmZTRjM2UyYmZkYzEzNDBkYWY1Y2E0NC4uMjYzNDIyMThjZTY4OGFhMjY0ZmNk
MDBiNTVkZGRlNjM0Nzk4NTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcApAQCAtMjksMTEgKzI5LDExIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShK
U0RPTUNvbnN0cnVjdG9yQmFzZSk7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IiX3MpOworICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVy
YXRvciJfcyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oCmluZGV4IGYwYjEwM2YwYzU5YTVhMWQ4NGIxYmZhNzE3NzRi
YzVhYTk5MzdiZDAuLmI5MDExZGVkMjlhNjA2NDg0NmVmZGY5OGRmMTY4NzBjZmE0ZmMzNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaApAQCAtNDYsMTEgKzQ2LDExIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIDog
cHVibGljIEpTRE9NCiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0
aW9uIGNsYXNzLgogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0JikgeyB9CiAKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICBz
dGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgewotICAgICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAg
IEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJJbGxlZ2FsIGNvbnN0cnVjdG9yIl9zKTsKKyAgICAgICAgSlNDOjp0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSWxsZWdhbCBjb25zdHJ1Y3RvciJfcyk7CiAgICAg
ICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzTnVsbCgpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApp
bmRleCA4MDMwZDM1NDBmNWIxNDY0OTRjNTA2YmJiY2ZiOGUyNDMyYWYxN2ViLi5mOTcwMTc0OTFl
Y2I0ZDhjM2FmMjY3NGU2ZWMzYjc2YmNlMGI3MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC01NCw5ICs1NCw5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlu
cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNSZWFkYWJsZUJ5
dGVTdHJlYW1BUElFbmFibGVkKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VHZXR0ZXJUeXBlRXJyb3JG
b3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NR2xvYmFsT2JqZWN0Ojpz
X2luZm8gPSB7ICJET01HbG9iYWxPYmplY3QiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTUdsb2JhbE9iamVjdCkgfTsK
IApAQCAtNzUsMzkgKzc1LDM5IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpT
RE9NR2xvYmFsT2JqZWN0Ojp+SlNET01HbG9iYWxPYmplY3QoKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSog
ZXhlY1N0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJv
ckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEFTU0VSVChleGVjU3RhdGUpOwotICAgIEFTU0VSVChleGVjU3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYgdm0gPSBleGVjU3RhdGUtPnZtKCk7Cisg
ICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID09IDIpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGludGVyZmFjZU5hbWUg
PSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldFN0cmluZyhleGVjU3RhdGUpOwor
ICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
Z2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAg
ICBhdXRvIGZ1bmN0aW9uTmFtZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0
U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBmdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhjYWxsRnJhbWUpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVUeXBlRXJy
b3IoZXhlY1N0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4
KCkuZGF0YSgpLCBmdW5jdGlvbk5hbWUudXRmOCgpLmRhdGEoKSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VUaGlzVHlwZUVycm9y
TWVzc2FnZShpbnRlcmZhY2VOYW1lLnV0ZjgoKS5kYXRhKCksIGZ1bmN0aW9uTmFtZS51dGY4KCku
ZGF0YSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VHZXR0ZXJU
eXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChl
eGVjU3RhdGUpOwotICAgIEFTU0VSVChleGVjU3RhdGUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsK
LSAgICBWTSYgdm0gPSBleGVjU3RhdGUtPnZtKCk7CisgICAgQVNTRVJUKGNhbGxGcmFtZSk7Cisg
ICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAKLSAgICBhdXRvIGludGVyZmFjZU5hbWUgPSBleGVjU3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLmdldFN0cmluZyhleGVjU3RhdGUpOworICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBhdXRvIGF0dHJpYnV0ZU5hbWUgPSBl
eGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjU3RhdGUpOworICAg
IGF1dG8gYXR0cmlidXRlTmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAotICAg
IGF1dG8gZXJyb3IgPSBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oY3JlYXRlVHlwZUVycm9y
KGV4ZWNTdGF0ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4
KCkuZGF0YSgpLCBhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgYXV0byBlcnJv
ciA9IHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1l
LCBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLnV0ZjgoKS5kYXRhKCks
IGF0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpKTsKICAgICBlcnJvci0+c2V0TmF0aXZlR2V0
dGVyVHlwZUVycm9yKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlcnJvcik7CiB9CiAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlz
UmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVhZGFibGVCeXRlU3Ry
ZWFtQVBJRW5hYmxlZCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0
ZXJhdG9yLmgKaW5kZXggMjcwOWIxZmI5ODBmMTcwMzhkY2I5YzdhODQ3NTY3OTljZTJhNGViZC4u
YWQ5ZmE4NTE3NDdiMzZiZjI5NGE0MmIwZTY0NmQ5OTVmZjFiZmExZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPiBjbGFzcyBKU0RP
TUl0ZXJhdG9yUHJvdG90eQogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBuZXh0KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBuZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiBwcml2YXRlOgogICAgIEpTRE9NSXRlcmF0b3JQ
cm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2
bSwgc3RydWN0dXJlKSB7IH0KQEAgLTI0NiwxNiArMjQ2LDE2IEBAIEpTQzo6SlNWYWx1ZSBKU0RP
TUl0ZXJhdG9yPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6RXhlY1N0YXRl
JiBzdGF0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlciwgdHlwZW5hbWUgSXRlcmF0
b3JUcmFpdHM+Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01JdGVyYXRv
clByb3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6bmV4dChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01JdGVyYXRv
clByb3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6bmV4dChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNDOjpWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8SlNXcmFw
cGVyLCBJdGVyYXRvclRyYWl0cz4qPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRv
IGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyLCBJ
dGVyYXRvclRyYWl0cz4qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFp
dGVyYXRvcikKLSAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBv
YmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBub24tSXRl
cmF0b3Igb2JqZWN0Il9zKSk7CiAKLSAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoaXRl
cmF0b3ItPm5leHQoKnN0YXRlKSk7CisgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhdG9yLT5uZXh0KCpjYWxsRnJhbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFw
cGVyLCB0eXBlbmFtZSBJdGVyYXRvclRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggMjY1ZTZkM2UzNGNjMDQxMzBh
MjBlNjYwYTdiNWNjNWU4MTdkYTA1NC4uZDNjODdhYjY4ZWMxMWMyNDIyNmE2MjM1M2RjNDEyMTU2
ODU2N2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1l
ZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1l
ZENvbnN0cnVjdG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFz
cz4gY2xhc3MgSlNET01OYW1lZENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NQ29uc3RydWN0b3IK
ICAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCiAg
ICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KSB7IH0KICAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xh
c3MuCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3QoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTU5hbWVkQ29u
c3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5jcHAKaW5kZXggMjI2YmVmOThhMzQ0MmE2ZDBmNDM3MTgyNzlkMmM5MDU3ZjUwMGM4Yi4uZTFl
ZTZlNzMzOTUxYjVlZjRiNzViMDk5MmU4MTk2Zjk0NzY0OTczYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgRE9N
UHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU09iCiAgICAgYXV0byYgc3RhdGUgPSAqZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CiAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKLSAgICBhdXRvKiBoYW5kbGVyID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nIHsgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChFeGVjU3RhdGUqKSBtdXRhYmxlIHsKKyAgICBhdXRvKiBoYW5kbGVyID0gSlND
OjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5n
IHsgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopIG11dGFibGUgewogICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm4g
SlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBj
ZDFlZGJhMDlhN2YyN2JkMmQ0ZmY1YjhkMWJkYmJmN2QwYWVlNDdlLi5lM2NjMmY5YzQxMTEwY2Rh
ZThhNTQ3MDExNDUzNTRmMWQwNGY2NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02NCw4ICs2NCw4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvblNob3dNb2RhbERpYWxvZyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uT3BlbkRhdGFiYXNlKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25TaG93TW9kYWxEaWFsb2coSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewpAQCAtNjMxLDkgKzYzMSw5IEBAIHRlbXBsYXRlPD4gaW5saW5l
IEpTRE9NV2luZG93KiBJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgcmV0dXJuIHRvSlNET01XaW5kb3coc3RhdGUudm0oKSwgc3RhdGUudGhpc1Zh
bHVlKCkudG9UaGlzKCZzdGF0ZSwgTm90U3RyaWN0TW9kZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZShF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2Fs
bDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2VCb2R5Pigqc3RhdGUsICJv
cGVuRGF0YWJhc2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2Fs
bDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2VCb2R5PigqY2FsbEZyYW1l
LCAib3BlbkRhdGFiYXNlIik7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW5EYXRhYmFz
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCAxMGQ2Zjk0
MjNmZGY1NWE0NzUyZTNkYmY5ZGM2OWM2ODMwYWQ5MWFkLi40Mjk1ODllODhkMDcyMWQwZmUyOWU2
NzI4MTU3ZTQ1ZWQ0YzM3MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTEzOSwyNiArMTM5LDI2IEBA
IGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQbHVnaW4oRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFBsdWdpbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0hUTUxF
bGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihleGVjLT5qc0NhbGxlZSgp
KTsKKyAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gR2V0IHRoZSBwbHVnLWluIHNjcmlwdCBv
YmplY3QuCi0gICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChl
eGVjLCBlbGVtZW50KTsKKyAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0
T2JqZWN0KGNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAgQVNTRVJUKHNjcmlwdE9iamVjdCk7CiAK
LSAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBz
aXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50TGlzdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKLSAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChleGVj
LT5hcmd1bWVudChpKSk7CisgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQoY2FsbEZyYW1lLT5h
cmd1bWVudChpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudExpc3QuaGFzT3ZlcmZsb3dlZCgpKTsK
IAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZXhlYy0+dm0oKSwgc2NyaXB0T2JqZWN0LCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHNjcmlwdE9iamVjdCwg
Y2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7CiAKICAg
ICAvLyBDYWxsIHRoZSBvYmplY3QuCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHNj
cmlwdE9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBleGVjLT50aGlzVmFsdWUoKSwgYXJndW1l
bnRMaXN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBzY3JpcHRPYmpl
Y3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgYXJndW1lbnRM
aXN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOWVkMTBl
ZTg3YTE4MjQzYzgxOWUwN2ZjNTZjYzUyOWE4ZDFmNTJkMS4uNTM2NGQ0ZmJlYWZhZjZmNDdiNzY3
YTIwYzg1OGJiY2RhYmRiZjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI4MCwxOCArMjgwLDE4IEBAIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYg
bW9kdWxlU2NyCiAKICAgICBSZWZQdHI8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IG1vZHVsZVNjcmlw
dCgmbW9kdWxlU2NyaXB0UmVmKTsKIAotICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpTTmF0
aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3Ry
aW5nKCksIFttb2R1bGVTY3JpcHRdKEV4ZWNTdGF0ZSogZXhlYykgLT4gSlNDOjpFbmNvZGVkSlNW
YWx1ZSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgZnVsZmlsbEhh
bmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5Lndp
bmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIC0+IEpTQzo6RW5jb2RlZEpTVmFsdWUgewor
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXkg
PSBqc1ZhbHVlVG9Nb2R1bGVLZXkoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBJ
ZGVudGlmaWVyIG1vZHVsZUtleSA9IGpzVmFsdWVUb01vZHVsZUtleShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgICAgICBtb2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRDb21wbGV0ZWQoKm1vZHVsZUtl
eS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIH0pOwogCi0gICAgYXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0
aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9k
dWxlU2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICAgICAgSlNWYWx1ZSBlcnJvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
YXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUu
dm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIEpTVmFsdWUgZXJyb3JWYWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChlcnJvclZhbHVlLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6YXNPYmplY3QoZXJyb3JWYWx1
ZSk7CiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5n
ZXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEp
LmJ1aWx0aW5OYW1lcygpLmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMo
TG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAgICAgICAgICAgTG9hZGFibGVTY3Jp
cHQ6OkNvbnNvbGVNZXNzYWdlIHsKICAgICAgICAgICAgICAgICBNZXNzYWdlU291cmNlOjpKUywK
ICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2ZWw6OkVycm9yLAotICAgICAgICAgICAgICAgIHJl
dHJpZXZlRXJyb3JNZXNzYWdlKCpleGVjLCB2bSwgZXJyb3JWYWx1ZSwgc2NvcGUpLAorICAgICAg
ICAgICAgICAgIHJldHJpZXZlRXJyb3JNZXNzYWdlKCpjYWxsRnJhbWUsIHZtLCBlcnJvclZhbHVl
LCBzY29wZSksCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDE2YmU3YzgyNTIwYjJmNzhiOThmMGU4NWYwMDAy
MmM4MzRlZmRkZmMuLmRkMTNjN2QzMzExMjI5NzNjYWJkZDM1YjM2MmU1ZTNiYTcxMGJjNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTQw
LDEwICs0MCwxMSBAQCBPQkpDX0NMQVNTIFdlYlNjcmlwdE9iamVjdDsKIHN0cnVjdCBOUE9iamVj
dDsKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwogY2xhc3Mg
SlNNb2R1bGVSZWNvcmQ7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiBjbGFzcyBJbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggYTYwNjZmNGNlMzk5OTk2YzY1NGRiNjAz
YzBhNDcyNGRkMDg0MDM2OC4uMjc5ZjYyZmM5ZjE5ODMxYTJhNjEyNTA3N2Q2OTJmNTgxMGRmYzgy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVy
LmgKQEAgLTM0LDExICszNCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0
YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0lu
dGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTTW9kdWxlTG9hZGVyOwogY2xhc3MgU291cmNlT3JpZ2lu
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDE1Mzg0YTcxMWYzNTZjZWU0NzhjYTk5ZTI1NTVi
MWVlYTI0ODJhZDIuLjdjYTVmODhmYmZhYzk1MDc2MzQzNzRkMzVmNTE1YWM3OTdjNGEwYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMzIsNyArMzIsOCBA
QAogI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1
Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENs
b25lLmNwcAppbmRleCAzYTM4YWM1ZWM2YTIzMDExYmRiMTExZWEwMTYxMjhhNWIzYmZlNTczLi5j
MjViZmMwN2IwZDJlY2YxN2ZmZDU4NzE5MDNjOTdhNWExZTBmOGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTYzLDU1ICs2Myw1NSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNT
dGF0ZSogc3RhdGUsIENsb25lTW9kZSBtbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0
KSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVu
Z3RoKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1
ZmZlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9u
ZUFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChzdGF0ZSwgQ2xvbmVN
b2RlOjpQYXJ0aWFsKTsKKyAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoY2FsbEZyYW1l
LCBDbG9uZU1vZGU6OlBhcnRpYWwpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBj
bG9uZUFycmF5QnVmZmVySW1wbChzdGF0ZSwgQ2xvbmVNb2RlOjpGdWxsKTsKKyAgICByZXR1cm4g
Y2xvbmVBcnJheUJ1ZmZlckltcGwoY2FsbEZyYW1lLCBDbG9uZU1vZGU6OkZ1bGwpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmll
dyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICBBU1NFUlQoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJU
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8qIGJ1ZmZlclZpZXcgPSBqc0R5bmFt
aWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHZhbHVlKTsKICAgICBBU1NFUlQoYnVmZmVy
Vmlldyk7CiAKICAgICBhdXRvKiBidWZmZXIgPSBidWZmZXJWaWV3LT51bnNoYXJlZEJ1ZmZlcigp
OwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcigqc3RhdGUsIHNjb3BlKTsK
KyAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcigqY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogICAgIGF1dG8gYnVmZmVyQ2xvbmUgPSBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNJbnQ4QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTSW50OEFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDhBcnJheTo6
Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVy
Vmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTSW50MTZBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNJbnQxNkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92
ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVu
Z3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDE2QXJyYXk6OmNy
ZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZp
ZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU0ludDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTSW50MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
YnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0
aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQzMkFycmF5OjpjcmVh
dGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3
LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNVaW50OEFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1VpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1
ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgo
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhBcnJheTo6Y3JlYXRl
KGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVWludDhDbGFtcGVkQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJl
LCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJW
aWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJD
bG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsK
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQxNkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQxNkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0
cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwg
YnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1VpbnQxNkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVy
Q2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7
CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNVaW50MzJBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCks
IGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNVaW50MzJBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRmxvYXQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0MzJBcnJheTo6Y3JlYXRlKHN0YXRl
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0
KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNGbG9hdDMyQXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShi
dWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3Ro
KCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZtLCB2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShz
dGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9m
ZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTRmxvYXQ2NEFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCB2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNEYXRhVmlldzo6Y3JlYXRlKHN0YXRl
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0
KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNEYXRhVmlldzo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1N0cnVjdHVyZWRDbG9uZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJl
ZENsb25lLmgKaW5kZXggYTZlNGY4MzA2MzNlYWM4MzZmMDI4OTE2NzlhOGI1YjNkYTBiZjcxNS4u
YjZiYmVkZWIxNzYyMThmMTQ3ZTNkYTc0YWU1NWMxMzljYmRkOTgwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgKQEAgLTI1LDE0ICsyNSwxNSBAQAog
ICovCiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogdXNpbmcgRW5jb2RlZEpT
VmFsdWUgPSBpbnQ2NF90OwotY2xhc3MgRXhlY1N0YXRlOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyVmlldyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjYzAyOGMyNTEzYWIxOGNlNTA1NzZj
ZjY4NzlmNmY3NzQxODk3NzdlLi4zNjMwNDRlOWU5NDQ3YmFhZGI2MjJlMWU1YTc4MjRiYzA5Y2Qx
Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
ICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1
ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9u
TmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQogCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAog
ICAgIGlmIChIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiLy8gQ3VzdG9tIGNvbnN0cnVjdG9yXG4iKTsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUmKTtcblxuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fShKU0M6OkV4ZWNTdGF0ZSYpO1xuXG4iKTsKICAgICB9CiAKICAgICBpZiAoTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CkBAIC0zOTcwLDcgKzM5NzAsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0cmlidXRlKSA6IHVuZGVm
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5h
bWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
O1xuIik7CiAgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RE9NSklUfSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUu
aCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkbmFtZU9mRnVuY3Rpb25XaXRob3V0VHlwZUNo
ZWNrID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFtZSkgLiAiV2l0aG91
dFR5cGVDaGVjayI7CkBAIC01MTg2LDggKzUxODYsOSBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25U
cmFtcG9saW5lRGVmaW5pdGlvbgogICAgIHB1c2goQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1l
bnRzLCAiUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjoke2V4cG9zdXJlU2NvcGV9IikgaWYgJGhhc1By
b21pc2VSZXR1cm5UeXBlICYmICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXR1
cm5zT3duUHJvbWlzZX07CiAgICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMs
ICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0IikgaWYgKCRvcGVyYXRpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRvcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKIAotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEV4
ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAke2lkbE9w
ZXJhdGlvblR5cGV9PCR7Y2xhc3NOYW1lfT46OiR7Y2FsbEZ1bmN0aW9uTmFtZX08IiAuIGpvaW4o
IiwgIiwgQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1lbnRzKSAuICI+KCpzdGF0ZSwgXCIiIC4g
JG9wZXJhdGlvbi0+bmFtZSAuICJcIik7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9
XG5cbiIpOwogfQpAQCAtNTQ3NCw4ICs1NDc1LDkgQEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckRl
ZmluaXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTJHtpbnRlcmZhY2VOYW1lfTo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAg
cHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFs
aXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3NlcmlhbGl6ZXJO
YXRpdmVGdW5jdGlvbk5hbWV9KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKUyR7aW50ZXJmYWNl
TmFtZX0+OjpjYWxsPCR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX1Cb2R5Pigqc3RhdGUs
IFwiJHtzZXJpYWxpemVyRnVuY3Rpb25OYW1lfVwiKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwpAQCAtNTUyMiw5ICs1
NTI0LDkgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMKIAogICAgICAgICBt
eSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJjYWxsJHtjbGFzc05hbWV9IjsKIAotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7b3Zl
cmxvYWRGdW5jdGlvblByZWZpeH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7b3ZlcmxvYWRG
dW5jdGlvblByZWZpeH0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIApAQCAtNTU1MSw3ICs1NTUz
LDcgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgogICAgIGlmICgkaXNPdmVy
bG9hZGVkKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fShF
eGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NO
YW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
InN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFtZX0oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgIH0K
IAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtNjQyMyw3ICs2NDI1LDcgQEAg
RU5ECiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rp
b25OYW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBzdGF0ZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhbGw8
JHtmdW5jdGlvbk5hbWV9Q2FsbGVyPigqc3RhdGUsICIke3Byb3BlcnR5TmFtZX0iKTsKIH0KQEAg
LTcxODYsOSArNzE4OCw5IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIAog
ICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFz
c05hbWV9IjsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0
cnVjdChFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1D
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xu
Iik7CiAKQEAgLTcyMTYsMjEgKzcyMTgsMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Db25zdHJ1Y3Rvcn0p
IHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1
Y3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInRlbXBsYXRlPD4gSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IEFTU0VSVChleGVjKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oKmV4ZWMpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKHN0YXRlKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGNvbnN0cnVjdCR7
Y2xhc3NOYW1lfSgqc3RhdGUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwogICAgICAgICAgfSBlbHNpZiAoIUhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRl
cmZhY2UpICYmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1
Y3Rvcn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAgbXkg
JGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlvbi0+
e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhl
Y1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
InN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9JG9wZXJh
dGlvbi0+e292ZXJsb2FkSW5kZXh9KENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qPihzdGF0ZS0+anNDYWxsZWUoKSk7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggOWRhMGRl
ZGQ0ZTM4OWFiOGFiOGY1ZGFjYzMzZGY2NWVlYmQyOTRkYS4uOWMzODk5NTIxNGZjMDUyYWVmMzE4
YjQ4ZDJiZjUwZWMyOTY0NzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTQ1LDE1ICs0NSwxNSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25IYXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25DbGVhcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25HZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25DbGVhcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkRlbGV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8g
QXR0cmlidXRlcwogCkBAIC0yMjIsOCArMjIyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keShKU0M6OkV4ZWNTdGEK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkR2V0VG9NYXBM
aWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldEJv
ZHk+KCpzdGF0ZSwgImdldCIpOwogfQogCkBAIC0yMzgsOCArMjM5LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keShK
U0M6OkV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkhhcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkhhc0JvZHk+KCpzdGF0ZSwgImhhcyIpOwogfQogCkBAIC0yNTAsOCArMjUyLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRW50cmllc0JvZHkoSlNDOjpFeGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pihmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keT4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCkBA
IC0yNjIsOCArMjY1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkoSlNDOjpFeGVjU3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8
anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQm9keT4oKnN0YXRlLCAia2V5cyIpOwogfQog
CkBAIC0yNzQsOCArMjc4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpzdGF0
ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlr
ZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5Pigqc3RhdGUsICJ2
YWx1ZXMiKTsKIH0KIApAQCAtMjkwLDggKzI5NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5KEpTQzo6RXhl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hU
b01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5Pigqc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKQEAgLTMw
Niw4ICszMTIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRBZGRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVk
VGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+
OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkQm9keT4oKnN0YXRlLCAiYWRkIik7
CiB9CiAKQEAgLTMxOSw4ICszMjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhckJvZHkoSlNDOjpFeGVjUwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhcihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkNsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJC
b2R5Pigqc3RhdGUsICJjbGVhciIpOwogfQogCkBAIC0zMzUsOCArMzQzLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRl
Qm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkRGVsZXRlVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkRlbGV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCpzdGF0ZSwgImRlbGV0ZSIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFk
T25seU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUmVhZE9ubHlNYXBMaWtlLmNwcAppbmRleCA3NDc4OTU5MzEyMjYxMjZlYjMxMTgxNzliNTg4
NmQ2OTQwMzUyZGE4Li5jZmEyODEwMTNjMWJhMWUwNmFmN2ZiMDlhMmJlMjNhNDYwYTg0M2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFk
T25seU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJp
ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFk
T25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIxNiw4ICsyMTYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkdldEJvZHkoSlNDOgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RG
TW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdl
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNS
ZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25H
ZXRCb2R5Pigqc3RhdGUsICJnZXQiKTsKIH0KIApAQCAtMjMyLDggKzIzMyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uSGFzQm9keShKU0M6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
Zm9yd2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkhhcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlr
ZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0JvZHk+KCpzdGF0
ZSwgImhhcyIpOwogfQogCkBAIC0yNDQsOCArMjQ2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9k
eSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmll
c1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFk
T25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRyaWVz
Iik7CiB9CiAKQEAgLTI1Niw4ICsyNTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5KEpTQwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtl
KCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uS2V5c0JvZHk+KCpzdGF0ZSwgImtleXMiKTsKIH0KIApAQCAtMjY4LDggKzI3
Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlz
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFk
T25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXNCb2R5Pigqc3RhdGUsICJ2YWx1ZXMiKTsKIH0KIApAQCAtMjg0LDggKzI4OSw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaEJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShj
YWxsYmFjaykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkZvckVhY2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2giKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA3ZTM5ZjBkMmI3OTU5MWE2OTQxMDNkNDA4NGQzNTU2
MzlmNmQ2NjhmLi5hMTQ3N2UxMmVmZGI2ZjRmYmM5MjMxOTZmMzZhYzU1NDMzNTVhYjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNDYsOCArNDYsOCBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdG
dW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RB
Y3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2Fn
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0yMjcsOCArMjI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmcKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRp
bmdGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEFjdGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0aW9uQm9keT4oKnN0YXRlLCAiZXhjaXRpbmdGdW5jdGlvbiIpOwog
fQogCkBAIC0yNDUsOCArMjQ2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3MKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9N
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RN
ZXNzYWdlQm9keT4oKnN0YXRlLCAicG9zdE1lc3NhZ2UiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9ucy5jcHAKaW5kZXggOTRiYWFmNGZiZjk1ZjA5MDk4ZDY2ZjdlMDE4ZWJkZDcyNmQyZGVmYi4u
MzBlNGQ4ZDVhODBiNWU3MGU0ZjNkY2JkMzA3NTgwMWQ3ZTliZWUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rp
b25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFj
dGlvbnNOb3ROZWVkZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
IC8vIEF0dHJpYnV0ZXMKIApAQCAtNDE2LDggKzQxNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ0VSZWFjdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aENFUmVhY3Rpb25zIik7CiB9CiAKQEAgLTQzMSw4ICs0MzIsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhbGw8
anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05v
dE5lZWRlZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKaW5kZXgg
OGIxOTk1ZmI2OWVlZjY1YThkMTM4ZDZjMzI5NzAyMmY0ZTc1NjEwYy4uMzhkNDFmMzVlMWJlNjM4
M2MxMjg0ZDA3OWY4MWNmOWI2MTI1YTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjU2LDgg
KzI1Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25UCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0
cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggNzU5ZTkwYmI1MjdkNjVk
MjEyYzEzZTllMzRkNDg2NjRmZDM0OTVmYS4uNmMwM2Y0NzYyNzMwOTViMzQ1M2I0YmM5MDA1OWVi
MzIzNGFhN2M5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbkludGVyZmFjZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25TcGVjaWZpZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0
aEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRo
TnVsbGFibGVBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25XaXRoVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVG
dW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1l
bnQoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVy
YXRpb25TcGVjaWZpZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFy
Z3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJp
YW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0
aERlZmF1bHRWYXJpYW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzUzLDggKzM1Myw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90
eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25JbnRlcmZhY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2VCb2R5Pigqc3RhdGUsICJ0
ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIik7CiB9CiAKQEAgLTM2OSw4ICszNzAsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVu
Y3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keT4oKnN0YXRl
LCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCIpOwogfQogCkBAIC0zOTMsOCArMzk1LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVG
dW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2Fs
bDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEFyZ3Vt
ZW50c0JvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzIik7CiB9CiAKQEAg
LTQxMyw4ICs0MTYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhO
dWxsYWJsZUFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRo
TnVsbGFibGVBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9keT4oKnN0YXRl
LCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Iik7CiB9CiAKQEAgLTQzMyw4ICs0
MzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJn
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJn
dW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJh
dGlvbldpdGhWYXJpYW50QXJndW1lbnQiKTsKIH0KIApAQCAtNDUzLDggKzQ1OCw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVu
Y3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50
QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnRCb2R5Pigqc3RhdGUs
ICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKQEAgLTQ3
MSw4ICs0NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRp
b25hbFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
V2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFy
Z3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1
bWVudCIpOwogfQogCkBAIC00ODksOCArNDk2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVu
Y3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+
OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRo
RGVmYXVsdFZhcmlhbnRBcmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoRGVm
YXVsdFZhcmlhbnRBcmd1bWVudCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDVhZWZkNjlh
NTRkMWUzMGFlYWRhMDUwNDc0ZDhhZThjZTVjZDhiNjIuLjYxMjdkOGUxNDdlN2E0Yjk3ODk0NDk1
ODdiMGU4NTg0NjhhN2ZjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC01NCwxNSArNTQsMTUgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlV2l0aG91dFR5cGVDaGVj
ayhKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5
cGU8SURMRE9NU3RyaW5nPik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25J
dGVtKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbVdp
dGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklE
TEpTQXJndW1lbnRUeXBlPElETFVuc2lnbmVkU2hvcnQ+LCBET01KSVQ6OklETEpTQXJndW1lbnRU
eXBlPElETFVuc2lnbmVkU2hvcnQ+KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayhKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExSZXF1aXJl
c0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4pOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWVXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9N
SklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+
Pik7CiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTExMjUsOCArMTEyNSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZUJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9N
SklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUJvZHk+
KCpzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOwogfQogCkBAIC0xMTU3LDggKzExNTgsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtQm9keShKU0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVtIik7CiB9CiAKQEAg
LTExODUsOCArMTE4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHkoCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklU
Pjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHk+KCpz
dGF0ZSwgImhhc0F0dHJpYnV0ZSIpOwogfQogCkBAIC0xMjEzLDggKzEyMTYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50QnlJZEJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBs
LmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRC
eUlkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdl
dEVsZW1lbnRCeUlkIik7CiB9CiAKQEAgLTEyNDMsOCArMTI0Nyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRzQnlOYW1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxO
b2RlTGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVs
ZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2Fs
bDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQm9keT4oKnN0
YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwCmluZGV4IDg5ZGI2NDQ1OGM3OWE5MmI4NDc4NDBiNTk1MmNlMDE4YThlMWYyZDEu
LjU5NTdiNjNlNDAxMzEzZDgwZWNjYzQxODE3MDQ0YzlhODEzMjUxZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC0yOTcsOCAr
Mjk3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJh
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhbGw8anNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgImVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IGI2ZDhkNWMyMTE2MjQ0NWMxZDFmMWMxOTY1YzI3YTU4OGIxNjY4NTUuLjU1
NGVjOGEwZDNiN2NlNzk0MTAyOTdmZjcwYzZhNmUxYTRjZGUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBjbGFzcyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAK
IHVzaW5nIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDQxMmU2NWYyOGJkNDg3MWJhMGQ3YzY3NGU3Mjc0MmNmODk2NmZkOTQu
LmJjNjA1ZjcwMWI4MTBhOTc1MzZkY2E2MTdlOWUzMjI5NzBmMzY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0
dHJpYnV0ZXMKIApAQCAtMjQ2LDggKzI0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFBy
b3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RXZlbnRU
YXJnZXQ+OjpjYWxsPGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQm9keT4o
KnN0YXRlLCAiaXRlbSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJm
YjVmNjBkMDQzYjU2ODUyYmJmOTFhYWJmMDA0MTg3YTAyZjM4NGYuLmQ3ODEyODVkNmVkNDBlYjQ4
MWRlYTYwN2YwZWFmNzMzNzg0ZDZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMjAsMjMgKzEyMCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMK
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvblJlZ3VsYXJPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0Vu
YWJsZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9v
bGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0dHJp
YnV0ZXMKQEAgLTI1MDgsOCArMjUwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxh
ck9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxh
ck9wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgInJlZ3VsYXJPcGVyYXRpb24iKTsKIH0KIApAQCAtMjU2
Myw4ICsyNTY0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW4KICAgICByZXR1cm4gYXJnc0Nv
dW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxs
PGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
Iik7CiB9CiAKQEAgLTI1ODMsOCArMjU4NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbFN0
YXRpYzxqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25T
dGF0aWMiKTsKIH0KIApAQCAtMjYwMyw4ICsyNjA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5T
cGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVk
SW5TcGVjaWZpY1dvcmxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQm9keT4oKnN0YXRlLCAiZW5hYmxl
ZEluU3BlY2lmaWNXb3JsZCIpOwogfQogCkBAIC0yNjIxLDggKzI2MjUsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1
bnRpbWVGZWF0dXJlRW5hYmxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlRW5hYmxlZCIpOwogfQogCkBAIC0yNjM5LDggKzI2NDQsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxl
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50
aW1lRmVhdHVyZXNFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJl
c0VuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlc0VuYWJsZWQiKTsKIH0KIApAQCAtMjY1NCw4ICsyNjYwLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25U
ZXN0UHJpdmF0ZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25U
ZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQm9keSwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAidGVzdFByaXZhdGVGdW5jdGlvbiIpOwogfQogCkBA
IC0yNjcwLDggKzI2NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmlu
Z1Byb21pc2U8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKTsKIH0KIApA
QCAtMjY4Myw4ICsyNjkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb28KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
R2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgImdldFNlY3JldEJv
b2xlYW4iKTsKIH0KIApAQCAtMjY5Nyw4ICsyNzA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVy
ZUcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0
RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAidGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggZjFjZTllZTQ2OTc2OTQxNTJjYjMzNjYz
ODViZDU1M2MwNTFlNWZlZC4uZjVmODY3YzQ0ZjVhOWQ5NmJmMDZkZGMzZjFhNGM0YzE3YzlhNTVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAt
Mjc2LDggKzI3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbklu
ZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRl
eGVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+
KCpzdGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRl
eCBjMDNkNzhiNmI2ZTViY2NlYmNlYzBiZGU1MWZiNjQ0YzVjZDBhYzUxLi5kNDVhZDA2ZmVkMjU2
ZDkwZjA0YmU3ZGRkNzgxMWE4N2UxNWI5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAt
NjgsMzEgKzY4LDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1w
bGVtZW50c01ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRo
b2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhv
ZDIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
MyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kNChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kNChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFr
ZU5vZGVzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVu
dGFsTWV0aG9kNChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRo
b2Q0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8v
IEF0dHJpYnV0ZXMKQEAgLTI0NCw5ICsyNDQsOSBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBwbGVt
ZW50YWw6OlNVUFBMRU1FTlRBTENPTlNUQU5UMSA9PSAxLCAiU1VQUExFTUVOVEFMQ09OU1RBTgog
c3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBMID09IDIsICJDT05TVF9J
TVBMIGluIFRlc3RTdXBwbGVtZW50YWwgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsK
ICNlbmRpZgogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7
CkBAIC04NzMsOCArODczLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGgKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhv
ZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6
Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxQm9k
eT4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKIH0KIApAQCAtODk4LDggKzg5OSw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwuaW1wbGVtZW50c01ldGhvZDIoKmNvbnRleHQsIFdURk1vdmUo
c3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMkJvZHk+KCpzdGF0ZSwg
ImltcGxlbWVudHNNZXRob2QyIik7CiB9CiAKQEAgLTkxMyw4ICs5MTUsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1w
bGVtZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDNCb2R5Pigqc3Rh
dGUsICJpbXBsZW1lbnRzTWV0aG9kMyIpOwogfQogCkBAIC05MjksOCArOTMyLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVu
Y3Rpb25JbXBsZW1lbnRzTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0
aW9uSW1wbGVtZW50c01ldGhvZDQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGxTdGF0aWM8anNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keT4oKnN0YXRlLCAiaW1w
bGVtZW50c01ldGhvZDQiKTsKIH0KIApAQCAtOTQ2LDggKzk1MCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VO
b2Rlc0JvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElE
TEludGVyZmFjZTxOb2RlPj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5Pigqc3RhdGUsICJ0YWtlTm9kZXMiKTsKIH0K
IApAQCAtOTYzLDggKzk2OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZh
Y2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0
aG9kMUJvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKIH0KIApAQCAtOTg4LDgg
Kzk5NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE1ldGhvZDIoaW1wbCwgKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMkJvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRh
bE1ldGhvZDIiKTsKIH0KIApAQCAtMTAwMyw4ICsxMDEwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVu
dGFsTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRh
bE1ldGhvZDMoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDNCb2R5Pigqc3Rh
dGUsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiB9CiAKQEAgLTEwMTksOCArMTAyNyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3VwcGxlbWVudGFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0YXRpYzxqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNEJvZHk+KCpz
dGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDQiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5k
ZXggNzRmODQ3NWM5MmRkMmU2YjdmNWE1NWIxNzA0N2E0NjdjMzBhZWZjMi4uMjYzZmEyZDU3MTg4
NTNjOTFmYThiMjVmZTJjNDRlZWZiM2EzOGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC00
MiwxMSArNDIsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1
bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlv
blZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90
b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXND
YWxsZXIoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxU
ZXN0SXRlcmFibGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7
CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVu
dHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
c3RhdGUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNhbGw8
anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXI+KCpzdGF0ZSwgImVu
dHJpZXMiKTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyKEV4ZWNTdGF0ZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdEl0ZXJhYmxlSXRl
cmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpLZXkpKTsKIH0KIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25L
ZXlzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbDxqc1Rlc3RJdGVyYWJsZVByb3RvdHlw
ZUZ1bmN0aW9uS2V5c0NhbGxlcj4oKnN0YXRlLCAia2V5cyIpOwogfQpAQCAtMjE4LDcgKzIxOCw3
IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVG
dW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShp
dGVyYXRvckNyZWF0ZTxUZXN0SXRlcmFibGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlv
bktpbmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3Rv
dHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIHN0YXRlKQogewogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRl
cmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+
KCpzdGF0ZSwgInZhbHVlcyIpOwogfQpAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxs
ZXIoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckZvckVhY2g8VGVz
dEl0ZXJhYmxlSXRlcmF0b3I+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0K
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90
eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0
ZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbDxqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oKnN0YXRlLCAiZm9yRWFj
aCIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NTdkNDBmZWVhMWQ3YzE0NGQzMDQxYzdjNWEzYTE0MzFhYTAxMDllMy4uYjM2NTdlZDhhZjliZDEz
YjkyYmRmNGVkNDk1NDE3MTkyY2YyNjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMK
IApAQCAtMjI2LDggKzIyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKnN0YXRlKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cj46OmNhbGw8anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21GdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggYzkyMDY1
ZGM5NWY3MzIyY2QwOGJjMjdmNjFkZGE3ZWNlZjAxZmFjOC4uOTNjMWY0YjlkYWIzOGEyN2ZkZWUy
MzU5NzA0OTg5YzJlNDUwYmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xODQsOCArMTg0LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGVGdW5jdGlvbk0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpjYWxs
PGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZEJvZHk+
KCpzdGF0ZSwgIm1ldGhvZCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA3MzU0N2FiOTc2
OGRiMmJjOWU4ZWNhNWMwZTRjYTMxODgxNWViOGFhLi40OGI3Y2NhZmJiMTdkZjU0NGE2M2YyNjc0
NDMwNjAzODY4MTI4ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zNDYsOCArMzQ2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5Pigq
c3RhdGUsICJuYW1lZFNldHRlciIpOwogfQogCkBAIC0zNjYsOCArMzY3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAppbmRleCA2ZTk4Zjc2MDY3NGUwYmEwMzM2MmVkOGQ5MDI0MDI4Njdk
MGM4NWUxLi41YjIzMWRiNjkwYzk3NDVlN2U4OGYxNGRiY2U0OWE2ZmIyMzAzODdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC04OCw5ICs4OCw5IEBAIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwKIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxs
ZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAppbmRleCBhNGY2ZDgyMzNiMGRhMDAzZWMyZjI4ODcwMjVjNjE0MmM0N2RiZDczLi44M2Q3
Zjk5M2FhZWViNGQwNTZkMzNhMWRiMjQyOGY0YmNjMmY1YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZUZ1bmN0aW9uTmFtZWREZWxldGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkRGVsZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNTcsOCArMjU3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZERlbGV0ZXJCb2R5Pigqc3RhdGUsICJuYW1lZERlbGV0ZXIiKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGMz
OTFmMmY4Yjk1YThhMjg0MGJkNzQ0YTFhZTVlMjdjZjc3MDFlZWUuLjNhNDg5ZTFiNGIwODFhZjky
NWIzMDlkNjViNjYxNGY0YWZiYjdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJO
YW1lKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFt
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0yMzIsOCArMjMyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuZ2V0dGVy
TmFtZShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHk+KCpzdGF0ZSwgImdldHRlck5hbWUi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCmluZGV4IDU3YWU0YWUzZDk1NmYyZTRiMTA2N2YyYTY4MjkwN2IwOTA3NzNmMWIuLjhlNDIy
NGNhMmMyOGJmMTZlMGE4MDc1ZjVhOTVmMzE4N2EyNTk1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI5OCw4ICsyOTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxs
PGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDU3NTc4NTc3ZmU3
NGY0ZmMxNDZhMzQ2YjY3NGFkODkxYWUxNGY0MzEuLjhlNDM0YjkwOGY4ODZmZWUxZDZmYmNmZjZm
ZDk0NGVmNjVjNGNlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4
ZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25O
YW1lZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTMyMyw4ICszMjMsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKnN0YXRlLCAibmFtZWRT
ZXR0ZXIiKTsKIH0KIApAQCAtMzQwLDggKzM0MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlw
ZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2Fs
bDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRl
eGVkU2V0dGVyQm9keT4oKnN0YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5jcHAKaW5kZXggMzUyYzg2NTQ0MzQxY2MzMjE0ODdjZDJmNzVhNTlmNThkOGNhNDFhNy4u
MzE5NzNmZDRjNGQzM2UyOTk1OTgzOWY2ZDVlNWEwMTllZjE1NmVlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcApAQCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5j
dGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVy
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9u
SW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90
b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMzQ2LDggKzM0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJuYW1l
ZFNldHRlciIpOwogfQogCkBAIC0zOTAsOCArMzkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQ
cm8KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlck92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0
YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRleCAxMjczZmQ2
ZjFiYWM4ZWUyZTkxYWE5MTU4OTU1N2VjMTRlOWI4MTQwLi5mNmJmMjYzZTZmNTg2ZjgxNDg1Zjk3
NWVlYWVmZjJiZDM2MTI0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTMzNiw4ICszMzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpz
dGF0ZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggOTgzYmYzNGYwYjFjMDFhNDcz
NTNmN2EwZTdlOWI2ZmMxZDM2YzlkYi4uOGQ0MjdmZGY3MzUwMjFmNzJkZDdmODA2Yjg4Y2FlYzFj
OTc4NzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVy
YXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMzIzLDggKzMyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25V
bmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAppbmRleCA4NzA2ZWU1OGQ2ZTdhM2UxMDllMDNjMzIyNDlmMWQxMGRi
YjVjZjFlLi44OTEzMTFlNjc5ZDU3N2FiNzViZWYyZmFmYzM3ZGUyN2ZiOThkNDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCkBAIC00OCwxOCArNDgsMTggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNh
bGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVh
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9s
SXRlcmF0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC05NSw5ICs5NSw5
IEBAIGNsYXNzIEpTVGVzdE5vZGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogdXNpbmcgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxK
U1Rlc3ROb2RlPjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMzAwLDgg
KzMwMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQm9keSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFdvcmtlclByb21pc2UiKTsK
IH0KIApAQCAtMzE0LDggKzMxNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRS
ZXN1bHQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2Vj
cmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0
YXRlLCAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Iik7CiB9CiAKQEAgLTMyNyw4ICszMjksOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgImdldFNl
Y3JldEJvb2xlYW4iKTsKIH0KIApAQCAtMzQxLDggKzM0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdl
dFNlY3JlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwu
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RO
b2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKTsKIH0K
IApAQCAtMzY4LDcgKzM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihFeGVjU3RhdGUqCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxUZXN0Tm9kZUl0ZXJhdG9yPigqdGhpc09i
amVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVy
Pigqc3RhdGUsICJlbnRyaWVzIik7CiB9CkBAIC0zNzgsNyArMzgyLDcgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyKEV4
ZWNTdGF0ZSosIEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRl
c3ROb2RlSXRlcmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpLZXkpKTsKIH0KIAot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25LZXlzQ2FsbGVyPigqc3RhdGUsICJrZXlzIik7CiB9CkBAIC0zODgsNyArMzkyLDcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXNDYWxsZXIoRXhlY1N0YXRlKiwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9y
Q3JlYXRlPFRlc3ROb2RlSXRlcmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1
ZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUp
CiB7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQpAQCAt
Mzk4LDcgKzQwMiw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShpdGVyYXRvckZvckVhY2g8VGVzdE5vZGVJdGVyYXRvcj4oKnN0YXRlLCAqdGhp
c09iamVjdCwgdGhyb3dTY29wZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5v
ZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpzdGF0
ZSwgImZvckVhY2giKTsKIH0KQEAgLTQyMCw4ICs0MjQsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlY1N0YXRl
KiBzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6c2VyaWFsaXplKCpz
dGF0ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCmluZGV4IGQ4MDk2OWUwNDA5Mzg2NWJhOTRlNGFhYzc5N2UyYjc2NWRiNTJk
OTguLmNhYzAzZDZmNThkZTliNzQwZjExODE0MDdhN2M2OGRlMjIwMjk4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CkBAIC0xNDIwLDE3OCArMTQyMCwxNzggQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25h
bERpY3Rpb25hcnlDIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmEKIC8vIEZ1
bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJ
blNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVT
ZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVF
bmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRT
cGVjaWZpY01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdN
ZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRo
QXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ1NwZWNpYWxNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVt
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
TWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFkZEV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlz
dGVuZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhl
Y1N0YXRlVm9pZEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoRG9jdW1lbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRv
Y3VtZW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1
bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJp
bmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0Vt
cHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJ
c05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxl
V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0
aE5TUmVzb2x2ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29y
ZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1Ry
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5n
U3RhdGljTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3Ry
aW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
ZXJpYWxpemVkVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoUmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVy
bmluZ09iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uUHJpdmF0ZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhj
ZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4
ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlV2l0aFNwYWNlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
QW5kRGVmYXVsdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0
cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJs
ZUlzTmFOKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNl
cXVlbmNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0Zh
bHNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQW55KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVySXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJv
bWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0
aENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lm
IEVOQUJMRShDb25kaXRpb24xKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRp
dGlvbjIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qz
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvbmFsUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxh
YmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xh
c3NNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGlu
Z3Vpc2hpbmdVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0
aW5ndWlzaGluZ1VuaW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rp
bmd1aXNoaW5nUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0
aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25h
bChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlv
bldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVs
ZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDEoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcmFuZ2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9k
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y1VuaW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3Rv
bVByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9t
UHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093
blByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9t
aXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlT25PcHRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxV
bmlvblBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2Qo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5j
dGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNP
d25Qcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoQ09ORElUSU9OMSkg
fHwgRU5BQkxFKENPTkRJVElPTjIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNh
bGxlck5hbWVkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhF
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5k
b3dGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRv
V2luZG93QW5kV29ya2VyRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25BdHRhY2hTaGFkb3dSb290KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRl
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxl
ck5hbWVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
bmRXb3JrZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRy
aWJ1dGVzCiAKQEAgLTE5NDAsOSArMTk0MCw5IEBAIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09O
U1RfVkFMVUVfMTQgPT0gMHgxYWJjLCAiQ09OU1RfVkFMVUVfMTQgaW4gVGVzdE9iaiBkb2VzCiBz
dGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX0lNUEwgPT0gMTUsICJDT05TVF9JTVBMIGluIFRl
c3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIHN0YXRpY19hc3NlcnQoVGVz
dE9iajo6cmVhZG9ubHkgPT0gMCwgInJlYWRvbmx5IGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2gg
dmFsdWUgZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3Rl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMjU0
Myw5ICsyNTQzLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2Jq
MyhFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTVGVzdE9iaihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNUZXN0
T2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48
c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKQEAgLTU1NDUsOCArNTU0NSw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpOwogfQogCkBAIC01NTY1LDggKzU1NjYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPcAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3Rh
dGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7CiB9CiAKQEAgLTU1ODUsOCAr
NTU4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29yCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHk+
KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
Iik7CiB9CiAKQEAgLTU2MDMsOCArNTYwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RCCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lm
aWNNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZEJvZHk+KCpzdGF0
ZSwgIndvcmxkU3BlY2lmaWNNZXRob2QiKTsKIH0KIApAQCAtNTYxNyw4ICs1NjIxLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2FsY3VsYXRlU2VjcmV0UmVzdWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3Vs
YXRlU2VjcmV0UmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwog
fQogCkBAIC01NjMwLDggKzU2MzUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xl
YW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJv
b2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29s
ZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC01NjQ0LDggKzU2
NTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW4iKTsKIH0KIApAQCAtNTY2MCw4ICs1NjY3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kQm9keT4oKnN0YXRlLCAidm9pZE1ldGhv
ZCIpOwogfQogCkBAIC01NjgyLDggKzU2OTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUs
ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKIH0KIApAQCAtNTY5NSw4ICs1NzA0LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0
ZU1ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0
ZT4oaW1wbC5ieXRlTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25C
eXRlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhv
ZEJvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2QiKTsKIH0KIApAQCAtNTcxNiw4ICs1NzI2LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RGTW92
ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAiYnl0ZU1ldGhvZFdpdGhBcmdz
Iik7CiB9CiAKQEAgLTU3MjksOCArNTc0MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kQm9keShKU0M6CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9k
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHk+KCpzdGF0ZSwg
Im9jdGV0TWV0aG9kIik7CiB9CiAKQEAgLTU3NTAsOCArNTc2Miw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9k
V2l0aEFyZ3NCCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBs
Lm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwg
Km9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3Rl
dE1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0
ZXRNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKIH0K
IApAQCAtNTc2Myw4ICs1Nzc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZEJvZHk+KCpzdGF0ZSwgImxvbmdNZXRob2Qi
KTsKIH0KIApAQCAtNTc4NCw4ICs1Nzk4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm8KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kV2l0
aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm9k
eT4oKnN0YXRlLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAgLTU3OTcsOCArNTgxMiw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9iak1ldGhvZEJvZHkoSlNDOjpFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcGwub2JqTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9iak1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhv
ZEJvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZCIpOwogfQogCkBAIC01ODE4LDggKzU4MzQsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJnc0JvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBpbXBsLm9iak1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2Jq
TWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAg
LTU4MzEsOCArNTg0OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2RCb2R5CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9keT4o
KnN0YXRlLCAidW5mb3JnZWFibGVNZXRob2QiKTsKIH0KIApAQCAtNTg0OSw4ICs1ODY3LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNTg2Nyw4ICs1ODg2LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQ
YXRoTlNSZXMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogfQogCkBAIC01ODgwLDgg
KzU5MDAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFi
bGVTdHJpbmdNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kQm9keT4oKnN0YXRlLCAibnVsbGFibGVTdHJpbmdN
ZXRob2QiKTsKIH0KIApAQCAtNTg5Miw4ICs1OTEzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0
YXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4oKnN0YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ1N0YXRpY01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2RCb2R5Pigqc3RhdGUsICJudWxsYWJs
ZVN0cmluZ1N0YXRpY01ldGhvZCIpOwogfQogCkBAIC01OTA5LDggKzU5MzEsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZVN0cmluZ1NwZWNpYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0
aG9kKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQm9keT4o
KnN0YXRlLCAibnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kIik7CiB9CiAKQEAgLTU5MjcsOCAr
NTk1MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CiB9
CiAKQEAgLTU5NDUsOCArNTk2OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFs
b25lRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25l
RW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyIpOwogfQog
CkBAIC01OTYxLDggKzU5ODYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxF
bnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIik7CiB9CiAKQEAgLTU5Nzcs
OCArNjAwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVuCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmRE
ZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5k
RGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKIH0KIApAQCAtNTk5Niw4ICs2MDIz
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzKFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3MiKTsKIH0KIApAQCAtNjAxNCw4ICs2MDQyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVTVlN0cmluZ0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhV
U1ZTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoVVNWU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZyIpOwog
fQogCkBAIC02MDMyLDggKzYwNjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVUwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFi
bGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJp
bmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJp
bmdBcmciKTsKIH0KIApAQCAtNjA1MCw4ICs2MDgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmlu
Z0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNjA2OCw4ICs2MDk5LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5dGVT
dHJpbmdBcmciKTsKIH0KIApAQCAtNjA4Niw4ICs2MTE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxh
YmxlQnkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
dWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyIpOwogfQogCkBAIC02MTA0LDggKzYxMzcsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQnl0ZVN0cmluZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIApA
QCAtNjEyMiw4ICs2MTU2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9keSgKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9keT4oKnN0YXRlLCAic2VyaWFsaXplZFZhbHVlIik7
CiB9CiAKQEAgLTYxNDAsOCArNjE3NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNv
cmQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdp
dGhSZWNvcmQiKTsKIH0KIApAQCAtNjE1NCw4ICs2MTkwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbkIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC02MTY3LDggKzYyMDQs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlv
blJldHVybmluZ0xvbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5p
bmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmciKTsK
IH0KIApAQCAtNjE4MCw4ICs2MjE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblIKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRo
RXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1
cm5pbmdPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5n
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvblJldHVybmluZ09iamVjdEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25S
ZXR1cm5pbmdPYmplY3QiKTsKIH0KIApAQCAtNjE5Miw4ICs2MjMxLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kQm9keShKU0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3Rv
bU1ldGhvZCgqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhv
ZEJvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZCIpOwogfQogCkBAIC02MjA0LDggKzYyNDQsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DdXN0b21NZXRob2RXaXRoQXJncwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RX
aXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3Rh
dGUsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC02MjIxLDggKzYyNjIsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Qcml2YXRlTWV0aG9kQm9keShKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQp
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keSwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAicHJpdmF0ZU1ldGhvZCIpOwog
fQogCkBAIC02MjM4LDggKzYyODAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wdWJs
aWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJp
dmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQm9k
eT4oKnN0YXRlLCAicHVibGljQW5kUHJpdmF0ZU1ldGhvZCIpOwogfQogCkBAIC02MjYwLDggKzYz
MDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QWRkRXZlbnRMaXN0ZW5lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFk
ZEV2ZW50TGlzdGVuZXJCb2R5Pigqc3RhdGUsICJhZGRFdmVudExpc3RlbmVyIik7CiB9CiAKQEAg
LTYyODIsOCArNjMyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJCCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lckJvZHk+KCpzdGF0ZSwgInJlbW92ZUV2
ZW50TGlzdGVuZXIiKTsKIH0KIApAQCAtNjI5Niw4ICs2MzQxLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0
ZVZvaWRCb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aEV4ZWNTdGF0ZVZvaWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkQm9keT4o
KnN0YXRlLCAid2l0aEV4ZWNTdGF0ZVZvaWQiKTsKIH0KIApAQCAtNjMwOSw4ICs2MzU1LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iakJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgaW1wbC53aXRoRXhlY1N0YXRlT2JqKCpzdGF0ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmoo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3Rh
dGVPYmoiKTsKIH0KIApAQCAtNjMyMyw4ICs2MzcwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRF
eGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4
ZWNTdGF0ZVZvaWRFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4
Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3Rh
dGVWb2lkRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24i
KTsKIH0KIApAQCAtNjMzNiw4ICs2Mzg0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2UKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoRXhl
Y1N0YXRlT2JqRXhjZXB0aW9uKCpzdGF0ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHk+
KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIApAQCAtNjM1Myw4ICs2
NDAyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Qm9keT4oKnN0YXRl
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKIH0KIApAQCAtNjM3MCw4ICs2NDIwLDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGUiKTsKIH0KIApAQCAtNjM4Niw4ICs2NDM3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
bigqc3RhdGUsICpjb250ZXh0KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhj
ZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVPYmpFeGNlcHRpb24iKTsKIH0KIApAQCAtNjQwMiw4ICs2NDU0LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAqY29u
dGV4dCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0
YXRlV2l0aFNwYWNlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0JvZHk+KCpzdGF0ZSwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyIpOwogfQog
CkBAIC02NDIxLDggKzY0NzQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVu
dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3
aXRoRG9jdW1lbnRBcmd1bWVudCIpOwogfQogCkBAIC02NDM4LDggKzY0OTIsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
Q2FsbGVyRG9jdW1lbnRBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhD
YWxsZXJEb2N1bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVyRG9j
dW1lbnRBcmd1bWVudCIpOwogfQogCkBAIC02NDUyLDggKzY1MDcsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVy
V2luZG93QXJndQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2lu
ZG93QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2Fs
bGVyV2luZG93QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQi
KTsKIH0KIApAQCAtNjQ2OCw4ICs2NTI0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTY0ODQsOCArNjU0MSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0Fu
ZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1
bHRWYWx1ZSIpOwogfQogCkBAIC02NTA0LDggKzY1NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0
aW9uYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdCb2R5
Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogfQog
CkBAIC02NTI2LDggKzY1ODUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKIH0K
IApAQCAtNjU0Miw4ICs2NjAyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7CiB9CiAKQEAgLTY1NTgsOCAr
NjYxOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0JvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIpOwogfQogCkBAIC02NTc0LDggKzY2
MzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nIik7CiB9CiAKQEAgLTY1OTAsOCAr
NjY1Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCkBAIC02NjA2LDggKzY2NzAsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRW
YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKQEAgLTY2MjIsOCArNjY4Nyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbCIpOwogfQogCkBAIC02NjM4
LDggKzY3MDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1Vu
ZGVmaW5lZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZp
bmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWRCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZCIpOwogfQogCkBAIC02NjU0LDggKzY3MjEsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGxCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsIik7CiB9CiAKQEAgLTY2NzAs
OCArNjczOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNjY4Niw4ICs2NzU1LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsVVMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJp
bmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5n
SXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02NzAyLDggKzY3NzIsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lz
RW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNF
bXB0eVN0cmluZyIpOwogfQogCkBAIC02NzE4LDggKzY3ODksOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxEbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbERvdWJsZUlzTmFOKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxEb3VibGVJc05hTiIpOwogfQogCkBAIC02NzM0LDggKzY4MDYsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxGbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxGbG9hdElzTmFOIik7CiB9CiAKQEAgLTY3NTAsOCArNjgyMyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbExvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbExvbmdMb25nIik7CiB9CiAKQEAgLTY3NjYsOCArNjg0MCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbExvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7CiB9CiAKQEAgLTY3ODIsOCArNjg1Nyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmci
KTsKIH0KIApAQCAtNjc5OCw4ICs2ODc0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvQm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOwogfQog
CkBAIC02ODE0LDggKzY4OTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
ZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVu
Y2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogfQogCkBAIC02
ODMwLDggKzY5MDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5j
ZUlzRW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1w
dHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTZXF1ZW5jZUlzRW1wdHlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5j
ZUlzRW1wdHkiKTsKIH0KIApAQCAtNjg0Niw4ICs2OTI1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiIp
OwogfQogCkBAIC02ODYyLDggKzY5NDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCbwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuSXNGYWxzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJv
b2xlYW5Jc0ZhbHNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9u
YWxCb29sZWFuSXNGYWxzZSIpOwogfQogCkBAIC02ODc4LDggKzY5NTksOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBbnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBbnlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiKTsKIH0KIApA
QCAtNjg5NCw4ICs2OTc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2IKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2Jq
ZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Qm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Iik7CiB9CiAKQEAgLTY5MTAsOCArNjk5
Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxl
V3JhcHBlckJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIp
OwogfQogCkBAIC02OTI2LDggKzcwMTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGxCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiKTsKIH0KIApAQCAt
Njk0Miw4ICs3MDI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhO
U1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29s
dmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsWFBhdGhOU1Jlc29sdmVyQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhO
U1Jlc29sdmVyIik7CiB9CiAKQEAgLTY5NTgsOCArNzA0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFJlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFJlY29yZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCIpOwog
fQogCkBAIC02OTc0LDggKzcwNjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21p
c2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlIik7CiB9CiAKQEAgLTY5
OTIsOCArNzA4MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhDYWxsYmFja0FyZyIpOwogfQogCkBAIC03MDEyLDggKzcxMDEsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Fy
ZyIpOwogfQogCkBAIC03MDI4LDggKzcxMTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2Fs
bGJhY2tBbmRPcHRpb25hbEFyZyIpOwogfQogCkBAIC03MDQ2LDggKzcxMzcsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tGdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogfQogCkBAIC03MDY2LDggKzcxNTgsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9u
QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tG
dW5jdGlvbkFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKQEAgLTcw
ODIsOCArNzE3NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlv
bkFuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKIH0KIApAQCAtNzA5Nyw4ICs3
MTkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0
YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAic3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKIH0KIApAQCAtNzExNCw4ICs3MjA5
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRp
Yzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJn
Qm9keT4oKnN0YXRlLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiB9CiAKQEAgLTcx
MjgsOCArNzIyNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmNvbmRpdGlvbmFsTWV0
aG9kMSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKIH0KIApAQCAt
NzE0NSw4ICs3MjQyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyQm8KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyQm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxN
ZXRob2QyIik7CiB9CiAKQEAgLTcxNjIsOCArNzI2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9k
M0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kM0JvZHk+KCpz
dGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogfQogCkBAIC03MzYzLDggKzc0NjIsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kT3ZlcgogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogfQogCkBAIC03NDIwLDggKzc1MjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1l
dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2Fk
ZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKIH0KIApAQCAtNzQ2Nyw4ICs3NTY4LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9u
T3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1
aXNoaW5nVW5pb24iKTsKIH0KIApAQCAtNzUxNiw4ICs3NjE4LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgy
RGlzdGluZ3Vpc2hpbmdVbmlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zT3ZlcmxvYWREaXNw
YXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9u
cyIpOwogfQogCkBAIC03NTY0LDggKzc2NjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAog
ICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1
aXNoaW5nVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rp
bmd1aXNoaW5nVW5pb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb25PdmVybG9hZERpc3BhdGNoZXI+
KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIpOwog
fQogCkBAIC03NjEzLDggKzc3MTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZQogICAgIHJl
dHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb25PdmVybG9hZERpc3BhdGNoZXI+
KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24iKTsKIH0KIApAQCAtNzY2Myw4ICs3
NzY4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWwKICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb25PdmVybG9hZERp
c3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24iKTsKIH0KIApAQCAt
NzcxMiw4ICs3ODE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGUKICAgICByZXR1cm4gYXJn
c0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRl
cihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQ
YXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdp
dGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVyPigq
c3RhdGUsICJvdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyIik7
CiB9CiAKQEAgLTc3MjUsOCArNzgzMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RCb2R5KEpTCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9k
Iik7CiB9CiAKQEAgLTc3MzksOCArNzg0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KFRlc3RPYmo6OmNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0
aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRp
b25hbEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsIik7CiB9CiAKQEAgLTc3
NTEsOCArNzg2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyQm9keShKCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RPYmo6OmNsYXNzTWV0aG9kMigqc3RhdGUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMkJvZHk+KCpzdGF0ZSwgImNs
YXNzTWV0aG9kMiIpOwogfQogCkBAIC03ODA0LDggKzc5MTQsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxTwogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDFPdmVybG9hZERpc3BhdGNo
ZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QxIik7CiB9CiAKQEAgLTc4MjYsOCArNzkzNyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoQ2xhbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhDbGFtcEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1w
Iik7CiB9CiAKQEAgLTc4NDIsOCArNzk1NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aENsYW1wT25PcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1w
T25PcHRpb25hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1w
T25PcHRpb25hbCIpOwogfQogCkBAIC03ODYyLDggKzc5NzUsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcmNlUmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFz
c01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhFbmZv
cmNlUmFuZ2UiKTsKIH0KIApAQCAtNzg3OCw4ICs3OTkyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
RW5mb3IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNz
TWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsQm9keT4o
KnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbCIpOwogfQogCkBA
IC03ODk2LDggKzgwMTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMbwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25n
U2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2Ui
KTsKIH0KIApAQCAtNzkxMyw4ICs4MDI5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkIKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4o
KnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3Ry
aW5nQXJyYXlGdW5jdGlvbihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJz
dHJpbmdBcnJheUZ1bmN0aW9uIik7CiB9CiAKQEAgLTc5MzAsOCArODA0Nyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0
cmluZ0xpc3RGdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVy
ZmFjZTxET01TdHJpbmdMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKCp2YWx1ZXMpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25E
b21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVu
Y3Rpb25Cb2R5Pigqc3RhdGUsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKIH0KIApAQCAtNzk0
Niw4ICs4MDY0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmEKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25Q
YXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFt
ZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhP
cHRpb25hbFVuaW9uUGFyYW1ldGVyQm9keT4oKnN0YXRlLCAib3BlcmF0aW9uV2l0aE9wdGlvbmFs
VW5pb25QYXJhbWV0ZXIiKTsKIH0KIApAQCAtNzk2Niw4ICs4MDg1LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiB9CiAK
QEAgLTc5ODMsOCArODEwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keShKCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50Pj4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlk
KFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7CiB9CiAKQEAgLTc5
OTYsOCArODExNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Qm9keShKCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdEb2N1bWVudD4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBCaW5kaW5nU2VjdXJpdHk6OmNoZWNr
U2VjdXJpdHlGb3JOb2RlKCpzdGF0ZSwgaW1wbC5nZXRTVkdEb2N1bWVudCgpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0
U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Qm9keT4oKnN0YXRlLCAiZ2V0
U1ZHRG9jdW1lbnQiKTsKIH0KIApAQCAtODAxNCw4ICs4MTM2LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFCb2R5
KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keT4oKnN0YXRlLCAiY29udmVydDEiKTsKIH0KIApA
QCAtODAzMiw4ICs4MTU1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDJCb2R5KEpTQzo6RXgKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0MihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQyQm9keT4oKnN0YXRlLCAiY29udmVydDIiKTsKIH0KIApAQCAtODA1MCw4ICs4MTc0LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDNCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keT4oKnN0YXRlLCAiY29u
dmVydDMiKTsKIH0KIApAQCAtODA2OCw4ICs4MTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDRCb2R5KEpTQzo6
RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keT4oKnN0YXRlLCAiY29udmVydDQiKTsKIH0KIApAQCAtODA4
MSw4ICs4MjA3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0
YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
Qm9keT4oKnN0YXRlLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKIH0KIApAQCAtODA5NSw4ICs4
MjIyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3JhbmdlQm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlQm9keT4oKnN0YXRlLCAi
b3JhbmdlIik7CiB9CiAKQEAgLTgxMTUsOCArODI0Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZEJv
ZHk+KCpzdGF0ZSwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiB9CiAKQEAgLTgxMzUsOCArODI2
NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljRG91YmxlTWV0
aG9kIik7CiB9CiAKQEAgLTgxNTUsOCArODI4NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZEJv
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
Tm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZEJvZHk+KCpzdGF0
ZSwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogfQogCkBAIC04MTc1LDggKzgzMDYsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY1VuaW9uTWV0aG9kQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNV
bmlvbk1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
VW5pb25NZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJpYWRpY1VuaW9uTWV0aG9kIik7CiB9CiAKQEAg
LTgxOTUsOCArODMyNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueUJvZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFu
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueUJvZHk+KCpzdGF0ZSwg
ImFueSIpOwogfQogCkBAIC04MjA5LDggKzgzNDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
QgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9t
aXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0
YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogfQogCkBAIC04MjI3LDggKzgzNjEsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5k
b3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50
Iik7CiB9CiAKQEAgLTgyNDEsOCArODM3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9taXNl
RXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC04MjU3LDggKzgzOTMsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJv
bWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRp
b25hbEludEFyZ3VtZW50Iik7CiB9CiAKQEAgLTgzMDIsOCArODQzOSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlT3ZlcmxvYWRlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb25PdmVybG9hZERpc3BhdGNoZXIsIFByb21pc2VF
eGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzMTUsOCArODQ1Myw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9t
aXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0U3RhdGljUHJv
bWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzMjgsOCArODQ2Nyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNU
ZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6
OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4
Y2VwdGlvbiIpOwogfQogCkBAIC04MzQwLDggKzg0ODAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlz
ZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3RvbVBy
b21pc2VGdW5jdGlvbigqc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Q
cm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RDdXN0b21Qcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRv
d09yV29ya2VyPigqc3RhdGUsICJ0ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAg
LTgzNTIsOCArODQ5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OnRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24o
KnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNl
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFN0YXRpY0N1c3RvbVByb21p
c2VGdW5jdGlvbiIpOwogfQogCkBAIC04MzY0LDggKzg1MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0
dXJuc093bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3Rv
bVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJu
c093blByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3du
UHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFJldHVybmluZ093blBy
b21pc2U8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21p
c2VGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0
aW9uIik7CiB9CiAKQEAgLTgzNzcsOCArODUyMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlz
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVm9pZD4+KCpz
dGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RSZXR1cm5zT3duUHJv
bWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlz
ZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Q
cm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxs
UmV0dXJuaW5nT3duUHJvbWlzZTxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5z
T3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJldHVy
bnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24iKTsKIH0KIApAQCAtODQzMiw4ICs4
NTc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZE8KICAgICByZXR1cm4gYXJnc0NvdW50IDwg
MSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxPdmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3Zlcmxv
YWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJs
b2FkT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7CiB9
CiAKQEAgLTg0ODIsOCArODYyNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlCiAgICAgcmV0
dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZE92ZXJsb2FkRGlzcGF0Y2hlcj4o
KnN0YXRlLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOwogfQogCkBAIC04NTAwLDggKzg2
NDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290Qm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QXR0YWNoU2hhZG93Um9vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0
dGFjaFNoYWRvd1Jvb3RCb2R5Pigqc3RhdGUsICJhdHRhY2hTaGFkb3dSb290Iik7CiB9CiAKQEAg
LTg1MTgsOCArODY2NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERp
Y3Rpb25hcnlQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxE
aWN0aW9uYXJ5UGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlckJvZHk+KCpzdGF0ZSwgIm9w
ZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIiKTsKIH0KIApAQCAtODUzNiw4
ICs4Njg0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGUKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyQm9keT4oKnN0YXRlLCAiYnVmZmVyU291
cmNlUGFyYW1ldGVyIik7CiB9CiAKQEAgLTg1NTQsOCArODcwMyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxl
ck5hbWVkQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxlZ2FjeUNhbGxlck5hbWVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJvZHk+
KCpzdGF0ZSwgImxlZ2FjeUNhbGxlck5hbWVkIik7CiB9CiAKQEAgLTg1NzUsOCArODcyNSw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXR1
cm5WYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5Pigqc3RhdGUsICJ0ZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iKTsKIH0KIApAQCAtODU5Niw4ICs4NzQ3LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFJldHVyblZhbHVlT3B0aW0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJldHVyblZh
bHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uV2l0aEV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlv
bldpdGhFeGNlcHRpb24iKTsKIH0KIApAQCAtODYxMCw4ICs4NzYyLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uQm9k
eT4oKnN0YXRlLCAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIik7CiB9CiAK
QEAgLTg2MjQsOCArODc3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9Xb3JrZXJGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpOwogfQogCkBAIC04NjM4LDggKzg3OTIsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db25kaXRpb25hbGx5RXhwb3NlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2Vy
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJjb25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24iKTsKIH0KIApAQCAtODY1MSw4
ICs4ODA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigqc3RhdGUsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1
dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJp
bmciKTsKIH0KIApAQCAtODY4NSw4ICs4ODQxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlY1N0YXRlKiBzdGEK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6c2VyaWFsaXplKCpzdGF0ZSwg
KnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA1NjE5NzYwMjg4
YTkwY2U4MDNhZTVhNDEwODhlYjZlM2IyMTdmNTYwLi44MzU1NWExOTY0OTMwOTQ0NGIwNDZhNWNj
MzdlN2JjYTgxODM1YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCkBAIC03NSw5ICs3NSw5IEBAIGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIAogdXNpbmcg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKIAotc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUq
IHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzMShDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC04OCw5ICs4
OCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczEoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkp
KTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihDYWxsRnJh
bWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihz
dGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0xMDEsOSArMTAxLDkgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3Rh
dGUqIHMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50
ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNT
dGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTEx
NCw5ICsxMTQsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogcwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShv
YmplY3QpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQo
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMTI3LDkgKzEyNyw5IEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQo
RXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVk
PElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
NShFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShDYWxsRnJhbWUqIHN0YXRlKQogewotICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7
CkBAIC0xNDAsOSArMTQwLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUqIHMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rk1vdmUob2JqZWN0KSkpOwogfQogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qo
RXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4o
MSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggMzc1ODkwMTdj
Y2E0NDJjY2ZlZWI3MzdlOWRiZTRmOTliYjU3YTlhZS4uMzcxODA0MWMxY2Q0Y2Y4YmM2YWY1Y2Q1
ODkyNzEyMmI1ZTk5MDQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtNzQsOSArNzQsOSBAQCBjbGFz
cyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbAogCiB1c2luZyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+OwogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKEV4
ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKENhbGxGcmFtZSogc3RhdGUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTg3LDkgKzg3LDkgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlMSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50
ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi1zdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UyKENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTEwMCw5ICsxMDAs
OSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92
ZShvYmplY3QpKSk7CiB9CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50
ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCA0NGVmYzcwODUyZTE0YjAzNWVjOWJkOTEy
YzFiYzQ3MmMwNjMxY2RkLi5mMzFjOWMyMTk4YzdhOGRkMGYwMTc2ZWU1NTk4ZDc0MjBlNzcwOGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9u
TmFtZWRJdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTIzNSw4ICsyMzUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZEl0ZW0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHk+KCpzdGF0ZSwgIm5hbWVkSXRlbSIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDVkNjVhZGFj
YWVhNGI4ZmRlODNiMjA3YjdhNGUwOTNkOGIyYzZjNTEuLmJkNmM0OTJmNmM1ZmJlZWFlYTBlZjNi
MjYwZmY5NTEzYmJkMTVlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwCkBAIC0xNTQsOSArMTU0LDkgQEAgY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAKIHVzaW5n
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6
OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggNWMwZDc4MmJiMzI5ZjExNzk5
OWIzN2NkMmNiMjRkMjFkODcwMmYxNi4uZjg4YTZlMTE3MDc3NmJmY2Q4MjVlMzdiMWRhNWJhY2E5
ZThhOWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRv
SlNPTihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC02NjUsOCAr
NjY1LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9u
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdFNlcmlhbGl6YXRpb246OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25U
b0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6
Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3Rh
dGUsICJ0b0pTT04iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dC5jcHAKaW5kZXggN2ViMTUyNjA5ZWNlOTc0ZmU4NWE1YjZhZTIwZWQ3MjlhZGQ3MWQ0MC4uYmUx
ZjM3ODhiMTRmOTk3ZjA0ZmNlNjQxZWU0OGNhN2U0MmNlOWZmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjIwLDgg
KzIyMCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNP
YmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRv
SlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCmluZGV4
IGNmMjcxZTJhY2I4ZGFmMTVmYzc0MTk2YzE2MzdjZDJjZTZkNzM0OWIuLmRjYzNjZWVjNmNlNzkx
NDVkOTJlOGY5N2M5YTQ4MTUyNjRmNWFiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pT
T04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApA
QCAtMjU1LDggKzI1NSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpzZXJpYWxpemUo
KnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46
OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTliNWVmNmI1MTg3
MzE4MzZlZGYyZjdmNTQ0NTYyZjc3YWFkYzRiYi4uMGVlZjQxNmUwMDQxZWUxMWVmNDcyZTZjMmJj
ZThlYWNiY2FlMjRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTUxLDggKzUxLDggQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1
bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25G
dW5jdGlvblJldHVybmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0z
MjMsOCArMzIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUYKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uQm9keT4oKnN0
YXRlLCAiZnVuY3Rpb24iKTsKIH0KIApAQCAtMzM2LDggKzMzNyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGVGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5mdW5jdGlvblJldHVybmluZygpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmdCb2R5Pigqc3RhdGUsICJmdW5jdGlv
blJldHVybmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBlNWM2MmUz
OTY0MzUzMTIwZmVjN2FiODE5NmFjN2JhYzQ2YWIwZDU2Li43MTk2NmY3NjBjMDRjOWRiN2YxM2Y2
OGVkMjBjOGI2NTliM2U5Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAt
MTc3LDggKzE3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RT
dHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RT
dHJpbmdpZmllcj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKaW5kZXggNzUyZTI2NmNiYzc4
ODlkMzNiNmY2ZGUxM2NkZjgxMTczMmYzN2E5OC4uM2UyZDg4OTBhOTVlMWUxYjMxOGYzMjFjNDk1
ODI4NTlhYTliZDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1
dGVzCiAKQEAgLTE3Nyw4ICsxNzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC50b1N0
cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcApp
bmRleCBhMDJhMDIwM2EyY2Q4MzZhNTgwMzU3ZjAyOTkzMWU5OWU0NmZhMWQ5Li40MDkxMzg0NmEz
YTUxZjUwODdjNDE4YmZkYmFhNzYxY2EyODA1MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC00MSw4ICs0MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
SWRlbnRpZmllcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzksOCArMTc5LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGVGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
SWRlbnRpZmllcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlm
aWVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyQm9keT4oKnN0YXRlLCAiaWRl
bnRpZmllciIpOwogfQogCkBAIC0xOTIsOCArMTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAppbmRleCBlNmVlYTk5YzBjNjA4Njk1ODBjOTBkYTI0OWJiNTgwN2FiMjZmZDQ1
Li5jMDJjZmY5NmE2YjlhYWJhMDU0Njk3YTY3NGVhYjVmNjgzYzk5NmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cApAQCAtNDEsOCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMK
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzksOCArMTc5LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBc1Byb3RvdHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQ
cm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXJCb2R5Pigqc3RhdGUsICJpZGVudGlmaWVyIik7CiB9
CiAKQEAgLTE5Miw4ICsxOTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRlcm5h
dGVJZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz46OmNhbGw8anNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKaW5kZXggYmNhMGZhZDgzYzUx
Zjg5NDEzMmJiOGNiMGY1ZmY5MmViYjI5MThjOC4uZDIxYWMzZGIwNmZmYzljNTZiMjNlNjUyMDM4
NzVmZWQxYzk0ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzcsOCArMTc3LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Z1Byb3RvdHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Y2FsbDxqc1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IGNmMGYxMWIyOWYwNDNk
ZGI2ZDdlNmE5YTc2ZjkxM2M0OGFkZjgyMTcuLjE2M2JmNjJlNTllYWIxNDVmZTFhZWVjZGEwZWEx
NTMxNjg2ODc1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTE5OSw4ICsxOTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVy
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZT46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApp
bmRleCA1N2NlYzg2YmVmZTdiNGFmNjhkMmQ1MWE1M2E0YTI0Yzk1NDU4MDAxLi43MGM2ZmE1YzZh
YjkwY2U1NWQwNGI2MDE3NjE0YmYwNGQyMjg2ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjE4LDggKzIxOCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVBy
b3RvdHlwZUZ1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4o
KnN0YXRlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FsbDxqc1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3Rh
dGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA2YjhjMDRhYzhl
MThmZWRhYmRmNTgwZDg1YmNlNGUyOTQzN2MxNzU4Li5kOGI0Mzg5NjVhM2U1YjczZTAyYzM0NDky
YzE4MTc0NjQxYzhlNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTYwLDIxICs2MCwyMSBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTZXF1ZW5jZUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVs
bGFibGVzQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51
bGxhYmxlc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZV
bmlvbnNBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jV2l0aENsYW1wSW5UeXBlZGVmKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbkZ1bmMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvblNldFNoYWRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRo
Q2xhbXBJblR5cGVkZWYoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblBvaW50RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVl
bmNlVGhhdFJlcXVpcmVzSW5jbHVkZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNDIsOSArMTQyLDkgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJUZXN0U3ViT2JqIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yVGVzdFN1Yk9iaiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTQ5Niw4ICs0OTYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5
KEpTQzo6RQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHk+KCpzdGF0ZSwgImZ1bmMiKTsKIH0K
IApAQCAtNTIyLDggKzUyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93Qm9keShKCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93Qm9keT4oKnN0YXRlLCAic2V0U2hhZG93Iik7CiB9
CiAKQEAgLTUzOSw4ICs1NDEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLm1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiB9CiAK
QEAgLTU1Nyw4ICs1NjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VB
cmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6
Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZ0Jv
ZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VBcmciKTsKIH0KIApAQCAtNTc1LDggKzU3OSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keT4oKnN0
YXRlLCAic2VxdWVuY2VPZk51bGxhYmxlc0FyZyIpOwogfQogCkBAIC01OTMsOCArNTk4LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVNlcXVlbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+
OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZO
dWxsYWJsZXNBcmdCb2R5Pigqc3RhdGUsICJudWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmci
KTsKIH0KIApAQCAtNjExLDggKzYxNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVT
ZXF1ZW5jZU9mVW5pb25zQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNl
T2ZVbmlvbnNBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQm9keT4oKnN0YXRlLCAibnVsbGFibGVTZXF1
ZW5jZU9mVW5pb25zQXJnIik7CiB9CiAKQEAgLTYyOSw4ICs2MzYsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9u
QXJnQm9keShKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblVuaW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+
OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHk+KCpzdGF0
ZSwgInVuaW9uQXJnIik7CiB9CiAKQEAgLTY0OSw4ICs2NTcsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRo
Q2xhbXBCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFt
cEJvZHk+KCpzdGF0ZSwgImZ1bmNXaXRoQ2xhbXAiKTsKIH0KIApAQCAtNjY3LDggKzY3Niw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmQm9keT4oKnN0YXRl
LCAiZnVuY1dpdGhDbGFtcEluVHlwZWRlZiIpOwogfQogCkBAIC02ODAsOCArNjkwLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25Qb2ludEZ1bmN0aW9uQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwucG9pbnRGdW5jdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInBvaW50RnVuY3Rp
b24iKTsKIH0KIApAQCAtNjk3LDggKzcwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0
cmluZ1NlcXVlbmNlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmlu
Z1NlcXVlbmNlRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uIik7
CiB9CiAKQEAgLTcxNCw4ICs3MjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uMihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVl
bmNlRnVuY3Rpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9u
MihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uMkJvZHk+KCpzdGF0ZSwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yIik7
CiB9CiAKQEAgLTczMSw4ICs3NDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuYwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmNhbGxXaXRoU2VxdWVu
Y2VUaGF0UmVxdWlyZXNJbmNsdWRlKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25D
YWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
Q2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGVCb2R5Pigqc3RhdGUsICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIp
OwogfQogCkBAIC03NDUsOCArNzU5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBl
ZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNl
cHRpb25Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY191dGlsaXR5LmgKaW5kZXggZmE0ODczMTU2ZGFmZjYyYjg1ODU0NTU5YmRhOTQ1
MWZjMzk2ZGNjMy4uOWVkNzI1YjZmMjliMzM5YWViMDQyZjYxMTc5N2QwNzRiNTg2MjRhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKQEAgLTM1LDggKzM1LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIElk
ZW50aWZpZXI7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRl
eCA4NDQwNjQ3NTJmOTNmZmIxNDdjYjI5MDRkYzZiNjk0N2E0ZjljMWU1Li43N2EyNDFjZTY4ZjEy
ZGJjZDk4Y2VhZTI2MTE3NDg1ZTc4ZTI1MWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCkBAIC0yNDQsMTQgKzI0NCwxNCBAQCBib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0czxPYmpDUnVudGltZU9iamVjdD4odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBA
IC0yNTksNyArMjU5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgT2JqY0luc3RhbmNlKiBv
YmpjSW5zdGFuY2UgPSBydW50aW1lT2JqZWN0LT5nZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpOwog
CiAgICAgaWYgKCFvYmpjSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
UnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAgICAgCiAgICAgb2JqY0luc3RhbmNlLT5i
ZWdpbigpOwogCkBAIC0yNjgsOSArMjY4LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmlu
ZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xh
c3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0
Q2xhc3MoKSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01l
dGhvZChtYWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3Rvcihp
bnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOwotICAg
ICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxi
YWNrT2JqZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOworICAgICAg
ICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAg
ICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKLSAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZv
a2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKKyAgICAgICAgcmVzdWx0
ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGNhbGxGcmFtZSwgZmFsbGJhY2tNZXRo
b2QuZ2V0KCkpOwogICAgIH0KICAgICAgICAgICAgIAogICAgIG9iamNJbnN0YW5jZS0+ZW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCBmZDZlNWVkNzFm
MmUwYmNhZjM1NGNkNjJjZTAyNzE5YTUzYWMxNzc4Li44N2YxNmIwZTgwYjY3MDA1ZTE3Y2NjZTE1
ZDY5M2NhZmRkNjBjZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEJpbmRpbmdzOwogCiBXRUJDT1JF
X0VYUE9SVCBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUnVudGlt
ZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU1ldGhvZCkgfTsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiBSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNZXRob2QqIG1l
dGhvZCkKICAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRob2QiLgpA
QCAtODUsMzUgKzg1LDM1IEBAIElzb1N1YnNwYWNlKiBSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZv
ckltcGwoVk0mIHZtKQogICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+cnVudGltZU1ldGhvZFNwYWNlKCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJ1bnRpbWVN
ZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5qc0NhbGxl
ZSgpKTsKKyAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0
aG9kKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRob2Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2U7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+KHZtKSkg
ewogICAgICAgICBSdW50aW1lT2JqZWN0KiBydW50aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVu
dGltZU9iamVjdCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgICAgICBpbnN0YW5jZSA9IHJ1
bnRpbWVPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKTsKICAgICAgICAgaWYgKCFpbnN0YW5j
ZSkgCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRo
cm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGNh
bGxGcmFtZSwgc2NvcGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsaW5nIGEgcnVu
dGltZSBvYmplY3Qgb2YgYSBwbHVnaW4gZWxlbWVudD8KICAgICAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0czxKU0hUTUxFbGVtZW50Pih2bSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdp
bkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndy
YXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICB9CiAgICAgQVNTRVJUKGluc3RhbmNlKTsK
IAogICAgIGluc3RhbmNlLT5iZWdpbigpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2Ut
Pmludm9rZU1ldGhvZChleGVjLCBtZXRob2QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFu
Y2UtPmludm9rZU1ldGhvZChjYWxsRnJhbWUsIG1ldGhvZCk7CiAgICAgaW5zdGFuY2UtPmVuZCgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IDg3M2JhMzQ2YmM0ZmEzZDI3N2FkNTA0ZjI3
NzMzMGUyOTYzNDJlYzMuLmUyMjc3M2NhMjU5NzM4NmNmMGVhZGY3ODI3YzhjN2QzM2M0YTViMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjIyLDkgKzIy
Miw5IEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1
bnRpbWVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4ZWMtPmpzQ2FsbGVlKCktPmluaGVyaXRzPFJ1bnRpbWVP
YmplY3Q+KGV4ZWMtPnZtKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgZXhl
Yy0+anNDYWxsZWUoKS0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgp
KSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgaW5z
dGFuY2UtPmJlZ2luKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlRGVm
YXVsdE1ldGhvZChleGVjKTsKQEAgLTI0NiwxNCArMjQ2LDE0IEBAIENhbGxUeXBlIFJ1bnRpbWVP
YmplY3Q6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAg
IHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZUNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgQVNTRVJUKGNvbnN0
cnVjdG9yLT5pbmhlcml0czxSdW50aW1lT2JqZWN0PihleGVjLT52bSgpKSk7Ci0gICAgUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oZXhlYy0+anND
YWxsZWUoKSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVj
dG9yID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2Jq
ZWN0LCBjb25zdHJ1Y3Rvci0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52
bSgpKSk7CisgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1l
T2JqZWN0Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsK
ICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlQ29uc3RydWN0KGV4ZWMsIGFyZ3MpOworICAg
IEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2Ut
Pmludm9rZUNvbnN0cnVjdChjYWxsRnJhbWUsIGFyZ3MpOwogICAgIGluc3RhbmNlLT5lbmQoKTsK
ICAgICAKICAgICBBU1NFUlQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9TdWJ0bGVDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8u
aAppbmRleCBmNTE4YzEyNmE4MDcyM2Q2NTJkNTg0NzE4ZjEyYWY2ZDgyZTQ0YjZlLi4zNWIxN2Fl
ZjU5NjlkYTgzZjFhZjczZGI5NDMzMTZjOTU1MWNlZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1
YnRsZUNyeXB0by5oCkBAIC0zOSw3ICszOSw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFy
cmF5QnVmZmVyVmlldzsKIGNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDY3NmZiYTg1MzJmNjBh
OGM1Y2Q0Yjc1MjQwY2ViOWJkOTM2YzhiM2QuLmY1MjJkZjRiYjEyNjcyMTBlODZmODUxYjZlYjY2
MzYxNmU4YTQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0zOCw3ICszOCw4IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgKaW5kZXggNTg5Yzg0MWNjM2U4OGNlNzllNzQyZTdiMmJiMzRh
ZTllNjlmMDhhYi4uMWY3ODI0MmM1OTYyZDg1MWIxYzBhOTI4YWQ2MzFjZDhiZTQyOGFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKQEAg
LTMyLDcgKzMyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDEwZTM0ZDI1NTMyOWUzM2RkMDUzOTU2NzBiZGE5ZTBjZTNlZDI5
ODYuLjZiZjYxOWNkMTE2MTEyM2YzZmU1OTAzODQ2ZDczMzFmOTRkNjU0ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC04MSw4ICs4MSw5IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBJbnB1dEN1cnNvcjsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCAyNjU2YmI0MzRjZWU2NzE3NWZkNmIxNWEwYmI5MmM4
MzFhMDhjY2E3Li4wYjVmM2Q4N2MwMTU4NDU1NjJiYzkyOWM3Y2Y4ZjhlYjc0ZGY0OTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtMzYsOSArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjBlNjU0YjczMGI5ZGUyYTY1MGNj
ZTUyNDI4NDI2ZTA2YzljMTIyZS4uZWZiMDE2ZjU1YzUzMDRmZGE2YjQ1ZGE0YzE3MGM2MWRhYjNh
MDhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBF
eGVjU3RhdGU7CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBWTTsKIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdHJvbmc7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCmluZGV4IGQxZjRlMjAyNTE2YzhhOTNjOGUzM2YyNjFiNmFlNzAxM2YzODQzNmEuLjQxNDZl
ZTdlNjIzMzE0OGI1MGJhMDRlNjc0MDU0YTY0MWZkZTc2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oCmlu
ZGV4IDMxMTU0ODhlYzA2ZmUzNTg0MTU2MGNhMjFkNDI5MjI0YTg4Njg3Y2UuLjVlZjdlYzQxMDBl
NjdiN2Q2YWFlZWNkYWFjNmVkOTE1MjEzM2U3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xBbnkuaApAQCAtMzMsOCArMzMsOSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Vp
bnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggODA0ZjJiY2IyODk2ZmM5MDFjMzU1
NGFkNjgzNGFjMWJhYWE0NTNjMC4uMDM0ZTFlZjQ3MTU4MWY0NzFiZmY4MjhiNWQxMzZjZjczOTYx
MmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaApAQCAtNDYsOCArNDYsOSBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiB9CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggMGMxMWQyODQzYzU1M2I5MDIy
MzY2YmJmZmJlY2Y4NDkwN2YyMzYyYS4uMTQ4N2IxMzFlNmI5ZjY4MGE4YjIyY2RjZjNiOTRmMTU0
NTM3NWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC0zNiw3ICszNiw4IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCA4OGUzMjdhZmY2OGQ3ZDJkNzM1NWMwYTAwMTBiMzQ4Y2FkMWM3YzUzLi5iNDgyMjRlYmYy
ZDY4NjBjNDNjOTU5YTUxYjZlNWM0OGMzZmMzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTQyLDEwICs0MiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmpl
Y3Q7CiBjbGFzcyBKU1ZhbHVlOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCmluZGV4IGZmYmY2MmIyMDFmZTMxMjg1
MzgyMTc4YzM0OWQwYWIyYjc0ZTU1NzAuLmQ1NmE2ZjVkMTE5ODBjYjRmYjI4N2ZhMmM3NWIxNmQy
ZDUzOTUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKQEAgLTM3
LDcgKzM3LDggQEAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiB9CiAKIG5hbWVzcGFjZSBKU0Mgewot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaAppbmRleCA5M2ZlZTFlYmI0YTE5OTEyNmFiZjg3ODgwMzI2MzkyOTg2ZWVmMzBk
Li5mNTViZjZhMWM5MGFlOGE4YTc3YjFhZThlOTk2Mzk0NDJkZTU4YzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDZiNjQyZjE5MDc3N2MzMGNkMTI4MjRmZGZiNGE1ODgz
NDQ4ODg0YjguLmRjMDJiZjRmMzA2ZWFmMjhmOWY0YTRmMWNhYjMwOTU5YjY2ZDM0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0z
Nyw3ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAppbmRleCA3ZjdmNjQ0ZTQ3MTdkOTg5ZTEwZTU0
ZGFlNWUxMWU1YzAxZGZlZjI1Li4yZGVkZmE5NzI1Njg1MjA1ZGM1Yjg5YWEzNmU2NTU2OGZhYjI0
OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC0z
MSw3ICszMSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IDVmYWJkYWM2NDY3OGI2OWNiMTEwNDFlNmY3
MGY5ZjY4MmYzOWUwOTAuLmRhZjFkOTMxYmFmMTY0MWRiZWNlYjM4YzIzMTE3NDhiMmJhN2ZjZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKQEAgLTM2LDkgKzM2LDEw
IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBpZDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
SlNDIHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIHVzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmgKaW5kZXggZWUzMWM3Y2VjNWVmZTlmZmZiYTc0MGNjMDVjM2I1ODBmNzBjZjkyNC4u
OGUzYmZhODdlYzU4ZjA2OGEzMjk4NDA5YWE1NmIxNGY5YzAwNjBkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmluZGV4IDM4NDZkMjcxYjY4YmQ2OTgyMDAw
YjUyYjlhYmFiOTc2NzY3NjE0NjkuLmNiN2RmNjc0YWUwODIwNWMxOTE5ZTQ2M2Q2ZmMzYTdlNGJj
MGVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5o
CkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCmlu
ZGV4IDBlZTgxNzZlYzU5OWY3OTQxZWY3Y2VjYjA5MTRlZGVlYTg1N2UzMTEuLjkzYThlYWRkNzAz
MDBjZWM4YzU4YmNmMmJhYzExZDk0N2IzMjhjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAtMzUsOCAr
MzUsOSBAQAogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKaW5kZXggNjMxZGFlOTkw
MWFjOWE0M2QyMDg2OWVhNWQ4MWZjMzM0NThjOGU5MC4uMWJiNzEzZDcwOWExZDY4MjhkYWE3MjQ5
Zjk0YTdmYmNlYmZkMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldENvbnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
Q29uc29sZUNsaWVudC5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5jcHAKaW5kZXggZTA3NDNlNGExYjBlNjE4OTRmNTk3MDE5OWNlMjNhNTVhMGQ0
Zjg4My4uNmJmMDg1ZWY0YTM5YjVjZGNlZGJlNmJmYjJkY2VkMTEwYzM1NTA0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEpTTlBNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gSlNOUE1ldGhvZDo6c19p
bmZvID0geyAiTlBNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTlBNZXRob2QpIH07CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIEpTTlBNZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5QSWRlbnRpZmllciBucElkZW50aWZp
ZXIpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJl
LCBjYWxsTWV0aG9kLCBudWxscHRyKQpAQCAtNjYsMzEgKzY2LDMxIEBAIElzb1N1YnNwYWNlKiBK
U05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQogICAgIHJldHVybiAmcGVyVk0uZ2V0
KCkuZm9yVk0odm0pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNOUE1ldGhvZCoganNOUE1ldGhvZCA9IGpzQ2FzdDxKU05QTWV0aG9kKj4o
ZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNOUE1ldGhvZCoganNOUE1ldGhvZCA9IGpzQ2FzdDxK
U05QTWV0aG9kKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgY2FsbGluZyBhIG1ldGhv
ZCBvbiB0aGUgcGx1Zy1pbiBzY3JpcHQgb2JqZWN0LgogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJp
dHM8SlNIVE1MRWxlbWVudD4odm0pKSB7CiAgICAgICAgIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogCiAgICAgICAg
IC8vIFRyeSB0byBnZXQgdGhlIHNjcmlwdCBvYmplY3QgZnJvbSB0aGUgZWxlbWVudAotICAgICAg
ICBpZiAoSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBl
bGVtZW50KSkKKyAgICAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3Jp
cHRPYmplY3QoY2FsbEZyYW1lLCBlbGVtZW50KSkKICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IHNj
cmlwdE9iamVjdDsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTTlBPYmpl
Y3Q+KHZtKSkgewogICAgICAgICBKU05QT2JqZWN0KiBqc05QT2JqZWN0ID0ganNDYXN0PEpTTlBP
YmplY3QqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKIAotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTlBPYmplY3QtPmNhbGxNZXRob2QoZXhlYywganNOUE1ldGhvZC0+bnBJZGVudGlm
aWVyKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05QT2JqZWN0LT5jYWxs
TWV0aG9kKGNhbGxGcmFtZSwganNOUE1ldGhvZC0+bnBJZGVudGlmaWVyKCkpKTsKICAgICB9CiAK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBlNTcxNTFjMDg0MGZkMThmNTlkMTlhYzBlMDkzMGIy
YzllYTAzZWNmLi4wMmEzNzBhOWVmNWRmNTYzODE1ZTkzNmQ3N2ZkMmI3MTdiODE1ZTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcApAQCAtMjM5LDEyICsyMzksMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0Ojpj
YWxsQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgQVNTRVJU
KG9iamVjdC0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZXhlYy0+dm0oKSkpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9i
YWxPYmplY3QsIG9iamVjdC0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgp
KSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2Jq
ZWN0KS0+Y2FsbE9iamVjdChleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nh
c3Q8SlNOUE9iamVjdCo+KG9iamVjdCktPmNhbGxPYmplY3QoY2FsbEZyYW1lKSk7CiB9CiAKIEpT
Qzo6Q2FsbFR5cGUgSlNOUE9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqIGNlbGwsIEpT
Qzo6Q2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtMjU4LDEyICsyNTgsMTIgQEAgSlNDOjpDYWxsVHlw
ZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RX
aXRoQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+anNDYWxsZWUo
KTsKLSAgICBBU1NFUlQoY29uc3RydWN0b3ItPmluaGVyaXRzPEpTTlBPYmplY3Q+KGV4ZWMtPnZt
KCkpKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCk7
CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLT5pbmhlcml0czxK
U05QT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNDYXN0PEpTTlBPYmplY3QqPihjb25zdHJ1Y3RvciktPmNhbGxDb25zdHJ1Y3Rvcihl
eGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVjdCo+KGNv
bnN0cnVjdG9yKS0+Y2FsbENvbnN0cnVjdG9yKGNhbGxGcmFtZSkpOwogfQogCiBDb25zdHJ1Y3RU
eXBlIEpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAppbmRleCA2OWNh
NTExODE0MzlkZmU5YzFkMTY1NzNlNTg2OTAxM2FmN2EwY2FlLi42NmYxZmM0MDliMTY1YTMxNDE5
YjY1OTA1M2I0NTI3MjFiODg5MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaApAQCAt
MzgsMTEgKzM4LDEyIEBAIHN0cnVjdCBOUE9iamVjdDsKIHR5cGVkZWYgc3RydWN0IF9OUFZhcmlh
bnQgTlBWYXJpYW50OwogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7Cisg
ICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIFZNOwogICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CisgICAgdXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAppbmRl
eCA4MzU3ZDkxY2E1YzVjMjRlN2Q2NDczNmNlZWVlM2E1YjBkNjY1YWU1Li43OWMyYTY5MThlYjRj
OGE3MDk4YTVkNTliYjAwNWM1NjA1ODI4YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC0zNiwxMSArMzYsMTIgQEAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworICAgIGNsYXNz
IENhbGxGcmFtZTsKICAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKLSAgICBjbGFzcyBFeGVj
U3RhdGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgY2xhc3MgQXJnTGlzdDsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IEBjbGFzcyBXZWJTY3JpcHRDYWxsRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380207</attachid>
            <date>2019-10-04 02:56:36 -0700</date>
            <delta_ts>2019-10-04 13:01:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-202569-20191004025635.patch</filename>
            <type>text/plain</type>
            <size>1300131</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YWNkZDAwZWE0OTRmMGQ5M2NkZTM5YzYxMDk1OTUzYWM1OTE4ZGIyLi43Y2ViZmRjNzkxNGQwODVm
Yjk0ZDA1YzQ0NWJhODk0NGZmNzYzM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NzcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAg
ICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvQVBJQ2FzdC5oOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9i
YWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNCYXNlSW50ZXJu
YWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUu
aDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRy
eS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
QXR0cmlidXRlRXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVy
YXRvckVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldElu
dGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3Bl
RGVzY3JpcHRpb25zKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU291cmNlSUQpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVl
ZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxs
ZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxl
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxv
Y2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVC
bG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjpyZWdpc3RlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZU9yRW50cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnJldHVyblBDIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNSZXR1cm5QQyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJSZXR1cm5QQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFic3RyYWN0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnRvcE9mRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENh
bGxlckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJl
c3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVj
a2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3Vt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnZXRBcmd1bWVudFVuc2Fm
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldFRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4
ZWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpz
ZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0ZXJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9yUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgorICAg
ICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5oOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAg
ICAgICAqIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6
OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnRTdGRPdXQpOgorICAgICAgICAoZnVuY3Rpb25Qcmlu
dFN0ZEVycik6CisgICAgICAgIChmdW5jdGlvbkRlYnVnKToKKyAgICAgICAgKGZ1bmN0aW9uRGVz
Y3JpYmUpOgorICAgICAgICAoZnVuY3Rpb25EZXNjcmliZUFycmF5KToKKyAgICAgICAgKGZ1bmN0
aW9uU2xlZXBTZWNvbmRzKToKKyAgICAgICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAo
ZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcFNpemUpOgorICAgICAgICAo
ZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspOgorICAgICAgICAoZnVuY3Rpb25BZGRyZXNzT2YpOgor
ICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6CisgICAgICAg
IChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAg
ICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdG
bGFncyk6CisgICAgICAgIChmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyk6CisgICAgICAgIChm
dW5jdGlvbkdldFJhbmRvbVNlZWQpOgorICAgICAgICAoZnVuY3Rpb25TZXRSYW5kb21TZWVkKToK
KyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNl
T3JpZ2luKToKKyAgICAgICAgKGZ1bmN0aW9uUmVhZGxpbmUpOgorICAgICAgICAoZnVuY3Rpb25Q
cmVjaXNlVGltZSk6CisgICAgICAgIChmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pOgorICAg
ICAgICAoZnVuY3Rpb25Ob0RGRyk6CisgICAgICAgIChmdW5jdGlvbk5vRlRMKToKKyAgICAgICAg
KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyk6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCk6CisgICAgICAgIChmdW5jdGlvbkRv
bGxhckNyZWF0ZVJlYWxtKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6Cisg
ICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOgorICAgICAgICAoZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
cG9ydCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U2xlZXApOgorICAgICAgICAoZnVu
Y3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50
R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKToKKyAgICAg
ICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3cpOgorICAgICAgICAoZnVuY3Rpb25X
YWl0Rm9yUmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcENhcGFjaXR5KToKKyAgICAgICAg
KGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKToKKyAgICAgICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKGZ1bmN0aW9uTWFsbG9jSW5BTG9vcCk6CisgICAgICAgIChm
dW5jdGlvblRvdGFsQ29tcGlsZVRpbWUpOgorICAgICAgICAoZnVuY3Rpb25KU0NPcHRpb25zKToK
KyAgICAgICAgKGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KToKKyAgICAgICAgKGZ1
bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3
Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1bmN0aW9uUXVpdCk6CisgICAgICAgIChmdW5jdGlvbkZh
bHNlKToKKyAgICAgICAgKGZ1bmN0aW9uVW5kZWZpbmVkMSk6CisgICAgICAgIChmdW5jdGlvblVu
ZGVmaW5lZDIpOgorICAgICAgICAoZnVuY3Rpb25Jc0ludDMyKToKKyAgICAgICAgKGZ1bmN0aW9u
SXNQdXJlTmFOKToKKyAgICAgICAgKGZ1bmN0aW9uSWRlbnRpdHkpOgorICAgICAgICAoZnVuY3Rp
b25FZmZlY3RmdWw0Mik6CisgICAgICAgIChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAg
ICAgIChmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAoZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Mp
OgorICAgICAgICAoZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMpOgorICAgICAgICAoZnVuY3Rpb25J
czMyQml0UGxhdGZvcm0pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblBs
YXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAgICAgKGZ1bmN0aW9uR2VuZXJh
dGVIZWFwU25hcHNob3QpOgorICAgICAgICAoZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZv
ckdDRGVidWdnaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6
CisgICAgICAgIChmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChmdW5jdGlv
blN0YXJ0U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyk6CisgICAgICAgIChmdW5jdGlvbk1heEFyZ3VtZW50cyk6CisgICAgICAg
IChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KToKKyAgICAgICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFz
c2VkKToKKyAgICAgICAgKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKToKKyAgICAgICAg
KGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAocnVuV2l0
aE9wdGlvbnMpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENh
bGwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEFy
cmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAg
IChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNT
cGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OmF0b21pY3NGdW5jQWRkKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNB
bmQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0NvbXBhcmVFeGNoYW5nZSk6CisgICAgICAg
IChKU0M6OmF0b21pY3NGdW5jRXhjaGFuZ2UpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0lz
TG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0xvYWQpOgorICAgICAgICAoSlND
OjphdG9taWNzRnVuY09yKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNTdG9yZSk6CisgICAg
ICAgIChKU0M6OmF0b21pY3NGdW5jU3ViKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWl0
KToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWtlKToKKyAgICAgICAgKEpTQzo6YXRvbWlj
c0Z1bmNYb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsQmlnSW50Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpiaWdJbnRD
b25zdHJ1Y3RvckZ1bmNBc1VpbnROKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29uc3RydWN0b3JG
dW5jQXNJbnROKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgIChKU0M6OmJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKToKKyAg
ICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoQm9vbGVh
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlh
dGVCb29sZWFuKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29s
ZWFuUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlQ2xpZW50Lmg6CisgICAgICAgICog
cnVudGltZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc29sZUxvZ1dpdGhM
ZXZlbCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNEZWJ1Zyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNFcnJvcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1
bmNMb2cpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jSW5mbyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNXYXJuKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVu
Y0NsZWFyKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Rpcik6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNEaXJYTUwpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGFibGUpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVHJhY2UpOgorICAgICAg
ICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVBy
b3RvRnVuY0NvdW50KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQp
OgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jUHJvZmlsZSk6CisgICAgICAgIChKU0M6
OmNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1Rha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGlt
ZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY1RpbWVFbmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGltZVN0YW1wKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY0dyb3VwRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1JlY29yZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQpOgor
ICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdCk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbERhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUGFyc2UpOgorICAgICAgICAo
SlNDOjpkYXRlTm93SW1wbCk6CisgICAgICAgIChKU0M6OmRhdGVOb3cpOgorICAgICAgICAoSlND
OjpkYXRlVVRDKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9U
aW1lU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAgICAg
KEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51dGVz
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vj
b25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRNaWxsaVNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTWlsbGlz
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNTZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0SG91cnMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jU2V0RGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldE1vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY1NldFVUQ01vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldEZ1bGxZ
ZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0pTT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjYWxsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkVycm9yQ29u
c3RydWN0b3I6OnB1dCk6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRp
b25GdXp6Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbEZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Q
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Omluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAg
IChKU0M6OkludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0SW50bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRvcik6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yRnVuY0NvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVH
ZXR0ZXJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6
CisgICAgICAgIChKU0M6OmNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxO
dW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JG
dW5jU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjppbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJ
bnRsUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFBsdXJhbFJ1bGVzKToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KToKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdN
b2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlCdWZm
ZXIpOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlckZ1bmNJc1ZpZXcpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OnNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aCk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3Vu
ZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OmlzQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc0luc3RhbmNlQm91bmRG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6
CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAoSlNDOjpkYXRhVmll
d1Byb3RvR2V0dGVyQnVmZmVyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCk6CisgICAgICAgIChKU0M6
OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3Rv
RnVuY0dldEludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KToKKyAgICAgICAgKEpT
Qzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEZs
b2F0NjQpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDgpOgorICAgICAg
ICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZp
ZXdQcm90b0Z1bmNTZXRJbnQzMik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNik6CisgICAg
ICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1
bmNTZXRGbG9hdDY0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmll
dyk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
bGljZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3Vi
YXJyYXlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6YXNzZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OmVu
cXVldWVKb2IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQYXJzZUludCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQYXJzZUZsb2F0KToKKyAgICAg
ICAgKEpTQzo6Z2xvYmFsRnVuY0RlY29kZVVSSSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNE
ZWNvZGVVUklDb21wb25lbnQpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRW5jb2RlVVJJKToK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudCk6CisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNFc2NhcGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVW5lc2NhcGUp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jQnVpbHRpbkxvZyk6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNCdWlsdGluRGVzY3JpYmUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAg
ICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5j
RGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSk6
CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVy
UmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3Rk
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU09OT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKEpT
Qzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJheVZpZXcp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAgICAgIChK
U0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xh
c3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY1RvU3RyaW5nVGFnKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbE1hcCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAg
IChKU0M6Om1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCk6CisgICAgICAgIChKU0M6Om1hcFBy
aXZhdGVGdW5jTWFwQnVja2V0TmV4dCk6CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFw
QnVja2V0S2V5KToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TWFwKToKKyAgICAgICAgKEpTQzo6
bWFwUHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNEZWxldGUpOgor
ICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNIYXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQWJzKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0FDb3MpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbik6CisgICAgICAgIChKU0M6
Om1hdGhQcm90b0Z1bmNBVGFuKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4yKToK
KyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0NlaWwpOgorICAgICAgICAoSlNDOjptYXRoUHJv
dG9GdW5jQ2x6MzIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ29zKToKKyAgICAgICAg
KEpTQzo6bWF0aFByb3RvRnVuY0V4cCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNGbG9v
cik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNIeXBvdCk6CisgICAgICAgIChKU0M6Om1h
dGhQcm90b0Z1bmNMb2cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4KToKKyAgICAg
ICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNQ
b3cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUmFuZG9tKToKKyAgICAgICAgKEpTQzo6
bWF0aFByb3RvRnVuY1JvdW5kKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NpZ24pOgor
ICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU2luKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY1NxcnQpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuKToKKyAgICAgICAgKEpT
Qzo6bWF0aFByb3RvRnVuY0lNdWwpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQUNvc2gp
OgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbmgpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jQVRhbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ2JydCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDb3NoKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0V4cG0xKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Zyb3VuZCk6CisgICAgICAgIChK
U0M6Om1hdGhQcm90b0Z1bmNMb2cxcCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cx
MCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cyKToKKyAgICAgICAgKEpTQzo6bWF0
aFByb3RvRnVuY1NpbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuaCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUcnVuYyk6CisgICAgICAgICogcnVudGltZS9NYXRoT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9NaWNyb3Rhc2suaDoKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok5hdGl2ZUZ1bmN0aW9uOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFnZ2VkTmF0
aXZlRnVuY3Rpb246Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNh
bGxSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1
cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OmNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2Fm
ZUludGVnZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCk6CisgICAgICAgIChKU0M6Om51
bWJlclByb3RvRnVuY1RvRml4ZWQpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1By
ZWNpc2lvbik6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JBc3NpZ24pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVu
c2libGUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJv
cGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAg
ICAgIChKU0M6OnByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0UHJveHlPYmplY3QpOgorICAgICAgICAoSlNDOjpjYWxsUHJveHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3Jt
UHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
UmV2b2tlKToKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpyZWZsZWN0T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0SXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktl
eXMpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMpOgorICAg
ICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dFNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaCk6
CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKToKKyAgICAgICAgKEpT
Qzo6cmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yUmlnaHRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0
b3JJbnB1dCk6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToK
KyAgICAgICAgKEpTQzo6ZXNTcGVjUmVnRXhwQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbFJlZ0V4cENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90
b0Z1bmNUZXN0RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0Z1bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVyTXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJEb3RB
bGwpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclN0aWNreSk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3Rv
R2V0dGVyRmxhZ3MpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclNvdXJjZSk6Cisg
ICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QpOgorICAgICAgICAoSlNDOjpy
ZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAoSlND
OjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRl
RnVuY1NldEJ1Y2tldE5leHQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEtleSk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jQWRkKToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jQ2xlYXIp
OgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNEZWxldGUpOgorICAgICAgICAoSlNDOjpzZXRQ
cm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJv
bUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNh
bGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3Vic3RySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cik6CisgICAgICAgIChKU0M6OmJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1RvTG93ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9VcHBl
ckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6dG9Mb2NhbGVDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
VG9Mb2NhbGVMb3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvY2Fs
ZVVwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RyaW0pOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNUcmltRW5kKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nSW5jbHVkZXNJbXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5j
bHVkZXMpOgorICAgICAgICAoSlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjYWxsU3ltYm9sKToKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JGb3IpOgor
ICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvcktleUZvcik6CisgICAgICAgICogcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0dldHRlckRl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Ro
cm93U2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAg
ICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtSZWYpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
ZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRXZWFrUmVmKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1Jl
ZkRlcmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNhbGxXZWFrU2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6
CisgICAgICAgICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0V2Vha1NldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxldGUpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldEFkZCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OkRPTUpJVEdldHRlckNvbXBsZXg6OmZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6RE9NSklURnVuY3Rpb25PYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVD
aGVjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVz
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpOgor
ICAgICAgICAoSlNDOjpmdW5jdGlvbkNyYXNoKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25CcmVh
a3BvaW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25ERkdUcnVlKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25GVExUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVNZmVuY2UpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNwdVJkdHNjKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVD
cHVpZCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1UGF1c2UpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkNwdUNsZmx1c2gpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxMaW50VHJ1ZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uSklUVHJ1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTm9J
bmxpbmUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdDKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25FZGVuR0MpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
b2RlQmxvY2tGb3JGcmFtZSk6CisgICAgICAgIChKU0M6OmNvZGVCbG9ja0Zyb21BcmcpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
RHVtcFNvdXJjZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6ZG9QcmludCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGF0YUxvZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJpbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1
bXBDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdGFjayk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uRHVtcFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVt
cENlbGwpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblZhbHVl
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRQSUQpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkhhdmVBQmFkVGltZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVQcm94eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUnVu
dGltZUFycmF5KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVOdWxsUm9wZVN0cmluZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyQ29tcGxleE9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
RnVuY3Rpb25PYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRl
ckJhc2VKU09iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWlu
Z1BhcnNlcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVCdWlsdGluKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25HZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVJvb3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdldEVsZW1lbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVNpbXBsZU9i
amVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblNldEhpZGRlblZhbHVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25TaGFk
b3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0R2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3cpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUmV0dXJu
VHlwZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRW5hYmxl
RGVidWdnZXJNb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkRpc2FibGVEZWJ1
Z2dlck1vZGVXaGVuSWRsZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdo
ZW5JZGxlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxvYWRHZXR0
ZXJGcm9tR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21U
ZXN0R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0
ZXJmbGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uVG90YWxHQ1RpbWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblBhcnNlQ291bnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbklzV2FzbVN1
cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRW1iZWRkZXIuaDoKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVG
dW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2Vt
Ymx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlNZW1vcnkpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVs
ZUN1c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRz
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dl
YkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKEpT
Qzo6Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAg
IChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24pOgorICAgICAgICAqIHlhcnIvWWFyckVycm9yQ29kZS5oOgor
CiAyMDE5LTEwLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggdGVzdG1hc20gZmFpbHVyZSBvbiBBU2FuIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjRkNjIw
Mzg2Nzk4ZmM5YzU0MWUzZTVjYjFmOTg1OTAwODRjY2NlLi5jYjc5Mjg2YjFlMjU0NTk4OGEwOGVh
OWYxMzljMzU0NDIxMTYzZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMwIEBACisyMDE5LTEw
LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
Q2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFRocm93VHlwZUVycm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6
OmNhbGxUaHJvd1R5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlu
cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVy
YXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUGx1Z2luKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYkFuaW1hdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RKU1dlYkFuaW1hdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXR1
cE1vZHVsZVNjcmlwdEhhbmRsZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZl
ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpz
dHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0ZUxlZ2Fj
eUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKToKKyAgICAgICAgKEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uR2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
RW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZh
bHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ0VSZWFjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlh
bnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25S
ZWd1bGFyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uU3RhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVu
dGFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVk
U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0
aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25F
bnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
ajIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsbEpTVGVzdE9iaik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNy
ZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
WFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJp
bmdTcGVjaWFsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
VVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb25SZXR1cm5pbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhB
cmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1
YmxpY0FuZFByaXZhdGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVW
b2lkRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3Vt
ZW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZh
dWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
QW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRl
ZmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVySXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qx
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRp
b25hbFVuaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25DbGFzc01ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Myk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91Ymxl
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNOb2RlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkFueSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJu
c093blByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxP
dmVybG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNp
bmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZl
clNvdXJjZVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMyk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzNCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzNSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTEpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVGdW5jdGlvbk5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pT
T04pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1By
b3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5j
ZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U2VxdWVuY2VPZk51bGxhYmxlc0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVl
bmNlT2ZVbmlvbnNBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblVuaW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJl
c0luY2x1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0aG9kKToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
Y2FsbFJ1bnRpbWVPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbFJ1bnRpbWVD
b25zdHJ1Y3Rvcik6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdl
UG9ydC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQW55Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmg6CisgICAg
ICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDoKKwogMjAxOS0xMC0wMyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgIFtpT1NdIFdlYkNvbnRlbnQgcHJv
Y2VzcyBjYW4gYmUgaW50ZXJydXB0ZWQgZHVyaW5nIHN1c3BlbnNpb247IGxvc2VzICJOb3cgUGxh
eWluZyIgc3RhdHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExOTY4ZTVkMWE0Zjc4MWE1ODM4MWMzNjQzYWYyMTll
YTM0YWUzNjEuLmU5MDYyOWVhM2I2NTMyYWQ5NWQwOWZmY2MyZjk4MDBlODM0YTI5MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5j
dGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhbGxNZXRob2QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y2FsbE5QSlNPYmplY3QpOgorICAgICAgICAoV2ViS2l0Ojpjb25zdHJ1Y3RXaXRo
Q29uc3RydWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaDoKKwogMjAxOS0xMC0wMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU29ja2V0IFJXSSBjbGllbnQgc2hvdWxkIGFjcXVp
cmUgYmFja2VuZCBjb21tYW5kcyBmcm9tIHNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGJjZTYzNDYzOWQ3ODk3Mjk0ODE2NTJjMDgzN2VhNTA4MTcyMTQ2ODEuLjQ0NjlkYzkz
ODI0MTZkMTQ2M2Y5YjY1OTBjOGM2MzhhMTcwMWE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENoYW5nZSBzaWduYXR1cmUgb2YgSG9zdEZ1
bmN0aW9uIHRvIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIuaDoKKwogMjAxOS0xMC0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBQcm92aWRlIFRBUEkgdGhlIGZ1bGwgdGFyZ2V0IHRyaXBsZSBpbnN0ZWFk
IG9mIGp1c3QgdGhlIGFyY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxs
YmFja0Z1bmN0aW9uLmgKaW5kZXggZTUyODNiNWI0MmNkM2M4ZGFhNjNmMjlmYzJmZTk4ODYxM2Q2
YzhkZS4uZWE3ODQ4ZGVlMWFiNjUxOGVhN2Q3YzU1ZWYxZGUzYjExZTNiNTgxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTM2LDcy
ICszNiw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEFQSUNhbGxiYWNrRnVuY3Rpb24g
ewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhlY1N0YXRlKik7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7Ci0gICAgSlNPYmplY3RSZWYgZnVuY3Rpb25S
ZWYgPSB0b1JlZihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVm
ID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihjYWxs
RnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpT
T2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBOb3RTdHJp
Y3RNb2RlKSkpOwogCi0gICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8SlNWYWx1ZVJl
ZiwgMTY+IGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShh
cmd1bWVudENvdW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkr
KykKLSAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5k
KHRvUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogCiAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgIEpTVmFsdWVSZWYgcmVzdWx0OwogICAg
IHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAg
ICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsKICAgICAg
ICAgcmVzdWx0ID0ganNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2FsbGJh
Y2soKShleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJn
dW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxGcmFt
ZSwgZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUu
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgcmVzdWx0
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGNhbGxGcmFtZSwgcmVzdWx0KSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgSlNDb250ZXh0UmVmIGN0eCA9IHRv
UmVmKGV4ZWMpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxs
ZWUoKTsKKyAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoY2FsbEZyYW1lKTsKICAgICBKU09i
amVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKIAogICAgIEpTT2Jq
ZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjayA9IGpzQ2FzdDxUKj4oY29uc3Ry
dWN0b3IpLT5jb25zdHJ1Y3RDYWxsYmFjaygpOwogICAgIGlmIChjYWxsYmFjaykgewotICAgICAg
ICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAg
ICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgIGFyZ3VtZW50cy51
bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsK
KyAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICBKU09iamVjdFJlZiByZXN1bHQ7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAg
ICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY3R4LCBjb25zdHJ1Y3RvclJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoY2FsbEZyYW1lLCBleGNlcHRpb24pKTsKICAg
ICAgICAgfQogICAgICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAg
ICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhyZXN1bHQpKTsK
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCmluZGV4IGIyZjM4ODhi
NjUxYjk3ZDM5YzRjNWUxODRmNTAyN2RiZGMwOGUyYjAuLjNiODIwZTllNmYzNGZiNjJlYmZhODcy
NWM4YjM3OTY5ZGU2Y2I2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCkBAIC0z
MywxMSArMzMsMTIgQEAKICNpbmNsdWRlICJIZWFwQ2VsbElubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBWTTsKICAgICBjbGFzcyBKU09iamVj
dDsKICAgICBjbGFzcyBKU1ZhbHVlOworICAgIHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0R3JvdXAqIEpTQ29udGV4
dEdyb3VwUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0KaW5kZXggZjA3YTJkYWJiMzBmNThlODFjNmM4Zjk5NzIyZmM3NTNlZDU2ZjU3ZS4uZDlh
NDMzNjMxMTk0MzViZTU2NzhmYTY2MTk1ZWI0ZDQ4OGRmZDkyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC0xNzcsMTcgKzE3NywxNyBA
QCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVj
dChleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiTm8gbW9kdWxlIGxvYWRlciBwcm92aWRlZC4iKSk7
CiAKICAgICBhdXRvIGRlZmVycmVkUHJvbWlzZSA9IFN0cm9uZzxKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkPih2bSwgZGVmZXJyZWQpOwotICAgIGF1dG8qIHJlc29sdmUgPSBKU05hdGl2ZVN0ZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlc29sdmUiLCBbPV0gKEV4ZWNT
dGF0ZSogZXhlYykgeworICAgIGF1dG8qIHJlc29sdmUgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlc29sdmUiLCBbPV0gKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7CiAgICAgICAgIC8vIFRoaXMg
Y2FwdHVyZXMgdGhlIGdsb2JhbE9iamVjdCBidXQgdGhhdCdzIG9rIGJlY2F1c2Ugb3VyIHN0cnVj
dHVyZSBrZWVwcyBpdCBhbGl2ZSBhbnl3YXkuCi0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0ds
b2JhbFJlZihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSldOwotICAgICAgICBpZCBzY3JpcHQg
PSB2YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHRvUmVmKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7
CisgICAgICAgIGlkIHNjcmlwdCA9IHZhbHVlVG9PYmplY3QoY29udGV4dCwgdG9SZWYoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKIAogICAgICAgICBhdXRvIHJlamVjdFByb21pc2UgPSBbJl0gKFN0cmluZyBt
ZXNzYWdlKSB7Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZChjcmVhdGVUeXBlRXJyb3IoZXhlYywg
bWVzc2FnZSkpOwotICAgICAgICAgICAgY2FsbChleGVjLCBkZWZlcnJlZFByb21pc2UtPkpTUHJv
bWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4u
Li4iKTsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUs
IG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIGNhbGwoY2FsbEZyYW1lLCBkZWZlcnJlZFByb21pc2Ut
PkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJl
IHNlZW4uLi4iKTsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAg
ICAgICAgfTsKIApAQCAtMjA2LDE1ICsyMDYsMTUgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJ
R2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKG1ha2VTdHJpbmcoIlRoZSBzYW1lIEpT
U2NyaXB0IHdhcyBwcm92aWRlZCBmb3IgdHdvIGRpZmZlcmVudCBpZGVudGlmaWVycywgcHJldmlv
dXNseTogIiwgb2xkTW9kdWxlS2V5LCAiIGFuZCBub3c6ICIsIG1vZHVsZUtleS5zdHJpbmcoKSkp
OwogCiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSk7Ci0gICAgICAgIGNhbGwoZXhlYywgZGVm
ZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSgpLCBhcmdzLCAiVGhpcyBz
aG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgZGVmZXJy
ZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSgpLCBhcmdzLCAiVGhpcyBzaG91
bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVk
KCk7CiAgICAgfSk7CiAKLSAgICBhdXRvKiByZWplY3QgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlamVjdCIsIFs9XSAoRXhlY1N0YXRlKiBleGVj
KSB7CisgICAgYXV0byogcmVqZWN0ID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDEsICJyZWplY3QiLCBbPV0gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICAg
ICAgYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBhcmdzLmFwcGVuZChj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAotICAgICAgICBjYWxsKGV4ZWMsIGRlZmVycmVkUHJv
bWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdCgpLCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2
ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgZGVmZXJyZWRQcm9taXNl
LT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZlciBi
ZSBzZWVuLi4uIik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRlcm5h
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRlcm5hbC5oCmluZGV4IGEy
NzRhZjk2ZThjNDA5OTc2NzY1YzEzMzhmMmVmMmExZmJlZDE2ZmQuLmEyZmNjNWNkYmQ5NzhkMmEz
NGRlOTkxMjlhZmJjY2Y4MWMwNDA3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZUludGVybmFsLmgKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvV2ViS2l0QXZhaWxhYmlsaXR5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgSlNMb2NrSG9sZGVyOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgU291cmNl
Q29kZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogZXh0ZXJuICJDIiBKU1Zh
bHVlUmVmIEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChjb25zdCBKU0M6OkpTTG9ja0hvbGRlciYs
IEpTQzo6RXhlY1N0YXRlKiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBiODNiMTMzMTQxYjEw
MTU1NmI4NDhjZTNmZmRmZWQ1ZTdiOGI4YzMwLi4zNzIzZTQwZmVjYjUxNzZkOTQ3YzFlOWUyNDcz
M2I1MDM1NmVmMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaApAQCAtMjE4LDggKzIxOCw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwg
OiBwdWJsaWMgUGFyZW50IHsKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxsYmFj
a09iamVjdChKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxsYmFj
a09iamVjdChFbmNvZGVkSlNWYWx1ZSk7CiAgCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogICAgCiAgICAgSlNWYWx1ZSBnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzdGF0
aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKaW5kZXggYzcyMzYzMzk1YjA0NzViOGVjMTYyYjA1MDhkMjNiZGEyNzgxN2Qx
MS4uYzU1N2Y5OGZmN2E1NThlZmVhYTg5MGI3MTdkNDNlNzcwYWI2ZmUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
QEAgLTQ0MSwzMCArNDQxLDMwIEBAIENvbnN0cnVjdFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0CiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxl
ZSgpOwotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CisgICAgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpOworICAgIEpTQ29udGV4dFJl
ZiBleGVjUmVmID0gdG9SZWYoY2FsbEZyYW1lKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganND
bGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPihjb25zdHJ1Y3RvciktPmNs
YXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAg
ICAgICBpZiAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVj
dG9yID0ganNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKLSAgICAgICAgICAgIHNpemVfdCBh
cmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgICAgICAgICAgc2l6ZV90
IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgICAg
IFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAgICAgICAgICAgYXJndW1lbnRz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICBh
cmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1Jl
ZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIEpTT2JqZWN0KiByZXN1
bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMo
Y2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQs
IGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTE0LDMwICs1MTQsMzAgQEAgQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KLUVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKLSAgICBKU09i
amVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2Jq
ZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFs
dWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU0NvbnRleHRSZWYgZXhl
Y1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0
b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYg
PSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhj
YWxsRnJhbWUsIE5vdFN0cmljdE1vZGUpKSk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpz
Q2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9KUyhmdW5jdGlvblJl
ZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3Mp
IHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5j
dGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7Ci0gICAgICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgICAgIHNpemVfdCBh
cmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgICAgICBW
ZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAgICAgICAgIGFyZ3VtZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgICAgICAgICAgYXJn
dW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dChpKSkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAgICAgICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdDsK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoZXhlYyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhleGVjLCBjYWxs
QXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3Vu
dCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIEpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOworICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHRvSlMoY2FsbEZyYW1lLCBjYWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlv
blJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2Vw
dGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRp
b24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCB0
b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggOGRlZmMyNjcwYzE4MmE5NTVi
ZmI2NTE3YWNlNDY2MDRjNWRmNzE1ZS4uZDBhMDc0YWJlNTljMzBhMjcwYmExNThjY2FiM2NkOWU5
N2U3NTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuaApAQCAtMzcsOCArMzcsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBJ
bmxpbmVDYWxsRnJhbWU7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFz
cyBKU0Z1bmN0aW9uOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBzdHJ1Y3QgSW5s
aW5lQ2FsbEZyYW1lIHsKICAgICBlbnVtIEtpbmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaAppbmRleCAzMWE2ZTBkZmRiZDZmZTQ4MjU0YTlkMTY5OWVjMjcxZGZi
ZGI0MGU4Li4xZTVlYWE5MmMwYTBmMDZjYmQyZTI4YzljNDA1NWVmM2Q0YjA0MGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMzQsMTQgKzM0LDE0IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7
CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgVk07CiAKLXR5cGVkZWYgRXhlY1N0YXRl
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgRGVidWdnZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKaW5kZXggMGE2NDQ0ODZlMzRmNzI5
Y2EzZTRjZGY5MDU3N2M1OTg0MzhlODY0OS4uM2ViYWNhYjc4YTJiYWE0Nzk1ODhmOGViYTBlNTc1
NmY4YTZlYWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0
aE1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCkBA
IC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB1c2luZyBFbmNv
ZGVkSlNWYWx1ZSA9IGludDY0X3Q7CiAKIG5hbWVzcGFjZSBERkcgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3M2M4MTJjMWQ1NTE2
ZTBlZDUyYjZkZGU3YzQ3MjM1OTFmNzY1MTViLi4yMzMzYzI4NGM4OTMyNjkzMmJiYzU2YWU1MWVj
OTE0MDVlNzY0MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtMzY5Nyw3ICszNjk3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZv
KCkgIT0gY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pICE9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKKyAgICBpZiAoZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFdlIG9u
bHkgaGF2ZSBhbiBpbnRyaW5zaWMgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBzYXk6CkBAIC0zNzM0
LDcgKzM3MzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3Ry
dWN0b3IoCiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1f
dm0pLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKQorICAgIGlmICghZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKQEAgLTM3
NjUsNyArMzc2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJu
YWxGdW5jdGlvbigKICAgICB9CiAKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNzSW5mbygpID09IEFy
cmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewotICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9i
amVjdCgqbV92bSkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKQorICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENoZWNrcygpOwpAQCAtMzgwNiw3ICszODA2
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9u
KAogICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQotICAgICAg
ICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8obV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKS0+c3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkpKSwgcmVzdWx0Tm9kZSk7CisgICAgICAgICAgICByZXN1bHRO
b2RlID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJl
KCkpKSwgcmVzdWx0Tm9kZSk7CiAgICAgICAgIAogICAgICAgICBzZXQocmVzdWx0LCByZXN1bHRO
b2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zODMyLDkgKzM4MzIsOSBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAKICAgICAgICAg
Tm9kZSogcmVzdWx0Tm9kZTsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDw9IDEpCi0gICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFwaChOZXdPYmplY3QsIE9w
SW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1f
dm0pLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkpOworICAgICAgICAg
ICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZv
ck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dE5vZGUgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RDb25zdHJ1Y3RvciwgT3BJbmZvKG1fZ3JhcGgu
ZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pKSksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwor
ICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoQ2FsbE9iamVjdENvbnN0cnVjdG9y
LCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpKSksIE9wSW5m
byhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpOwogICAgICAgICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDI2
YmQ3Mjg2ZGZmZmU2MmFmNjQ0MmZiNzgzMjFiNzU0NTJlZTU0ZTAuLjE1YWY0MWJlMDRlMmJjODNm
OWNiNzhiZmY3ZTMwZWMxMGUxMGFmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKQEAgLTUyLDcgKzUyLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJv
b3RHcmFwaDsKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAK
IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgK
aW5kZXggNTBjYjA2MDVjMTA2N2RlN2JkYTJmZTE4YzlmY2RjNTkzNTFlYWU3Mi4uMTdmOGFlZTFl
MmQ4ODg2OTI5NjFlZjlhZWFkZDM0NTdjZDMyMTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaApAQCAtMzMsOCArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29kZUJsb2NrOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1ZjA1ZWUx
NWYyNGRjNjU5NTcxMDY5NDdmNWQ3ZTZiMTA2YjM2MzEyLi45ZDAzOGI1ZjMyYzU2NjkwNDI3MTcy
MjMyNWE2MmZjZTc0OTlmNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzIzNSw2ICs3MjM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVy
ZWRTdHJ1Y3QKICAgICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwogICAgIG1f
aml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGV4
ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZlJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4
IDdiMGM4OWE5NGNhMzI4ZWU5NmVlZTBmNGI5NmZlMjI3Y2Q3ZDFkYzguLjEwMzY5ZTRlNDk0NTI2
MGRhN2NjNGMxM2EzZjcxODZhNmU0MjM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04MSw2ICs4MSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU0NlbGxfdXNlZnVs
Qnl0ZXMsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSBcCiAgICAgbWFjcm8o
SlNEZXN0cnVjdGlibGVPYmplY3RfY2xhc3NJbmZvLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX2V4ZWN1dGFibGUsIEpTRnVu
Y3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFjcm8oSlNGdW5jdGlvbl9nbG9i
YWxPYmplY3QsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpIFwKICAgICBtYWNy
byhKU0Z1bmN0aW9uX3Njb3BlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkgXAog
ICAgIG1hY3JvKEpTRnVuY3Rpb25fcmFyZURhdGEsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURh
dGEoKSkgXAogICAgIG1hY3JvKEpTR2xvYmFsT2JqZWN0X3JlZ0V4cEdsb2JhbERhdGFfY2FjaGVk
UmVzdWx0X2xhc3RSZWdFeHAsIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBHbG9iYWxEYXRhT2Zmc2V0
KCkgKyBSZWdFeHBHbG9iYWxEYXRhOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRhNWM1NDVlNjBjMzkzMDdmZTQyZjM1
NWM0YjcyMTQzZTQzZjVmZDUuLmU0MWJmYzI3ZWQwMTJjNmZmYjkxNDNhMzY1OGM3ZjI3ZmFlMDg1
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTU2MDUsNiArNTYwNSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fc2NvcGUpOwog
ICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgZmFzdE9iamVj
dCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpOwogICAgICAgICBtX291dC5zdG9yZVB0
cihtX291dC5pbnRQdHJaZXJvLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURh
dGEpOworICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUtPmdsb2Jh
bE9iamVjdCgpKSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2dsb2JhbE9iamVjdCk7
CiAgICAgICAgIG11dGF0b3JGZW5jZSgpOwogCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmgKaW5kZXggNDM5YzRjMjBhZTdhNjRhYjkzMTEzMDU1NTdjOWQ4ODBkZjVk
ZDJlOS4uNWYwOWNiNzcyNDIzOWEzZWI5ZWQyMjZlMzE4ZDVlNjlkOTgxNGM2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuaApAQCAtMjksOCArMjksOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29kZUJsb2NrOwotY2xhc3Mg
RXhlY1N0YXRlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgRlRM
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5oCmluZGV4IDYyMzc4ZWY0MzRmZGZkM2E0ODc1M2YyODRiODRiODNiZTU0MmYxZDEuLmRhYzNk
ZDVkYmQ5ZWJlNzg5MTRiNTExYjcxOTJlYjk0NzM1ZjI1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTM4LDcgKzM4LDggQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IDU2OGJjYWJj
NmIyOWI3ZTg0NjQ5ZTgxNmNlOTRhNzFjMDNhZDM5NjQuLjc4MWU2NjI3YTdiOWNiODViM2QyYzhj
ODdmOTQ2MTA4Y2YyNTViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEwOCwxNSArMTA4LDE2IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiAgICAgYXV0byogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7CiAgICAgSlNDOjpWTSYgdm0gPSBzY3JpcHRTdGF0
ZS0+dm0oKTsKIAotICAgIEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbioganNGdW5jdGlvbjsKLQor
ICAgIEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IG51bGxwdHI7CisgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKICAgICB7CiAgICAg
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICAgICAganNGdW5jdGlvbiA9
IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzY3JpcHRTdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChKU0M6OkV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICAgICAgaWYgKCFleGVjKQor
ICAgICAgICBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OworICAgICAgICBqc0Z1bmN0aW9uID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUp
IHsKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5
bmNDYWxsUmVzdWx0KEpTT046OlZhbHVlOjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcg
YSBjYWxsLiIpLCBjYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmIChhdXRvIHJlc3VsdEpT
T05WYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUoKmV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNPTlZhbHVlID0gdG9JbnNwZWN0b3JWYWx1
ZSgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkKICAgICAgICAgICAgICAgICBj
aGVja0FzeW5jQ2FsbFJlc3VsdChyZXN1bHRKU09OVmFsdWUsIGNhbGxiYWNrKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2FsbFJlc3VsdChKU09OOjpWYWx1
ZTo6Y3JlYXRlKG1ha2VTdHJpbmcoIk9iamVjdCBoYXMgdG9vIGxvbmcgcmVmZXJlbmNlIGNoYWlu
IChtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAiLCBKU09OOjpWYWx1ZTo6bWF4RGVwdGgsICcpJykp
LCBjYWxsYmFjayk7CkBAIC0xMzMsNyArMTM0LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6
Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwK
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAvLyBTaW5jZSBgY2FsbGJhY2tgIGlzIG1vdmVk
IGFib3ZlLCB3ZSBjYW4ndCBjYWxsIGl0IGlmIHRoZXJlJ3MgYW4gZXhjZXB0aW9uIHdoaWxlIHRy
eWluZyB0bwogICAgICAgICAvLyBleGVjdXRlIHRoZSBgSlNOYXRpdmVTdGRGdW5jdGlvbmAgaW5z
aWRlIEluamVjdGVkU2NyaXB0U291cmNlLmpzLgotICAgICAgICBqc0Z1bmN0aW9uLT5uYXRpdmVT
dGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShudWxscHRyKTsKKyAgICAgICAganNGdW5jdGlv
bi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoZ2xvYmFsT2JqZWN0LCBudWxs
cHRyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDdlMjAzOTljOGE3M2YxYmE4Zjlk
MTQwYTRlODYwNDQ4NDBmNmNjOTUuLmRkM2YzZDY4MmRmNTJlZGUxMTM4YWIxNTBjOGVlMzQ3MTFi
NjcxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtMzksNyArMzksOCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRl
eCBmMGZmYzQ1ZGQ5ZmE2Y2RmNjE3ZjAzODFlNDZmOGRjZWJmZWYzYzhjLi4yMzc4N2VhN2M5MWIx
MzkzYjdhNDhhZDE1MDE0MDI1NzNhOTBhMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTM4LDEwICszOCwxMSBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0Mg
eworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29uc29sZUNsaWVudDsKIGNsYXNzIEV4Y2VwdGlv
bjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHAKaW5kZXggMGUxY2Y4YTk5OGI2NzY0OTg4MDNhY2ZjNDhhNWE3
MDUyNWVjN2RlYS4uN2NmY2Y4ODRlMmMxOTkxMDFiZDljZGNkMGIwMTY5MmE2NGY3Nzc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKQEAgLTM4LDI0ICszOCwyNCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvblN1YnR5cGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbklzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJv
cihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdldFZhbHVlKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtT
ZXRTaXplKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25RdWVyeUluc3RhbmNlcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25RdWVyeUhvbGRlcnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uU3VidHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1M
QWxsQ29sbGVjdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbklzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBFbnRy
aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1Nl
dFNpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFr
U2V0RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkl0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvblF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZTo6c19pbmZvID0geyAiSW5qZWN0ZWRTY3JpcHRIb3N0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZSkgfTsKIApAQCAtODQsMjI1ICs4NCwyMjUgQEAgdm9pZCBKU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04o
InNhdmVkUmVzdWx0QWxpYXMiLCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0
ZVNhdmVkUmVzdWx0QWxpYXMsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0
ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJp
YnV0ZVNhdmVkUmVzdWx0QWxpYXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVz
dWx0QWxpYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5zYXZlZFJlc3VsdEFsaWFzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPnNhdmVkUmVzdWx0QWxpYXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVy
bmFsQ29uc3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0
SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoY2Fs
bEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRNTEFsbENvbGxlY3Rpb24oZXhlYykp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXNIVE1MQWxsQ29sbGVj
dGlvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0
aXZlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJ
bmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdl
dHRlclR5cGVFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnByb3h5VGFyZ2V0VmFsdWUoZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cHJveHlUYXJnZXRWYWx1ZShjYWxsRnJhbWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a01hcFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT53ZWFrTWFwU2l6ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT53ZWFrTWFwU2l6ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVu
dHJpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwRW50cmll
cyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFw
RW50cmllcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0U2l6ZShleGVjKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0U2l6ZShjYWxsRnJhbWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a1NldEVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlw
dEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT53ZWFrU2V0RW50cmllcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50cmllcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
SXRlcmF0b3JFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmll
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPml0
ZXJhdG9yRW50cmllcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5pdGVyYXRvckVudHJpZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SW5z
dGFuY2VzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlJbnN0YW5j
ZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlJ
bnN0YW5jZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9sZGVycyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5xdWVyeUhvbGRlcnMoZXhlYykpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlIb2xkZXJzKGNhbGxGcmFtZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0
eXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0
ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdWJ0eXBlKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1YnR5cGUoY2FsbEZyYW1lKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25G
dW5jdGlvbkRldGFpbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uR2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0
SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGV4ZWMpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhjYWxsRnJh
bWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZS5jcHAKaW5kZXggYjg5OTFjZDJjN2NiNTE1YzcxMzEwN2I4OTJkN2VhNmRiOGNi
NWMwNC4uZjg4N2VjNzgzZTA1MWFlZTc5YTkyZDBkOTIwYmQ0ODU3MjkzMTM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApAQCAtMzcsMTkgKzM3LDE5IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogLy8gRnVuY3Rpb25zLgotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZUZ1bmN0aW9uU2NvcGVEZXNjcmlwdGlvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVG
dW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVGdW5jdGlv
bk5hbWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlVGhpc09iamVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ29sdW1uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVG
dW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3Bl
Q2hhaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5cGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6
c19pbmZvID0geyAiSmF2YVNjcmlwdENhbGxGcmFtZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlKSB9OwogCkBAIC03MiwxNDcgKzcyLDE0NyBAQCB2b2lkIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYgog
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigiaXNUYWlsRGVsZXRlZCIs
IGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25F
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uU2NvcGVEZXNjcmlwdGlvbnMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29wZURlc2NyaXB0
aW9ucyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29w
ZURlc2NyaXB0aW9ucyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVDYWxsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPmNhbGxlcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5jYWxsZXIoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVB
dHRyaWJ1dGVTb3VyY2VJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxG
cmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZUxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmxpbmUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+bGluZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVB
dHRyaWJ1dGVDb2x1bW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJh
bWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmNvbHVtbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5jb2x1bW4oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZh
U2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbk5hbWUoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGNhbGxGcmFtZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0
dHJpYnV0ZVNjb3BlQ2hhaW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29wZUNoYWlu
KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlQ2hh
aW4oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRo
aXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPnRoaXNPYmplY3QoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+dGhpc09iamVjdChjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRD
YWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT50eXBlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxE
ZWxldGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5pc1RhaWxEZWxldGVkKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoY2FsbEZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmgKaW5kZXggNjA3ZmVhZmIyMDY2M2I2Y2M2ODRhNWIwODMyYzRkZDBiNDkxODk3
NS4uNjAyYzhiYTRjNDg5N2I5ZTZjMjgwZGZiYjkxZTcyMzkzMDRlNmIwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0zNyw4
ICszNyw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgKaW5kZXggNTVjYTRkNTc4ZjAzN2I0NDcwMDgxNzdmZGM5NWJlNzhkMTlj
MmMzNy4uMjNiYjIxNWRiMmNkMTQ5MWVmYjEyYjI2ZWRmMWRmNWE1ZDhlZGQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmgKQEAgLTM1LDkgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFz
cyBFeGVjU3RhdGU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAxZWViNGY4YThjNjUzMjc1
MGQ4ZTJmOTMzYWE2MDQ2MDUyMGFlMTQxLi43ZWEyZjljMmY1MzQ0YTVkNzgwZTNhNTA3ODA1ZDk3
YmU2ZGE0YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgVk07Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaAppbmRleCBjODU3Y2RkZmViZDc3MTMzZDkzMjFkMGJjZmFjOTdmMGEx
MjIzOGU3Li5iYmYxOGI1NTVmZjgzZjJkZGQ0MjNmMGJhNTVmNmZmY2FhYmMxOWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtMzYsNyArMzYsOCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0Fic3RyYWN0UEMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9B
YnN0cmFjdFBDLmgKaW5kZXggNDgzMmQ2ZGU4MjUzODU2Y2RiMGU1MTI1NDM5YTlmOTc5NDZkOGY2
OC4uNDM1NWIyMzU0Y2M0OTYwOTljOGRiNTJhMzJjNjc4NTg1NzllYTBkOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCkBAIC0yOSw4ICsyOSw5
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0
cnVjdGlvbjsKIAogY2xhc3MgQWJzdHJhY3RQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggZGQyMDBlMWEzNTEwNzMxMmQxZDA1ZTI1MjIy
NDMzNzVhNDk0NTI4MS4uZDAwYzNjOWI4Mjc3YzZiNzg0NWJkNTNmYzI0ZmUwN2MxNzIwYzQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAt
MzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyAgewogCiAgICAgY2xhc3MgQXJndW1lbnRzOwot
ICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAgICAgY2xhc3MgSW50
ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgc3RydWN0IEluc3RydWN0aW9uOwog
Ci0gICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOworICAgIHVzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogICAgIGNsYXNzIENhbGxTaXRlSW5kZXggewogICAgIHB1YmxpYzoKQEAg
LTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgLy8gUmVwcmVzZW50cyB0aGUg
Y3VycmVudCBzdGF0ZSBvZiBzY3JpcHQgZXhlY3V0aW9uLgogICAgIC8vIFBhc3NlZCBhcyB0aGUg
Zmlyc3QgYXJndW1lbnQgdG8gbW9zdCBmdW5jdGlvbnMuCi0gICAgY2xhc3MgRXhlY1N0YXRlIDog
cHJpdmF0ZSBSZWdpc3RlciB7CisgICAgY2xhc3MgQ2FsbEZyYW1lIDogcHJpdmF0ZSBSZWdpc3Rl
ciB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGhlYWRlclNpemVJblJl
Z2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKyAxOwogCkBAIC0yMDIsNyAr
MjAyLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENh
bGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygpLmNhbGxlckZyYW1lID0gZnJhbWU7
IH0KICAgICAgICAgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCwgSlNTY29w
ZSogc2NvcGUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtzY29wZVJlZ2lzdGVyT2Zm
c2V0XSA9IHNjb3BlOyB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgaW5pdEdsb2JhbEV4ZWMoRXhl
Y1N0YXRlKiBnbG9iYWxFeGVjLCBKU0NhbGxlZSogZ2xvYmFsQ2FsbGVlKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgaW5pdEdsb2JhbEV4ZWMoQ2FsbEZyYW1lKiBnbG9iYWxFeGVjLCBKU0NhbGxlZSog
Z2xvYmFsQ2FsbGVlKTsKIAogICAgICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIgZnJvbSB0aGUgY29k
ZWZyYW1lIChvciBjb25zdGFudCBmcm9tIHRoZSBDb2RlQmxvY2spLgogICAgICAgICBSZWdpc3Rl
ciYgcihpbnQpOwpAQCAtMzAzLDggKzMwMyw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIHBy
aXZhdGU6CiAKLSAgICAgICAgRXhlY1N0YXRlKCk7Ci0gICAgICAgIH5FeGVjU3RhdGUoKTsKKyAg
ICAgICAgQ2FsbEZyYW1lKCk7CisgICAgICAgIH5DYWxsRnJhbWUoKTsKIAogICAgICAgICBSZWdp
c3RlciogdG9wT2ZGcmFtZUludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDVkZjA0OGM5OTc3ODNhYTRkNzE5
YjJkNzM0MmNjNzJlNWZkZjdhNTMuLmI2MDFkY2Y3MDNjZDllYTRhM2I1M2U4OGJlZDhiM2M1MmQ0
NWEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAg
ICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRl
ciBmb3IgJ3RoaXMnLgogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHNjb3BlKSwgdGhpc09iaiwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwpAQCAtODk0LDcgKzg5NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24s
IENhbGxUCiAgICAgfQogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFy
Z3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5k
YXRhKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgewpAQCAtOTY1LDcgKzk2NSw3IEBA
IEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAgICAgfQogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJv
dG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0
cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHByb3RvQ2Fs
bEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBuZXdU
YXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAg
ICAgewpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6
cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkUKIAogICAg
IHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIAotICAgIHBy
b3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIGpzVW5kZWZpbmVkKCks
IGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0Nv
ZGVCbG9jaywgZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBmdW5jdGlvbiwganNVbmRlZmluZWQo
KSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CiAgICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVs
IGNsb3N1cmU6CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgcHJv
dG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUsIG5l
d0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTQ5LDggKzExNDksOSBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZQogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEp
OyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIFByb3RvQ2FsbEZyYW1lIHBy
b3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxl
ZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwgc2NvcGUpLCB0aGlzVmFsdWUs
IDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIEpT
Q2FsbGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCB0aGlzVmFsdWUsIDEpOwog
CiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAg
LTExOTksOCArMTIwMCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9n
cmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDCiAgICAgLy8gVGhlIHx0
aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmly
b25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29y
ZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2Nv
cGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7
Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0s
IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEpOworICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIEpTQ2FsbGVlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKIAogICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCmluZGV4
IDUzZTk4YzYwZjNjNmRhN2U1OTc3NTRkMTBjNGUzYWZjNDY0MzQ3MmEuLjdkYmM1MWMxNjlkY2Qw
YzIxNjkxMDJlNzcxNjlhNDM4NzY5N2RhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC00NSwxNCArNDUsMjIgQEAgc3Ry
dWN0IEpTX0VYUE9SVF9QUklWQVRFIFByb3RvQ2FsbEZyYW1lIHsKICAgICB1aW50MzJfdCBwYWRk
ZWRBcmdDb3VudDsKICAgICBib29sIGhhc0FyaXR5TWlzbWF0Y2g7CiAgICAgSlNWYWx1ZSAqYXJn
czsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0OwogCi0gICAgdm9pZCBpbml0KENv
ZGVCbG9jayosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBKU1ZhbHVlKiBvdGhlckFyZ3MgPSAw
KTsKKyAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCos
IEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gMCk7CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGNvZGVCbG9ja1ZhbHVlLlJlZ2lzdGVyOjpjb2Rl
QmxvY2soKTsgfQogICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKSB7
IGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOyB9CiAKICAgICBKU09iamVjdCogY2FsbGVlKCkg
Y29uc3QgeyByZXR1cm4gY2FsbGVlVmFsdWUuUmVnaXN0ZXI6Om9iamVjdCgpOyB9Ci0gICAgdm9p
ZCBzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkgeyBjYWxsZWVWYWx1ZSA9IGNhbGxlZTsgfQor
ICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpCisgICAgeworICAgICAgICBjYWxs
ZWVWYWx1ZSA9IGNhbGxlZTsKKyAgICB9CisgICAgdm9pZCBzZXRHbG9iYWxPYmplY3QoSlNHbG9i
YWxPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAgIGdsb2JhbE9iamVjdCA9IG9iamVjdDsK
KyAgICB9CiAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJl
dHVybiBhcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZS5wYXlsb2FkKCk7IH0KICAgICBpbnQgYXJn
dW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
LSAxOyB9CkBAIC03OCwxMSArODYsMTIgQEAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIFByb3Rv
Q2FsbEZyYW1lIHsKICAgICB9CiB9OwogCi1pbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5p
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKK2lubGlu
ZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQogewogICAg
IHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CiAgICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9j
ayk7CiAgICAgdGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7CisgICAgdGhpcy0+c2V0R2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgdGhpcy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBpZiAoY29kZUJsb2NrICYmIGFyZ0NvdW50
SW5jbHVkaW5nVGhpcyA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAgICAgICB0aGlz
LT5oYXNBcml0eU1pc21hdGNoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyLmgKaW5kZXggNjAzODliNGJhN2U1NjBjZTc3ZjgyYWFkYjhjMzMwM2U0
OTY2Y2MyNi4uOWRkM2FjZTU4ZDAyZWJiYWNhMDQ4YWRkNDRmMjFkOGMyYjNmNzM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKQEAgLTM0LDEzICsz
NCwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBj
bGFzcyBDb2RlQmxvY2s7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTTGV4aWNh
bEVudmlyb25tZW50OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU2NvcGU7CiAK
LSAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CisgICAgdXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogCiAgICAgY2xhc3MgUmVnaXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TaGFkb3dDaGlja2VuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5oCmluZGV4IDg0YjUyZTgwMmUxYWJmYTcwNmEyZTg3ZmExNjM0MTZkZjBiMGY4
MGQuLjIwODgwYTYzYzk3NDVjOWVlYmVkYmE0MmI4OTNiMDdjZWRiZDBkOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaApAQCAtMzUs
OCArMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Q29kZUJsb2NrOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNBcnJheTsKIGNsYXNzIEpTT2Jq
ZWN0OwogY2xhc3MgSlNTY29wZTsKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogY2xhc3MgU2xvdFZpc2l0b3I7CiBjbGFzcyBWTTsKIAotdHlwZWRlZiBFeGVj
U3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBTaGFk
b3dDaGlja2VuIGlzIGEgbG9nIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBhIHNoYWRvdyBz
dGFjayBvZiBDSElDS0VOLXN0eWxlIHN0YWNrIGZyYW1lcy4KIC8vIFRoaXMgZW5hYmxlcyB0aGUg
ZGVidWdnZXIgdG8gYWxtb3N0IGFsd2F5cyBzZWUgdGhlIHRhaWwtZGVsZXRlZCBzdGFjayBmcmFt
ZXMsIHNvIGxvbmcgYXMgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IDY4NjgzMmYzYjI5NjM2NTYwYTk3N2NjZjA4NTE3
YTYzNWEyZDIzYTQuLmEzNDFiN2E5ZDVjYzc5MTU3NGRjZWE2MGVhODVlMzYzZjU5Y2FlYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgK
QEAgLTM2LDE2ICszNiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBFbnRyeUZyYW1lOwog
c3RydWN0IElubGluZUNhbGxGcmFtZTsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgQ29kZU9yaWdpbjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQ2VsbDsK
IGNsYXNzIEpTRnVuY3Rpb247CiBjbGFzcyBDbG9uZWRBcmd1bWVudHM7CiBjbGFzcyBSZWdpc3Rl
cjsKIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogCi10eXBlZGVmIEV4ZWNTdGF0ZSBDYWxs
RnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFN0YWNrVmlzaXRv
ciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvVk1FbnRyeVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZN
RW50cnlSZWNvcmQuaAppbmRleCA2NzIxODhlODkwYjA5NDI5MTQ1ZDg0ZTE0MTViZGIzMDUxYTEz
OTFlLi5iZTdiZjg4OTg3OWQ5NTVkOGY0NDg2ZDgzNDExMDE5NjZjYWNhYjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKQEAgLTMw
LDcgKzMwLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgRW50cnlGcmFtZTsKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xh
c3MgSlNPYmplY3Q7CiBjbGFzcyBWTTsKIApAQCAtNDAsNyArNDEsNyBAQCBzdHJ1Y3QgVk1FbnRy
eVJlY29yZCB7CiAgICAgICogYWZ0ZXIgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHdoZXJlIGxvY2Fs
IHZhcmlhYmxlcyB3b3VsZCBnby4KICAgICAgKi8KICAgICBWTSogbV92bTsKLSAgICBFeGVjU3Rh
dGUqIG1fcHJldlRvcENhbGxGcmFtZTsKKyAgICBDYWxsRnJhbWUqIG1fcHJldlRvcENhbGxGcmFt
ZTsKICAgICBFbnRyeUZyYW1lKiBtX3ByZXZUb3BFbnRyeUZyYW1lOwogICAgIEpTT2JqZWN0KiBt
X2NhbGxlZTsKIApAQCAtNTIsOCArNTMsOCBAQCBzdHJ1Y3QgVk1FbnRyeVJlY29yZCB7CiAgICAg
Q1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclsxXTsKICNlbmRpZgogCi0gICAg
RXhlY1N0YXRlKiBwcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1l
OyB9Ci0gICAgU1VQUFJFU1NfQVNBTiBFeGVjU3RhdGUqIHVuc2FmZVByZXZUb3BDYWxsRnJhbWUo
KSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KKyAgICBDYWxsRnJhbWUqIHByZXZUb3BD
YWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KKyAgICBTVVBQUkVTU19B
U0FOIENhbGxGcmFtZSogdW5zYWZlUHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRv
cENhbGxGcmFtZTsgfQogCiAgICAgRW50cnlGcmFtZSogcHJldlRvcEVudHJ5RnJhbWUoKSB7IHJl
dHVybiBtX3ByZXZUb3BFbnRyeUZyYW1lOyB9CiAgICAgU1VQUFJFU1NfQVNBTiBFbnRyeUZyYW1l
KiB1bnNhZmVQcmV2VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcEVudHJ5RnJhbWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGJlOWMxMzA4
NWQyOTc1MjI5ZmE1ZDhmN2RlZTY5MjFlYzYxNzRlNGEuLmMwZDQyYmM3OTZkYTZkNzQ4YTRjMTQ5
YmRjODBjOWFkOTVmY2Y3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaApAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgUE9LRV9BUkdV
TUVOVF9PRkZTRVQgMAogI2VuZGlmCiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIFN0cnVjdHVyZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIG5hbWVz
cGFjZSBERkcgewogY2xhc3MgUmVnaXN0ZXJlZFN0cnVjdHVyZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCmluZGV4IGU1ZDI5ZjliNDNlZjk1OWQ3MjY3NDUz
MGViNmVhYzljMzBjN2ViNDEuLmQwOTE3MjM4ZGVkYmEwMmZjZDY3MjYyZjEyNTk4NTQ0YjYzMmU0
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCkBAIC0yNyw4
ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogdm9p
ZCBnZW5lcmljVW53aW5kKFZNJiwgRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDY1NmU3ZGQ4NmFiMjNjOTY4ZmU5Yjc4MWVk
YWFjNGE1YTVmYmJkMmEuLjYzOTQ2M2M5OWU5ZmRiYjQ3ODkwZWY2NDkwYzhiMmIxYjVlZWY3MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTg3
LDcgKzk4Nyw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlOjpIb3N0KSB7CiAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxl
ZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsK
KyAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSks
IGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAg
ICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwK
QEAgLTEwMTYsNyArMTAxNiw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9z
dENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAgICBpZiAoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7CiAgICAgICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAgICAgICBleGVjQ2FsbGVlLT5z
ZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0Nh
bGxlZSkpOworICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9i
amVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAg
ICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDI1MzIzMTRhZjcz
ZDkyNTgwODQxMjBmNmE1ZTQ5NDE3ZmVjZWU2Yi4uOWRiNjczNDE5MjNkZGUxMTUyMjRlMjBmZDVj
ODA1YTdjZDc4YjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTM5LDkgKzM5LDkgQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwogY2xh
c3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEJ1
dHRlcmZseTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIENv
ZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQXJyYXk7CiBjbGFzcyBKU0NlbGw7
CiBjbGFzcyBKU0Z1bmN0aW9uOwpAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IEFyaXRoUHJvZmlsZTsKIAotdHlwZWRl
ZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBl
eHRlcm4gIkMiIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCmluZGV4IDA4Y2QxZDBlY2Y4MDQ4NmEwMDc0NmYzYWE2YTg1NTdmNWQ2NDMxZDIuLjNi
YjczOWNlMTM4YWQ3ZGVjZTQ2NTE2N2RiNTRiMjNlYzJmMDIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTI3MSwzMiArMjcxLDM5IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUZvckdl
bmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAjaWYgQ1BVKFg4Nl82NCkKICNpZiAhT1MoV0lORE9X
UykKICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihlZGksIGVzaSwgZWR4LCBlY3gs
IC4uLik7Ci0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7Ci0g
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3Rl
cnM6OmVkaSk7CisgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZXNpKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZXNpKTsK
KyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCBYODZSZWdpc3RlcnM6OmVkaSk7CiAgICAgaWYgKHRodW5rRnVuY3Rpb25UeXBlID09IFRo
dW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50
ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNpLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkaSwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZGksIEpTRnVuY3Rpb246
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBYODZSZWdpc3RlcnM6OmVkaSk7CiAgICAgICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6
ZXNpLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwg
WDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJ
bnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZGksIEludGVybmFsRnVuY3Rpb246
Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAg
ICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpl
ZGksIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBYODZSZWdpc3Rl
cnM6OmVkaSk7CisgICAgfQogICAgIGppdC5jYWxsKFg4NlJlZ2lzdGVyczo6cjksIEpTRW50cnlQ
dHJUYWcpOwogCiAjZWxzZQogICAgIC8vIENhbGxpbmcgY29udmVudGlvbjogICAgICBmKGVjeCwg
ZWR4LCByOCwgcjksIC4uLik7Ci0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhl
Y1N0YXRlKik7Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWR4KTsKIAogICAgIC8vIExlYXZl
IHNwYWNlIGZvciB0aGUgY2FsbGVlIHBhcmFtZXRlciBob21lIGFkZHJlc3Nlcy4KICAgICAvLyBB
dCB0aGlzIHBvaW50IHRoZSBzdGFjayBpcyBhbGlnbmVkIHRvIDE2IGJ5dGVzLCBidXQgaWYgdGhp
cyBjaGFuZ2VzIGF0IHNvbWUgcG9pbnQsIHdlIG5lZWQgdG8gZW1pdCBjb2RlIHRvIGFsaWduIGl0
LgogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig0ICogc2l6ZW9m
KGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAg
IGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUs
IFg4NlJlZ2lzdGVyczo6ZWR4KTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6OmVjeCk7CiAgICAgaWYgKHRo
dW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7Ci0gICAg
ICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOwot
ICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5
LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEpTRW50cnlQdHJUYWcpOwotICAgIH0gZWxz
ZQotICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6
OmVkeCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSks
IEpTRW50cnlQdHJUYWcpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhYODZSZWdpc3RlcnM6OmVjeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBYODZSZWdpc3RlcnM6OnI5
KTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0
ZXJzOjplY3gsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBYODZS
ZWdpc3RlcnM6OmVjeCk7CisgICAgfQorICAgIGppdC5jYWxsKFg4NlJlZ2lzdGVyczo6cjksIEpT
RW50cnlQdHJUYWcpOwogCiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZElt
bTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogI2VuZGlmCkBAIC0zMDYsMTUgKzMxMywxOCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0mIHZtLCBUaHVu
a0Z1bgogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjp4MSAhPSBKU0ludGVyZmFj
ZUpJVDo6cmVnVDMsIFQzX25vdF90cmFtcGxlZF9ieV9hcmdfMSk7CiAgICAgQ09NUElMRV9BU1NF
UlQoQVJNNjRSZWdpc3RlcnM6OngyICE9IEpTSW50ZXJmYWNlSklUOjpyZWdUMywgVDNfbm90X3Ry
YW1wbGVkX2J5X2FyZ18yKTsKIAotICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4
ZWNTdGF0ZSopOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTog
ZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OngxKTsKIAotICAgIGppdC5l
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEFSTTY0
UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6OngwKTsKICAgICBpZiAodGh1bmtG
dW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24pIHsKLSAgICAgICAg
aml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7Cisg
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJz
Ojp4MCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJlZ2lzdGVyczo6
eDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJl
Z2lzdGVyczo6eDAsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBBUk02NFJl
Z2lzdGVyczo6eDApOwogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhBUk02NFJlZ2lzdGVyczo6eDIsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgQVJNNjRS
ZWdpc3RlcnM6OngyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZz
ZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02
NFJlZ2lzdGVyczo6eDAsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25G
b3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDAsIEludGVybmFsRnVuY3Rpb246
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBBUk02NFJlZ2lzdGVyczo6eDApOworICAgIH0KICAg
ICBqaXQuY2FsbChBUk02NFJlZ2lzdGVyczo6eDIsIEpTRW50cnlQdHJUYWcpOwogCiAjZWxpZiBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCkBAIC0zMjMsMTYgKzMzMywyMyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5lcmF0b3Io
Vk0mIHZtLCBUaHVua0Z1bgogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW0zMigxNiksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAjZW5kaWYK
IAorICAgIHN0YXRpY19hc3NlcnQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyICE9IEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjApOworCiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uIGlzIGYoYXJn
dW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIC4uLikuCi0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWdu
YXR1cmUgaXMgZihFeGVjU3RhdGUqKS4KLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOworICAgIC8vIEhv
c3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Cisg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6YXJndW1lbnRHUFIxKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEp
OworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOwogICAgIGlmICh0aHVua0Z1bmN0
aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBqaXQu
bG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRH
UFIxLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMik7Ci0gICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJm
YWNlSklUOjpyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0VudHJ5UHRyVGFn
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZO
YXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEpTRW50cnlQdHJUYWcpOworICAgICAgICBqaXQubG9h
ZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIw
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdU
Mik7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJm
YWNlSklUOjphcmd1bWVudEdQUjAsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJ
bnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyLCBleGVjdXRhYmxlT2Zm
c2V0VG9GdW5jdGlvbiksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZv
cihraW5kKSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CisgICAgICAgIGppdC5sb2FkUHRyKEpT
SW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEludGVy
bmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6cmVnVDIs
IEpTRW50cnlQdHJUYWcpOwogCiAjaWYgQ1BVKE1JUFMpCiAgICAgLy8gUmVzdG9yZSBzdGFjayBz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBjYjRhYmFmZTQxOTE2YjExODcxNjAwYmIxMjZj
N2UwNThhNzAwNzFkLi4wMjRhODNlZDI1Zjc0NDhjNjA0Mzg5NTQzNDg1Y2VkMTFjYzVmMTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjk0LDEwMyArMjk0LDEwMiBAQCBjbGFzcyBXb3JrZXJz
IHsKIH07CiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJyKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVz
Y3JpYmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRlc2NyaWJlQXJyYXkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZ1bGxHQyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25IZWFwU2l6ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1l
bW9yeVBlYWsoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRT
dHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZl
cklubGluZUZ1bmN0aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9GVEwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhpdEZ1enppbmcoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk9wdGltaXpl
TmV4dEludm9jYXRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01HQ29tcGlsZWQo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ09wdGlvbnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZl
cihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmFpbE5leHROZXdDb2RlQmxvY2soRXhlY1N0YXRlKik7Ci1zdGF0aWMgTk9fUkVUVVJOX1dJ
VEhfVkFMVUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNl
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25VbmRlZmluZWQxKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQy
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25JZGVudGl0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlw
ZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMy
Qml0UGxhdGZvcm0oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQ
cm9maWxlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NE
ZWJ1Z2dpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jl
YXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUHJpbnRTdGRFcnIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TbGVlcFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBbmRTd2VlcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRWRlbkdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZU1lbW9yeUZvb3RwcmludChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBlYWso
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNpb24oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUnVuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Mb2FkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVhZEZpbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVhZGxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Ob0ZUTChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRGdXp6aW5nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVy
T2ZERkdDb21waWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkpTQ09wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmFpbE5leHROZXdDb2RlQmxvY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBOT19SRVRVUk5fV0lUSF9WQUxVRSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUXVpdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25VbmRlZmluZWQxKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSXNJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RWZmZWN0ZnVsNDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRpdHkoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TWFrZU1hc3F1ZXJhZGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxl
U3ludGF4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVz
ZXRTdXBlclNhbXBsZXJTdGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVBcnJheVN0b3JhZ2Uo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklM
RVIpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2Ft
cGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5n
UHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25B
c3luY1Rlc3RQYXNzZWQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1heEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RT
dGFydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3Nl
bWJseU1lbW9yeU1vZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNh
bXBsaW5nRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZXRSYW5kb21TZWVkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRSYW5kb21TZWVkKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1JvcGUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNhbGxlclNvdXJjZU9yaWdpbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckRldGFjaEFycmF5
QnVmZmVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
Y2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFNsZWVwKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudEJyb2FkY2FzdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmlu
ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Rmxhc2hIZWFwQWNjZXNzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8oRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRv
dGFsQ29tcGlsZVRpbWUoRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRv
bVNlZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25J
c1JvcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckNyZWF0ZVJlYWxtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBv
cnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJBZ2VudEJyb2FkY2FzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9y
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRNb25vdG9uaWNOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJlcG9ydChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25IZWFwQ2FwYWNpdHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhc2hIZWFw
QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNoU291cmNlSW5mbyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25NYWxsb2NJbkFMb29wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdHJ1Y3QgU2NyaXB0IHsKICAgICBlbnVtIGNsYXNz
IFN0cmljdE1vZGUgewpAQCAtNjE5LDcgKzYxOCw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIiQyNjIiKSwgZG9sbGFyKTsKICAgICAgICAgCiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCBkb2xsYXIsICJjcmVhdGVSZWFsbSIsIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVh
bG0sIDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZGV0YWNoQXJyYXlCdWZm
ZXIiLCBmdW5jdGlvbkRvbGxhckRldGFjaEFycmF5QnVmZmVyLCAxKTsKKyAgICAgICAgYWRkRnVu
Y3Rpb24odm0sIGRvbGxhciwgImRldGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFy
cmF5QnVmZmVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3Jp
cHQiLCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQsIDEpOwogICAgICAgICAKICAgICAgICAgZG9s
bGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9iYWwiKSwg
dGhpcyk7CkBAIC0xMjc0LDQ3ICsxMjczLDQ3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcmlu
dEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgRklMRSogb3V0KQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QcmludFN0ZE91dChFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIHByaW50SW50
ZXJuYWwoZXhlYywgc3Rkb3V0KTsgfQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50U3RkRXJyKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gcHJpbnRJbnRlcm5hbChl
eGVjLCBzdGRlcnIpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJp
bnRTdGRPdXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
cHJpbnRJbnRlcm5hbChjYWxsRnJhbWUsIHN0ZG91dCk7IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZEVycihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSB7IHJldHVybiBwcmludEludGVybmFsKGNhbGxGcmFtZSwgc3RkZXJyKTsgfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlYnVnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHZpZXdXaXRoU3Ry
aW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRoVW5kZXJseWlu
Z1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBhdXRvIHN0cmluZyA9IGNTdHJpbmdGcm9tVmlld1dpdGhTdHJpbmcoZXhlYywgc2Nv
cGUsIHZpZXdXaXRoU3RyaW5nKTsKKyAgICBhdXRvIHN0cmluZyA9IGNTdHJpbmdGcm9tVmlld1dp
dGhTdHJpbmcoY2FsbEZyYW1lLCBzY29wZSwgdmlld1dpdGhTdHJpbmcpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGZwcmludGYoc3RkZXJy
LCAiLS0+ICVzXG4iLCBzdHJpbmcuZGF0YSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRGVzY3JpYmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyh2bSwgdG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgdG9TdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2Ny
aWJlQXJyYXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRlc2NyaWJlQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisg
ICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNP
YmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRvU3RyaW5nKCI8QnV0
dGVyZmx5OiAiLCBSYXdQb2ludGVyKG9iamVjdC0+YnV0dGVyZmx5KCkpLCAiOyBwdWJsaWMgbGVu
Z3RoOiAiLCBvYmplY3QtPmdldEFycmF5TGVuZ3RoKCksICI7IHZlY3RvciBsZW5ndGg6ICIsIG9i
amVjdC0+Z2V0VmVjdG9yTGVuZ3RoKCksICI+IikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPj0gMSkgewotICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPj0gMSkgeworICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBzbGVlcChzZWNvbmRz
KTsKICAgICB9CkBAIC0xMzM5LDQ0ICsxMzM4LDQ0IEBAIGNsYXNzIEZ1bmN0aW9uSlNDU3RhY2tG
dW5jdG9yIHsKICAgICBTdHJpbmdCdWlsZGVyJiBtX3RyYWNlOwogfTsKIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgdHJhY2U7CiAgICAg
dHJhY2UuYXBwZW5kTGl0ZXJhbCgiLS0+IFN0YWNrIHRyYWNlOlxuIik7CiAKICAgICBGdW5jdGlv
bkpTQ1N0YWNrRnVuY3RvciBmdW5jdG9yKHRyYWNlKTsKLSAgICBleGVjLT5pdGVyYXRlKGZ1bmN0
b3IpOworICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzIiwgdHJhY2UudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAg
ICB2bS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZUFmdGVyTGFzdEZ1bGxD
b2xsZWN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZ1bGxHQyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRnVsbEdDKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHZtLmhlYXAuY29sbGVjdFN5bmMo
Q29sbGVjdGlvblNjb3BlOjpGdWxsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHZtLmhlYXAuc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZUFmdGVyTGFzdEVk
ZW5Db2xsZWN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkhlYXBTaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25IZWFwU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZSgpKSk7CiB9CkBAIC0xNDI3LDE0ICsxNDI2
LDE0IEBAIGNsYXNzIEpTQ01lbW9yeUZvb3RwcmludCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NNZW1vcnlGb290cHJpbnQ6OnNfaW5mbyA9IHsg
Ik1lbW9yeUZvb3RwcmludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNDTWVtb3J5Rm9vdHByaW50KSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290
cHJpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0NN
ZW1vcnlGb290cHJpbnQ6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0NNZW1vcnlGb290cHJpbnQ6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25SZXNldE1lbW9yeVBlYWsoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogICAgIE1lbW9yeUZvb3RwcmludDo6cmVzZXRQZWFrKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NDMsOSArMTQ0Miw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsoRXhlY1N0YXRlKikK
IC8vIFRoaXMgZnVuY3Rpb24gaXMgbm90IGdlbmVyYWxseSB2ZXJ5IGhlbHBmdWwgaW4gNjQtYml0
IGNvZGUgYXMgdGhlIHRhZyBhbmQgcGF5bG9hZAogLy8gc2hhcmUgYSByZWdpc3Rlci4gQnV0IGlu
IDMyLWJpdCBKSVRlZCBjb2RlIHRoZSB0YWcgbWF5IG5vdCBiZSBjaGVja2VkIGlmIGFuCiAvLyBv
cHRpbWl6YXRpb24gcmVtb3ZlcyB0eXBlIGNoZWNraW5nIHJlcXVpcmVtZW50cywgc3VjaCBhcyBp
biA9PT0uCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRy
ZXNzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAvLyBOZWVkIHRvIGNhc3Qg
dG8gdWludDY0X3Qgc28gYml0d2lzZV9jYXN0IHdpbGwgcGxheSBhbG9uZy4KQEAgLTE0NTQsMTU2
ICsxNDUzLDE1MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVz
c09mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEV4ZWNTdGF0ZSopCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopCiB7CiAgICAgLy8gV2UgbmVlZCB0aGlzIGZ1bmN0aW9uIGZvciBjb21wYXRp
YmlsaXR5IHdpdGggdGhlIE1vemlsbGEgSlMgdGVzdHMgYnV0IGZvciBub3cKICAgICAvLyB3ZSBk
b24ndCBhY3R1YWxseSBkbyBhbnkgdmVyc2lvbi1zcGVjaWZpYyBoYW5kbGluZwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBp
ZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwogCi0gICAg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4o
KSk7CisgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5n
PigpKTsKIAotICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgMCk7CisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KHJlYWxtLT5nbG9iYWxFeGVjKCksIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBhcnJheS0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KHJlYWxt
LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgfQotICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICByZWFsbS0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5h
a2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAg
ICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxl
TmFtZSkgfSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CisgICAgZXZhbHVhdGUo
cmVhbG0tPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgU291cmNlT3JpZ2luIHsgYWJz
b2x1dGVQYXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsK
ICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc2NvcGUsIGV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKHJlYWxtLT5nbG9iYWxFeGVjKCksIHNjb3BlLCBl
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BX
YXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIHJlYWxt
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKKyAg
ICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkocmVhbG0tPmdsb2JhbEV4ZWMo
KSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAg
ICBhcnJheS0+cHV0RGlyZWN0SW5kZXgocmVhbG0tPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXkp
OworICAgIHJlYWxtLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
cmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247
Ci0gICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3Vy
Y2UsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwor
ICAgIGV2YWx1YXRlKHJlYWxtLT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2UsIGNhbGxG
cmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CiAKICAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOworICAgICAgICBzY29wZS50aHJvd0V4Y2Vw
dGlvbihyZWFsbS0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZWFsbSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2Fk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmlu
ZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0
cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxG
aWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQg
bm90IG9wZW4gZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291
bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIAogICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VP
cmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9u
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2VDb2Rl
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJj
ZUNvZGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
IAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3Vy
Y2Uoc291cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBjYWxsRnJhbWUtPmNh
bGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAg
ICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVhZEZpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBpc0JpbmFyeSA9IGZhbHNlOwotICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgIFN0cmluZyB0eXBlID0gZXhlYy0+
YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID4gMSkgeworICAgICAgICBTdHJpbmcgdHlwZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICh0eXBlICE9ICJiaW5hcnki
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVk
ICdiaW5hcnknIGFzIHNlY29uZCBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkV4cGVjdGVkICdiaW5hcnknIGFzIHNlY29uZCBh
cmd1bWVudC4iKTsKICAgICAgICAgaXNCaW5hcnkgPSB0cnVlOwogICAgIH0KIAogICAgIFJlZlB0
cjxVaW50OEFycmF5PiBjb250ZW50ID0gZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxl
TmFtZSk7CiAgICAgaWYgKCFjb250ZW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKIAogICAg
IGlmICghaXNCaW5hcnkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5sZW5ndGgoKSkpKTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1
cmUoVHlwZVVpbnQ4KTsKICAgICBKU09iamVjdCogcmVzdWx0ID0gSlNVaW50OEFycmF5OjpjcmVh
dGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShjb250ZW50KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
aGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2hlY2tTeW50YXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFm
ZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKLQotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29w
ZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7CiAK
ICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgpOwpAQCAtMTYx
MywyNSArMTYwNywyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hl
Y2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBp
ZiAoIXZhbGlkU3ludGF4KQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgc3lu
dGF4RXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwg
c3ludGF4RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0
b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdT
KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3Mo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNl
dFNhbXBsaW5nRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKLSAgICAgICAgdW5zaWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgdW5z
aWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAoKGZsYWcgPj0gMSkg
JiYgKGZsYWcgPD0gMzIpKQogICAgICAgICAgICAgU2FtcGxpbmdGbGFnczo6c2V0RmxhZyhmbGFn
KTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFy
U2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkg
ewotICAgICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICB1bnNp
Z25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoaSkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICgoZmxhZyA+PSAxKSAm
JiAoZmxhZyA8PSAzMikpCiAgICAgICAgICAgICBTYW1wbGluZ0ZsYWdzOjpjbGVhckZsYWcoZmxh
Zyk7CiAgICAgfQpAQCAtMTYzOSw0MCArMTYzMyw0MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKIH0KICNl
bmRpZgogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFuZG9tU2Vl
ZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT53ZWFrUmFuZG9tKCkuc2VlZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihnbG9iYWxPYmplY3QtPndlYWtSYW5kb20oKS5zZWVkKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRvbVNlZWQoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRv
bVNlZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
dW5zaWduZWQgc2VlZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOworICAgIHVu
c2lnbmVkIHNlZWQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvVUludDMyKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWFrUmFuZG9tKCkuc2V0U2VlZChzZWVkKTsK
KyAgICBnbG9iYWxPYmplY3QtPndlYWtSYW5kb20oKS5zZXRTZWVkKHNlZWQpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Jc1JvcGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIWFyZ3VtZW50LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGZhbHNlKSk7CiAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IGFzU3RyaW5n
KGFyZ3VtZW50KS0+dHJ5R2V0VmFsdWVJbXBsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oIWltcGwpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNhbGxlclNvdXJjZU9yaWdpbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlclNvdXJjZU9yaWdpbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBTb3VyY2VPcmln
aW4gc291cmNlT3JpZ2luID0gc3RhdGUtPmNhbGxlclNvdXJjZU9yaWdpbigpOworICAgIFNvdXJj
ZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpOwog
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoc3Rh
dGUtPnZtKCksIHNvdXJjZU9yaWdpbi5zdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2VPcmlnaW4uc3RyaW5nKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFk
bGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZl
Y3RvcjxjaGFyLCAyNTY+IGxpbmU7CiAgICAgaW50IGM7CkBAIC0xNjgzLDYxICsxNjc3LDYxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGxpbmUuYXBwZW5kKGMpOwogICAgIH0KICAgICBsaW5lLmFwcGVuZCgn
XDAnKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCksIGxp
bmUuZGF0YSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxP
YmplY3QtPnZtKCksIGxpbmUuZGF0YSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25QcmVjaXNlVGltZShFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdhbGxUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHNldE5ldmVySW5saW5lKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHNldE5ldmVySW5saW5lKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9ERkcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlck9wdGlt
aXplKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldE5ldmVyT3B0aW1pemUo
Y2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25O
b0ZUTChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTm9GVEwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbihleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbihjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUpCiAgICAgICAgICAgICBl
eGVjdXRhYmxlLT5zZXROZXZlckZUTE9wdGltaXplKHRydWUpOwogICAgIH0KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2V0Q2Fubm90VXNlT1NSRXhpdEZ1enppbmcoZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2V0Q2Fubm90VXNlT1NSRXhpdEZ1enppbmcoY2FsbEZyYW1lKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGltaXplTmV4dEludm9j
YXRpb24oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShu
dW1iZXJPZkRGR0NvbXBpbGVzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlck9mREZHQ29tcGlsZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghT3B0
aW9uczo6dXNlQkJRVGllclVwQ2hlY2tzKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRydWUpKTsKIAogICAgIENhbGxlckZ1bmN0b3Igd2FzbVRvSlNGcmFtZTsK
LSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGV4ZWMsICZ2bSwgd2FzbVRvSlNGcmFtZSk7CisgICAg
U3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsICZ2bSwgd2FzbVRvSlNGcmFtZSk7CiAgICAg
aWYgKCF3YXNtVG9KU0ZyYW1lLmNhbGxlckZyYW1lKCktPmlzQW55V2FzbUNhbGxlZSgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiY2FsbGVyIGlzIG5vdCBhIHdh
c20tPmpzIGltcG9ydCBmdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJjYWxsZXIgaXMgbm90IGEgd2FzbS0+anMgaW1wb3J0IGZ1bmN0aW9u
Iik7CiAKICAgICAvLyBXZSBoYXZlIGEgd3JhcHBlciBmcmFtZSB0aGF0IHdlIGdlbmVyYXRlIGZv
ciBpbXBvcnRzLiBJZiB3ZSBldmVyIGNhbiBkaXJlY3QgY2FsbCBmcm9tIHdhc20gd2Ugd291bGQg
bmVlZCB0byBjaGFuZ2UgdGhpcy4KICAgICBBU1NFUlQoIXdhc21Ub0pTRnJhbWUuY2FsbGVyRnJh
bWUoKS0+Y2FsbGVlKCkuaXNXYXNtKCkpOwpAQCAtMTg2Miw0NSArMTg1Niw0MCBAQCBXb3JrZXJz
JiBXb3JrZXJzOjpzaW5nbGV0b24oKQogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckNyZWF0
ZVJlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgR2xvYmFsT2JqZWN0KiByZXN1bHQgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQtPmdldERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIiQiKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyRGV0YWNoQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQot
ewotICAgIHJldHVybiBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoZXhlYyk7Ci19Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJF
dmFsU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhl
Yyk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEdsb2JhbE9iamVjdCo+KHZtLAotICAgICAgICBleGVjLT50aGlzVmFsdWUoKS5n
ZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbCIpKSk7CisgICAgR2xv
YmFsT2JqZWN0KiByZWFsbSA9IGpzRHluYW1pY0Nhc3Q8R2xvYmFsT2JqZWN0Kj4odm0sCisgICAg
ICAgIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImdsb2JhbCIpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsICJFeHBlY3RlZCBnbG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zKSkp
OworICAgIGlmICghcmVhbG0pCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0
ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVjdCJfcykpKTsKICAgICAKICAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJj
ZUNvZGUsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKHJlYWxtLT5nbG9iYWxF
eGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdp
bigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlv
bkV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRp
b25FeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0
YXJ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJBZ2VudFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYykuaXNvbGF0ZWRDb3B5KCk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkuaXNvbGF0ZWRDb3B5KCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
CiAgICAgTG9jayBkaWRTdGFydExvY2s7CkBAIC0xOTQyLDE2ICsxOTMxLDE2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJv
YWRjYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBjYWxsYmFjayA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGNhbGxiYWNrLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgY2FsbGJhY2siX3MpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgY2FsbGJhY2siX3MpKSk7CiAg
ICAgCiAgICAgUmVmUHRyPE1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgewpAQCAtMTk2MSwyMiArMTk1
MCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRS
ZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgIAogICAgIGF1dG8gbmF0aXZlQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAg
ICAgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hh
cmluZ01vZGUoKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CisgICAgSlNBcnJheUJ1
ZmZlcioganNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikp
OwogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQo
anNCdWZmZXIpOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKG1lc3NhZ2UtPmluZGV4KCkpKTsK
ICAgICBpZiAoVU5MSUtFTFkoYXJncy5oYXNPdmVyZmxvd2VkKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgY2Fs
bGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxs
KGNhbGxGcmFtZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3Mp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHJlcG9ydCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyByZXBvcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgV29ya2Vyczo6c2luZ2xldG9uKCkucmVwb3J0
KHJlcG9ydCk7CkBAIC0xOTg0LDI5ICsxOTczLDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xlZXAoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xlZXAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIFNlY29uZHMgc2Vjb25kcyA9IFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwor
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIFNlY29u
ZHMgc2Vjb25kcyA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHNsZWVwKHNlY29uZHMpOwogICAgIH0K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50QnJvYWRjYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVm
ZmVyKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWpzQnVmZmVyIHx8ICFqc0J1ZmZlci0+aXNTaGFyZWQoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIFNoYXJlZEFycmF5QnVmZmVyIl9zKSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkV4cGVjdGVkIFNoYXJlZEFycmF5QnVmZmVyIl9zKSkp
OwogICAgIAotICAgIGludDMyX3QgaW5kZXggPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4
ZWMpOworICAgIGludDMyX3QgaW5kZXggPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvSW50MzIo
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICBXb3JrZXJzOjpzaW5nbGV0b24oKS5icm9hZGNhc3QoCkBAIC0yMDIx
LDkgKzIwMTAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRCcm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyBzdHJpbmcg
PSBXb3JrZXJzOjpzaW5nbGV0b24oKS50cnlHZXRSZXBvcnQoKTsKICAgICBpZiAoIXN0cmluZykK
QEAgLTIwMzIsMTkgKzIwMjEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBzdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhFeGVjU3RhdGUqKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRvbGxhckFnZW50TW9ub3RvbmljTm93KEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3coSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoTW9u
b3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJlcG9ydChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2Fp
dEZvclJlcG9ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICB7CkBAIC0yMDU3LDIwICsyMDQ2LDIwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBzdHJpbmcp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0
eShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SGVhcENhcGFjaXR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLmNhcGFjaXR5
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVh
cEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRmxhc2hIZWFwQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICAKICAgICBkb3VibGUgc2xlZXBUaW1lTXMgPSAwOwotICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPj0gMSkgewotICAgICAgICBzbGVlcFRpbWVNcyA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA+PSAxKSB7CisgICAgICAgIHNsZWVwVGltZU1zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b051bWJlcihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKQEAgLTIwODEsMTMgKzIwNzAsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNoU291cmNl
SW5mbyhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRp
c2FibGVSaWNoU291cmNlSW5mbyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAg
c3VwcG9ydHNSaWNoU291cmNlSW5mbyA9IGZhbHNlOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25NYWxsb2NJbkFMb29wKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7
CiAgICAgVmVjdG9yPHZvaWQqPiBwdHJzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA1
MDAwOyArK2kpCkBAIC0yMDk3LDcgKzIwODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKEpJVDo6dG90YWxDb21waWxlVGltZSgpLm1pbGxpc2Vjb25kcygpKSk7CkBAIC0y
MTE1LDEwICsyMTA0LDEwIEBAIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZnVuZGFt
ZW50YWw8VmFsdWVUeXBlPjo6dmFsdWU+Ojp0eXBlIGFkZE9wdGlvbihWCiAgICAgb3B0aW9uc09i
amVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU1ZhbHVlKHZhbHVlKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9wdGlvbnNPYmplY3QgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgSlNPYmplY3QqIG9wdGlvbnNPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxs
RnJhbWUpOwogI2RlZmluZSBSRUFEX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8s
IGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGFkZE9wdGlvbih2bSwgb3B0aW9u
c09iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWVfKSwgT3B0aW9uczo6bmFt
ZV8oKSk7CiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihSRUFEX09QVElPTikKQEAgLTIxMjYsMjkg
KzIxMTUsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ09wdGlv
bnMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9uc09i
amVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGlt
aXphdGlvblJldHJ5Q291bnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCi0gICAgQ29kZUJsb2Nr
KiBibG9jayA9IGdldFNvbWVCYXNlbGluZUNvZGVCbG9ja0ZvckZ1bmN0aW9uKGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBDb2RlQmxvY2sqIGJsb2NrID0gZ2V0U29tZUJhc2VsaW5lQ29kZUJsb2Nr
Rm9yRnVuY3Rpb24oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFibG9jaykKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSk7CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihibG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJh
bnNmZXJBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOworICAg
IGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3Io
Y2FsbEZyYW1lLCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CiAgICAgCi0gICAgSlNBcnJh
eUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5bmFtaWNDYXN0
PEpTQXJyYXlCdWZmZXIqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFi
dWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiX3Mp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVm
ZmVyIl9zKSkpOwogICAgIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgZHVtbXlDb250ZW50czsK
ICAgICBidWZmZXItPmltcGwoKS0+dHJhbnNmZXJUbyh2bSwgZHVtbXlDb250ZW50cyk7CkBAIC0y
MTU2LDE2ICsyMTQ1LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25U
cmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmFpbE5leHROZXdDb2RlQmxvY2soRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uc2V0RmFpbE5l
eHROZXdDb2RlQmxvY2soKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmNv
ZGVDYWNoZSgpLT53cml0ZSh2bSk7CiAKICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkBAIC0y
MTc2LDIzICsyMTY1LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25R
dWl0KEV4ZWNTdGF0ZSogZXhlYykKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRmFsc2UoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmFsc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZhbHNlKSk7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblVuZGVmaW5lZDEoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
VW5kZWZpbmVkMihFeGVjU3RhdGUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7IH0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRl
ZmluZWQxKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uVW5kZWZpbmVkMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopIHsgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbklzSW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7Ci0gICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoaSkuaXNJbnQzMigpKQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAg
ICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoaSkuaXNJbnQzMigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICB9CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFOKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT5hcmd1bWVudChpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoaSk7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAgICAgICAgIGRvdWJs
ZSBudW1iZXIgPSB2YWx1ZS5hc051bWJlcigpOwpAQCAtMjIwNCw0OSArMjE5Myw0OSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFOKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVudGl0eShFeGVjU3RhdGUqIGV4
ZWMpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKSk7IH0KK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVudGl0eShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkVmZmVjdGZ1bDQyKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRWZmZWN0ZnVsNDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoNDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KHZhbHVlKS0+aGFzQ3VzdG9tUHJv
cGVydGllcyhleGVjLT52bSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc09iamVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoZ2xvYmFsT2JqZWN0
LT52bSgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JB
bGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmR1bXBUeXBlUHJvZmlsZXJEYXRhKCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rh
c2tzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
dm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVh
c2VXZWFrUmVmcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgdm0uZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0aW9uKCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUq
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0ZhbHNlKSk7CkBA
IC0yMjU1LDM0ICsyMjQ0LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25JczMyQml0UGxhdGZvcm0oRXhlY1N0YXRlKikKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRh
eChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5z
dGFydCgpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgYm9vbCB2YWxpZFN5bnRheCA9
IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMsIGpzY1NvdXJjZShzb3VyY2UsIHsgfSwgVVJMKCksIFRl
eHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsK
KyAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoY2FsbEZyYW1lLCBqc2NT
b3VyY2Uoc291cmNlLCB7IH0sIFVSTCgpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpNb2R1bGUpLCBlcnJvcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICgh
dmFsaWRTeW50YXgpCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwgZXJyb3IubWVzc2FnZSgp
LCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBzY29wZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygiU3ludGF4RXJyb3I6ICIs
IGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU1RydWUpKTsKQEAgLTIyOTEsOSAr
MjI4MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1
cHBvcnRzU2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqCiAjZW5kaWYKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhl
YXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMzAxLDE0ICsyMjkwLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgc25hcHNob3RCdWlsZGVyLmJ1aWxkU25hcHNob3QoKTsKIAogICAg
IFN0cmluZyBqc29uU3RyaW5nID0gc25hcHNob3RCdWlsZGVyLmpzb24oKTsKLSAgICBFbmNvZGVk
SlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJp
bmcpKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBh
cnNlKGNhbGxGcmFtZSwganNvblN0cmluZykpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4
Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0
ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJpbmcganNvblN0cmluZzsK
QEAgLTIzMjQsNjYgKzIzMTMsNjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoRXhlY1N0YXQKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBqc29uU3RyaW5nKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEV4
ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBl
clNhbXBsZXJTdGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmVzZXRT
dXBlclNhbXBsZXJTdGF0ZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewot
ICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgZXhlYy0+YXJndW1lbnQoaSkpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
ICsraSkgeworICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudChpKSkpCiAgICAgICAgICAgICBvYmplY3Qt
PmVuc3VyZUFycmF5U3RvcmFnZSh2bSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVy
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
dGFydFNhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBTYW1wbGluZ1Byb2ZpbGVyJiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0u
ZW5zdXJlU2FtcGxpbmdQcm9maWxlcihXVEY6OlN0b3B3YXRjaDo6Y3JlYXRlKCkpOwogICAgIHNh
bXBsaW5nUHJvZmlsZXIubm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKCk7
CiAgICAgc2FtcGxpbmdQcm9maWxlci5zdGFydCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNl
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAo
IXZtLnNhbXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIlNhbXBsaW5nIHBy
b2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxG
cmFtZSwgIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIl9zKSkpOwogCiAgICAg
U3RyaW5nIGpzb25TdHJpbmcgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNK
U09OKCk7Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05Q
YXJzZShleGVjLCBqc29uU3RyaW5nKSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNW
YWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsKICAgICBzY29w
ZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1heEFyZ3VtZW50cyhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1heEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihKU0M6Om1heEFy
Z3VtZW50cykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5
bmNUZXN0U3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFudW1iZXJPZkFzeW5jUGFzc2VzLmlzVUludDMyKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBh
cmd1bWVudCB0byBiZSBhIHVpbnQzMiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGEgdWludDMy
Il9zKTsKIAogICAgIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzICs9IG51bWJlck9mQXN5bmNQYXNz
ZXMuYXNVSW50MzIoKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoRXhlY1N0
YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNz
ZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIGFzeW5jVGVzdFBhc3Nlcysr
OwogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTIzOTEsMzYgKzIzODAsMzYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3NlZChF
eGVjU3RhdGUqKQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldl
YkFzc2VtYmx5TWVtb3J5TW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgCiAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBz
aG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlvbiBpcyBzZXQi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
V2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2Vi
QXNzZW1ibHkgb3B0aW9uIGlzIHNldCJfcyk7CiAKLSAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CisgICAgaWYgKEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNZW1vcnkqPih2bSwgb2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIG1h
a2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CiAgICAgICAgIGlmIChhdXRvKiBp
bnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4odm0sIG9iamVj
dCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBtYWtl
U3RyaW5nKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgZXhwZWN0
cyBlaXRoZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkgb3IgV2ViQXNzZW1ibHkuSW5zdGFuY2UiX3Mp
OworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3Nl
bWJseU1lbW9yeU1vZGUgZXhwZWN0cyBlaXRoZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkgb3IgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UiX3MpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9i
amVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIW9iamVjdCB8fCAhb2Jq
ZWN0LT5pc0Z1bmN0aW9uKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c2V0VW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2sodm0sIG9iamVjdCk7CisgICAgZ2xvYmFsT2JqZWN0LT5zZXRVbmhhbmRs
ZWRSZWplY3Rpb25DYWxsYmFjayh2bSwgb2JqZWN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0yNjY2LDEzICsyNjU1LDEzIEBAIHN0YXRpYyB2
b2lkIHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGlu
ZSYgb3B0aW9ucywgYm9vCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4
Y2VwdGlvbigpOwogCi0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdWxmaWxsSGFuZGxlciA9IEpT
TmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwg
WyZzdWNjZXNzLCAmb3B0aW9ucywgaXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7Ci0gICAg
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywganNDYXN0PEdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGlzTGFzdEZpbGUsIGZhbHNlLCBleGVjLT5hcmd1
bWVudCgwKSwgb3B0aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdWxm
aWxsSGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcoKSwgWyZzdWNjZXNzLCAmb3B0aW9ucywgaXNMYXN0RmlsZV0oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKKyAgICAgICAgICAg
ICAgICBjaGVja0V4Y2VwdGlvbihjYWxsRnJhbWUsIGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpLCBpc0xhc3RGaWxlLCBmYWxzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgb3B0
aW9ucywgc3VjY2Vzcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBKU0Z1bmN0aW9u
KiByZWplY3RIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RGaWxlXShFeGVj
U3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihleGVjLCBqc0Nh
c3Q8R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgaXNMYXN0Rmls
ZSwgdHJ1ZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAg
ICAgSlNGdW5jdGlvbiogcmVqZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwgWyZzdWNjZXNzLCAmb3B0aW9ucywgaXNM
YXN0RmlsZV0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsKKyAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihjYWxsRnJhbWUsIGpzQ2FzdDxH
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCBpc0xhc3RGaWxlLCB0cnVlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAppbmRleCAyYjczNjAy
YTgzMmQwYWQ0YWZmNDY3YjY1MWY2M2IxMmIyZTZhNDZjLi4yYTNlNzVkYzRhN2Q4ZWVlNTBlZGFj
YzA2YzI3NzYxMjVhMWZkNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIG5hbWVzcGFjZSBMTEludCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBjMGIzMTYx
YTY4YjYxNWYyYjg0NTViZjBlZjVmMTc5MjNmN2YyOTM4Li4zNGU2NTE3N2Y3MGJlMDFhZTM5Yjk4
MTQ0OGQ2Yzk3NjViZjVmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHN0YXRpYyBTbG93UGF0aFJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNh
bGxlZSwKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7CiAgICAgICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAg
ICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJu
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0
KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRy
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLAogICAg
IGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgIGV4ZWND
YWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgdm0uaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CisgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+
Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwogICAgICAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGMyNGMyZDg2MWE2ZGU5ZWFi
ZTRmYTEyYmQ2ZjBiYTk3ODM4ZjU4NTQuLmFlNzhmNGE4YzVjMGFkZTY4NTg1ZWFkM2FjZGI0MzNh
ODhkMmI2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC0zMCw3ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggNjVmOTI0ZmJkNTA1NDgzZjIwMmUxMmY5YzQ1ZTQzNmViYzI0Y2M4MC4uZTRiOGU1MDI1
NTQwYzFkYWY2Nzk0YTI5NGRlOTRjODBkZjUzMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTI2
Miw3ICsyNjIsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgc3RvcmVwIHNwLCBW
TTo6dG9wQ2FsbEZyYW1lW3ZtXQogICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BFbnRyeUZyYW1lW3Zt
XQogCi0gICAgbWFrZUNhbGwoZW50cnksIHQzLCB0NCkKKyAgICBtYWtlQ2FsbChlbnRyeSwgcHJv
dG9DYWxsRnJhbWUsIHQzLCB0NCkKIAogICAgIGlmIEFSTXY3CiAgICAgICAgIHZtRW50cnlSZWNv
cmQoY2ZyLCB0MykKQEAgLTMxOSw3ICszMTksOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwp
CiAgICAgcmV0CiBlbmQKIAotbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1
bnVzZWQpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnks
IHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBD
U2l6ZSwgc3AKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wLCAweGJhZDBkYzAy
KQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0zMzEsMjQgKzMzMiwyOCBAQCBtYWNy
byBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKICAgICBzdWJwIENhbGxl
ckZyYW1lQW5kUENTaXplLCBzcAogZW5kCiAKLW1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVu
dHJ5LCB0ZW1wMSwgdGVtcDIpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSG9zdEZ1bmN0
aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICBtb3ZlIGVu
dHJ5LCB0ZW1wMQogICAgIHN0b3JlcCBjZnIsIFtzcF0KICAgICBpZiBDX0xPT1Agb3IgQ19MT09Q
X1dJTgotICAgICAgICBtb3ZlIHNwLCBhMAorICAgICAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6
Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICAgICAgbW92ZSBzcCwgYTEKICAg
ICAgICAgc3RvcmVwIGxyLCBQdHJTaXplW3NwXQogICAgICAgICBjbG9vcENhbGxOYXRpdmUgdGVt
cDEKICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgotICAgICAgICAjIFB1dCBjYWxsZWUgZnJhbWUg
cG9pbnRlciBvbiBzdGFjayBhcyBhcmcwLCBhbHNvIHB1dCBpdCBpbiBlY3ggZm9yICJmYXN0Y2Fs
bCIgdGFyZ2V0cworICAgICAgICAjIFB1dCBjYWxsZWUgZnJhbWUgcG9pbnRlciBvbiBzdGFjayBh
cyBhcmcxLCBhbHNvIHB1dCBpdCBpbiBlY3ggZm9yICJmYXN0Y2FsbCIgdGFyZ2V0cwogICAgICAg
ICBtb3ZlIDAsIHRlbXAyCiAgICAgICAgIG1vdmUgdGVtcDIsIDRbc3BdICMgcHV0IDAgaW4gUmV0
dXJuUEMKLSAgICAgICAgbW92ZSBzcCwgYTAgIyBhMCBpcyBlY3gKLSAgICAgICAgcHVzaCB0ZW1w
MiAjIFB1c2ggZHVtbXkgYXJnMQorICAgICAgICBtb3ZlIHNwLCBhMSAjIGExIGlzIGVkeAorICAg
ICAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwg
YTAKKyAgICAgICAgcHVzaCBhMQogICAgICAgICBwdXNoIGEwCiAgICAgICAgIGNhbGwgdGVtcDEK
ICAgICAgICAgYWRkcCA4LCBzcAogICAgIGVsc2UKLSAgICAgICAgbW92ZSBzcCwgYTAKKyAgICAg
ICAgbG9hZHAgUHJvdG9DYWxsRnJhbWU6Omdsb2JhbE9iamVjdFtwcm90b0NhbGxGcmFtZV0sIGEw
CisgICAgICAgIG1vdmUgc3AsIGExCiAgICAgICAgIGNhbGwgdGVtcDEKICAgICBlbmQKIGVuZApA
QCAtMTk5NywxMiArMjAwMiwxMyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRh
YmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQxCiAg
ICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZvb3Rl
cjo6bV92bVt0MV0sIHQzCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVbdDNd
Ci0gICAgICAgIG1vdmUgY2ZyLCBhMCAgIyBhMCA9IGVjeAotICAgICAgICBzdG9yZXAgYTAsIFtz
cF0KLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQotICAgICAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIGNm
ciwgYTEgICMgYTEgPSBlZHgKKyAgICAgICAgc3RvcmVwIGExLCBbc3BdCisgICAgICAgIGxvYWRp
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTAKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlv
bjo6bV9leGVjdXRhYmxlW2EwXSwgYTIKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9i
YWxPYmplY3RbYTBdLCBhMAogICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0Mywg
MHhkZWFkMDAwMSkKLSAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0K
KyAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0KICAgICAgICAgbG9h
ZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJs
b2NrTWFzaywgdDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJr
ZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKQEAgLTIwMjAsMTQgKzIwMjYsMTUgQEAgbWFj
cm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAg
ICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zv
b3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MQogICAgICAgICBz
dG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QxXQotICAgICAgICBtb3ZlIGNmciwgYTAKLSAg
ICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQotICAgICAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEK
KyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMAorICAgICAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbYTBdLCBhMgorICAgICAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJ
TgotICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
W3QxXQorICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uW2EyXQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uW3QxXQorICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlv
blthMl0KICAgICAgICAgZW5kCiAgICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDMKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCkBAIC0yMDY1LDExICsy
MDcyLDEyIEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1
bmN0aW9uKQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9hZHAg
TWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwg
dDMKICAgICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0M10KLSAgICAgICAgbW92
ZSBjZnIsIGEwICAjIGEwID0gZWN4Ci0gICAgICAgIHN0b3JlcCBhMCwgW3NwXQotICAgICAgICBs
b2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBh
MSAgIyBhMSA9IGVkeAorICAgICAgICBzdG9yZXAgYTEsIFtzcF0KKyAgICAgICAgbG9hZGkgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMgorICAgICAgICBsb2FkcCBJbnRlcm5hbEZ1bmN0
aW9uOjptX2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxp
Z25tZW50KHQzLCAweGRlYWQwMDAxKQotICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bdDFd
CisgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAgICAgICAgbG9hZHAgQ2FsbGVl
ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywg
dDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6
Rm9vdGVyOjptX3ZtW3QzXSwgdDMKQEAgLTIwODAsMTMgKzIwODgsMTQgQEAgbWFjcm8gaW50ZXJu
YWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgICAgIGFuZHAg
TWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNl
dCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MQogICAgICAgICBzdG9yZXAgY2Zy
LCBWTTo6dG9wQ2FsbEZyYW1lW3QxXQotICAgICAgICBtb3ZlIGNmciwgYTAKLSAgICAgICAgbG9h
ZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEK
KyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMgorICAgICAgICBs
b2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBpZiBDX0xP
T1Agb3IgQ19MT09QX1dJTgotICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9mZnNldE9mRnVu
Y3Rpb25bdDFdCisgICAgICAgICAgICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblth
Ml0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXQor
ICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgICAgICBlbmQKICAgICAg
ICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1h
cmtlZEJsb2NrTWFzaywgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggN2Y0ZWI4MzdmNzFlYTFmYjk1NzAxOWFk
M2UzMmFhN2Q3MWMzYzNhZi4uMWY4ZGJmYzYzZGEzNjcyNGI0YWEyNjhkZWNmYTAzYTZhMGRiNTNh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KQEAgLTI1NSw3ICsyNTUsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNh
bGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudChleHRyYVRlbXBSZWcsIDB4YmFk
MGRjMDIpCiAKLSAgICBtYWtlQ2FsbChlbnRyeSwgdDMsIHQ0KQorICAgIG1ha2VDYWxsKGVudHJ5
LCBwcm90b0NhbGxGcmFtZSwgdDMsIHQ0KQogCiAgICAgIyBXZSBtYXkgaGF2ZSBqdXN0IG1hZGUg
YSBjYWxsIGludG8gYSBKUyBmdW5jdGlvbiwgc28gd2UgY2FuJ3QgcmVseSBvbiBzcAogICAgICMg
Zm9yIGFueXRoaW5nIGJ1dCB0aGUgZmFjdCB0aGF0IG91ciBvd24gbG9jYWxzIChpZSB0aGUgVk1F
bnRyeVJlY29yZCkgYXJlCkBAIC0yOTcsNyArMjk3LDggQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VD
YWxsKQogZW5kCiAKIAotbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVz
ZWQpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHBy
b3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xP
T1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CkBAIC0z
MDcsMjAgKzMwOCwyMiBAQCBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVu
dXNlZCkKICAgICBzdWJwIDE2LCBzcAogZW5kCiAKLW1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxs
KGVudHJ5LCB0ZW1wLCB1bnVzZWQpCi0gICAgbW92ZSBlbnRyeSwgdGVtcAorIyBhMCwgYTIsIHQz
LCB0NAorbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0
ZW1wMSwgdGVtcDIpCisgICAgbW92ZSBlbnRyeSwgdGVtcDEKICAgICBzdG9yZXAgY2ZyLCBbc3Bd
Ci0gICAgbW92ZSBzcCwgYTAKKyAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0
W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICBtb3ZlIHNwLCBhMQogICAgIGlmIENfTE9PUCBvciBD
X0xPT1BfV0lOCiAgICAgICAgIHN0b3JlcCBsciwgOFtzcF0KLSAgICAgICAgY2xvb3BDYWxsTmF0
aXZlIHRlbXAKKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHRlbXAxCiAgICAgZWxzaWYgWDg2XzY0
X1dJTgogICAgICAgICAjIFdlIG5lZWQgdG8gYWxsb2NhdGUgMzIgYnl0ZXMgb24gdGhlIHN0YWNr
IGZvciB0aGUgc2hhZG93IHNwYWNlLgogICAgICAgICBzdWJwIDMyLCBzcAotICAgICAgICBjYWxs
IHRlbXAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgY2FsbCB0ZW1wMSwgSlNFbnRyeVB0clRhZwog
ICAgICAgICBhZGRwIDMyLCBzcAogICAgIGVsc2UKLSAgICAgICAgY2FsbCB0ZW1wLCBKU0VudHJ5
UHRyVGFnCisgICAgICAgIGNhbGwgdGVtcDEsIEpTRW50cnlQdHJUYWcKICAgICBlbmQKIGVuZAog
CkBAIC0yMTIzLDE5ICsyMTI2LDIwIEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Ag
b3IgQ19MT09QX1dJTgogICAgICAgICBzdG9yZXAgbHIsIFJldHVyblBDW2Nmcl0KICAgICBlbmQK
LSAgICBtb3ZlIGNmciwgYTAKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKLSAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgIG1vdmUgY2ZyLCBhMQorICAgIGxv
YWRwIENhbGxlZVtjZnJdLCBhMAorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVth
MF0sIGEyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTBdLCBhMAogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgIGlmIENfTE9P
UCBvciBDX0xPT1BfV0lOCi0gICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBleGVjdXRhYmxlT2Zmc2V0
VG9GdW5jdGlvblt0MV0KKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAgaWYgWDg2XzY0X1dJTgogICAgICAgICAg
ICAgc3VicCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rp
b25bdDFdLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAgICAgICAgYWRkcCAzMiwgc3AKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0
MV0sIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVu
Y3Rpb25bYTJdLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIGVuZAogICAgIGVuZAogCkBAIC0yMTYz
LDE4ICsyMTY3LDE5IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZz
ZXRPZkZ1bmN0aW9uKQogICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgQ19MT09Q
X1dJTgogICAgICAgICBzdG9yZXAgbHIsIFJldHVyblBDW2Nmcl0KICAgICBlbmQKLSAgICBtb3Zl
IGNmciwgYTAKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKKyAgICBtb3ZlIGNmciwgYTEKKyAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgYTIKKyAgICBsb2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjptX2ds
b2JhbE9iamVjdFthMl0sIGEwCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMsIDB4
ZGVhZDAwMDEpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgY2xvb3BDYWxs
TmF0aXZlIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBvZmZz
ZXRPZkZ1bmN0aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAgaWYgWDg2XzY0X1dJTgogICAgICAg
ICAgICAgc3VicCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0s
IEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0sIEpT
RW50cnlQdHJUYWcKICAgICAgICAgICAgIGFkZHAgMzIsIHNwCiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0sIEpTRW50cnlQdHJUYWcKKyAgICAgICAg
ICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0sIEpTRW50cnlQdHJUYWcKICAgICAgICAgZW5k
CiAgICAgZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKaW5kZXggMzlmZTZiYmZmNTY2YjkxNTliYTYzNzE5M2M2ODNhM2JjYzJkYzFlZS4u
Zjg5YmZlZGNlM2ZhZmY2MzU3NGM0MTViYmU5MzA1YWU2MGUyOTM5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTM2LDcgKzM2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNH
bG9iYWxPYmplY3Q7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBiOTJhNzYyYTQw
MDYyOTllYjdiNDU5ODA2NDAyYzk4YTA0YTFiOTU1Li44ZDAwOTA2MjQyZTg5ZmRlNTEzMTNjOTI5
ZjYxNTI5ZDAxMTM0NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtNTAsOCArNTAsOCBAQCBjb25zdCBDbGFzc0luZm8g
QXJyYXlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlv
bjo6c19pbgogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxBcnJheUNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3Rv
cikKQEAgLTg0LDExICs4NCw4IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWly
ayhFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIHByb2ZpbGUsIGds
b2JhbE9iamVjdCwgbiwgbmV3VGFyZ2V0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNBcnJheSog
Y29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCitzdGF0aWMgaW5saW5lIEpTQXJyYXkqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9i
amVjdCh2bSk7Ci0KICAgICAvLyBhIHNpbmdsZSBudW1lcmljIGFyZ3VtZW50IGRlbm90ZXMgdGhl
IGFycmF5IHNpemUgKCEpCiAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0
LCBhcmdzLmF0KDApLCBuZXdUYXJnZXQpOwpAQCAtOTcsMTYgKzk0LDE2IEBAIHN0YXRpYyBpbmxp
bmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIG51bGxwdHIsIGds
b2JhbE9iamVjdCwgYXJncywgbmV3VGFyZ2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFy
cmF5Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MsIGV4ZWMtPm5l
d1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MsIEpTVmFsdWUoKSkpOwor
ICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdz
LCBKU1ZhbHVlKCkpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0FycmF5U2xv
d0lubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0KiBwcm94eSkKQEAgLTE0MCwxMCAr
MTM3LDEwIEBAIGJvb2wgaXNBcnJheVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm94eU9iamVjdCog
YXJndW1lbnQpCiAKIC8vIEVTNiA3LjIuMgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtaXNhcnJheQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0
cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+dm0oKSwgZXhlYy0+
YXJndW1lbnQoMCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0Fy
cmF5U2xvd0lubGluZShleGVjLCBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSkpKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1p
Y0Nhc3Q8UHJveHlPYmplY3QqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0FycmF5U2xv
d0lubGluZShjYWxsRnJhbWUsIGpzQ2FzdDxQcm94eU9iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCA3NWFjNDU5
MjEzNjE0YTM2NTVmMDZmMmQ0ZTNiNDJjYzMwNzI2MzUwLi43NzIzM2FkZTdiMzlhZWQ1ZWU4ZjE2
YzA5ODAzOGIwMTE4YjJiYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEFycmF5Q29uc3Ry
dWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKIEpTQXJyYXkqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBwcm90b3R5cGUgPSBK
U1ZhbHVlKCkpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0
b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogYm9vbCBpc0FycmF5U2xvdyhFeGVjU3RhdGUqLCBQcm94
eU9iamVjdCogYXJndW1lbnQpOwogCiAvLyBFUzYgNy4yLjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlZGI3NjE5YjUxMGFjNjNj
NDE3ODg2NzIyMDQyYTkyMDRiMGYyNTIxLi43OTQ4NDIxYWE1ZWM3ZTU5ODJhNzBlMGRlOThiYjI4
MWQ0MGM0NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC00OCwxNyArNDgsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNK
b2luKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1BvcChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNM
YXN0SW5kZXhPZihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNQb3AoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJz
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
SW5kZXhPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3Rv
dHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTI2NywxNCArMjY3LDE0IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBK
U09iamVjdCo+IHNwZWNpZXNDb25zdHJ1CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQ6OkNyZWF0ZWRPYmplY3QsIG5ld09iamVjdCk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
cGVjaWVzQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwotICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKS5hc051bWJlcigpKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgdWludDY0X3Qg
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSkuYXNOdW1iZXIoKSk7CiAKLSAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3Vs
dCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGV4ZWMs
IG9iamVjdCwgbGVuZ3RoKTsKKyAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwg
SlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFt
ZSwgb2JqZWN0LCBsZW5ndGgpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRp
b24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpF
eGNlcHRpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVj
aWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
MjgyLDExICsyODIsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHNwZWNpZXNSZXN1bHQuc2Vjb25kKTsKIAogICAgIGlmIChsZW5ndGggPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRp
dmUgaW50ZWdlci4iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9z
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBu
dWxscHRyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSkpKTsKIH0KIAogc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEV4ZWNTdGF0
ZSogZXhlYywgaW50IGFyZ3VtZW50LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5l
ZFZhbHVlID0gMCkKQEAgLTU5MywxOSArNTkzLDE5IEBAIGlubGluZSBib29sIGNhblVzZURlZmF1
bHRBcnJheUpvaW5Gb3JUb1N0cmluZyhWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQogICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKICAgICAvLyAxLiBMZXQgYXJy
YXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBp
ZiAoIWNhblVzZURlZmF1bHRBcnJheUpvaW5Gb3JUb1N0cmluZyh2bSwgdGhpc09iamVjdCkpIHsK
ICAgICAgICAgLy8gMi4gTGV0IGZ1bmMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dl
dF1dIGludGVybmFsIG1ldGhvZCBvZiBhcnJheSB3aXRoIGFyZ3VtZW50ICJqb2luIi4KLSAgICAg
ICAgSlNWYWx1ZSBmdW5jdGlvbiA9IEpTVmFsdWUodGhpc09iamVjdCkuZ2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPmpvaW4pOworICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gSlNWYWx1ZSh0
aGlzT2JqZWN0KS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAg
ICAgLy8gMy4gSWYgSXNDYWxsYWJsZShmdW5jKSBpcyBmYWxzZSwgdGhlbiBsZXQgZnVuYyBiZSB0
aGUgc3RhbmRhcmQgYnVpbHQtaW4gbWV0aG9kIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKDE1
LjIuNC4yKS4KQEAgLTYxOCwxMSArNjE4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBj
dXN0b21Kb2luQ2FzZSA9IHRydWU7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGN1c3RvbUpvaW5D
YXNlKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKSk7CiAKICAgICAgICAg
Ly8gNC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwg
bWV0aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBl
bXB0eSBhcmd1bWVudHMgbGlzdC4KICAgICAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09iamVjdCkg
fHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ICE9IGFycmF5UHJvdG9GdW5jSm9pbikKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc09iamVjdCwgKnZtLmVtcHR5TGlzdCkpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSkpOwogICAg
IH0KIAogICAgIEFTU0VSVChpc0pTQXJyYXkodGhpc1ZhbHVlKSk7CkBAIC02MzAsNyArNjMwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNBcnJheS0+bGVuZ3Ro
KCk7CiAKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc0FycmF5
KTsKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzQXJy
YXkpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIu
ZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0g
Y2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZWFybHlSZXR1cm5WYWx1ZSk7CkBAIC02NDksNyArNjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgfQogCiAgICAgICAgIGJvb2wgc2F3SG9sZXMgPSBmYWxzZTsKLSAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBmYXN0Sm9pbigqZXhlYywgdGhpc0FycmF5LCB7ICZjb21tYSwgMSB9LCBsZW5n
dGgsICZzYXdIb2xlcyk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEpvaW4oKmNhbGxG
cmFtZSwgdGhpc0FycmF5LCB7ICZjb21tYSwgMSB9LCBsZW5ndGgsICZzYXdIb2xlcyk7CiAKICAg
ICAgICAgaWYgKCFzYXdIb2xlcyAmJiByZXN1bHQgJiYgaXNKU1N0cmluZyhyZXN1bHQpICYmIGlz
Q29XKSB7CiAgICAgICAgICAgICBBU1NFUlQoSlNJbW11dGFibGVCdXR0ZXJmbHk6OmZyb21CdXR0
ZXJmbHkodGhpc0FycmF5LT5idXR0ZXJmbHkoKSkgPT0gaW1tdXRhYmxlQnV0dGVyZmx5KTsKQEAg
LTY1OSw2OCArNjU5LDY4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICB9CiAKLSAgICBKU1N0cmluZ0pvaW5lciBqb2luZXIoKmV4ZWMs
ICcsJywgbGVuZ3RoKTsKKyAgICBKU1N0cmluZ0pvaW5lciBqb2luZXIoKmNhbGxGcmFtZSwgJywn
LCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIEpTVmFsdWUgZWxlbWVudCA9IHRoaXNBcnJheS0+dHJ5R2V0SW5kZXhRdWlja2x5KGkpOwog
ICAgICAgICBpZiAoIWVsZW1lbnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzQXJyYXkt
PmdldChleGVjLCBpKTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzQXJyYXktPmdldChjYWxs
RnJhbWUsIGkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgam9pbmVyLmFwcGVuZCgqZXhlYywgZWxl
bWVudCk7CisgICAgICAgIGpvaW5lci5hcHBlbmQoKmNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpvaW5lci5q
b2luKCpleGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpvaW5lci5qb2luKCpjYWxsRnJhbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2Fs
bEZyYW1lLCBTdHJpY3RNb2RlKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhp
c09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlz
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqZWN0
KTsKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2Vy
LmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9
IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgSlNTdHJpbmdKb2luZXIgc3RyaW5nSm9pbmVy
KCpleGVjLCAnLCcsIGxlbmd0aCk7CisgICAgSlNTdHJpbmdKb2luZXIgc3RyaW5nSm9pbmVyKCpj
YWxsRnJhbWUsICcsJywgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEFyZ0xpc3QgYXJndW1l
bnRzKGV4ZWMpOworICAgIEFyZ0xpc3QgYXJndW1lbnRzKGNhbGxGcmFtZSk7CiAjZW5kaWYKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1
ZSBlbGVtZW50ID0gdGhpc09iamVjdC0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIEpTVmFs
dWUgZWxlbWVudCA9IHRoaXNPYmplY3QtPmdldEluZGV4KGNhbGxGcmFtZSwgaSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBp
ZiAoZWxlbWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgZWxlbWVudCA9IGpz
RW1wdHlTdHJpbmcodm0pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFsdWUgY29u
dmVyc2lvbkZ1bmN0aW9uID0gZWxlbWVudC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9M
b2NhbGVTdHJpbmcpOworICAgICAgICAgICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBl
bGVtZW50LmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsK
ICAgICAgICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewogI2lmIEVOQUJM
RShJTlRMKQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25G
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGNhbGxGcmFtZSwgY29udmVyc2lvbkZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50cyk7CiAjZWxzZQotICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBlbGVtZW50LCAqdm0uZW1wdHlMaXN0KTsKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gY2FsbChjYWxsRnJhbWUsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBlbGVtZW50LCAqdm0uZW1wdHlMaXN0KTsKICNlbmRpZgogICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoKmV4ZWMsIGVsZW1lbnQp
OworICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKCpjYWxsRnJhbWUsIGVsZW1lbnQpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdHJpbmdK
b2luZXIuam9pbigqZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShzdHJpbmdKb2luZXIuam9pbigqY2FsbEZyYW1lKSkpOwogfQogCiBzdGF0aWMg
SlNWYWx1ZSBzbG93Sm9pbihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBK
U1N0cmluZyogc2VwYXJhdG9yLCB1aW50NjRfdCBsZW5ndGgpCkBAIC03NzEsMjggKzc3MSwyOCBA
QCBzdGF0aWMgSlNWYWx1ZSBzbG93Sm9pbihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1N0cmluZyogc2VwYXJhdAogICAgIHJldHVybiByOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/
IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2Fs
bEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iamVjdCk7CisgICAg
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2Vy
LmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJs
eVJldHVyblZhbHVlKTsKIAogICAgIC8vIDIuIExldCBsZW4gYmUgPyBUb0xlbmd0aCg/IEdldChP
LCAibGVuZ3RoIikpLgotICAgIGRvdWJsZSBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2Jq
ZWN0KTsKKyAgICBkb3VibGUgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIC8vIDMuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIGxldCBzZXBhcmF0b3IgYmUgdGhl
IHNpbmdsZS1lbGVtZW50IFN0cmluZyAiLCIuCi0gICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CiAgICAgICAgIGNvbnN0IExDaGFyIGNvbW1hID0gJywnOwogCkBAIC04MDIsMTE3ICs4MDIsMTE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKHZtLCBjb21tYSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3Qs
IGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3Qs
IGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVk
IHVuc2lnbmVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHVuc2lnbmVkTGVuZ3RoKSA9PSBsZW5ndGgpOwog
Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZhc3RK
b2luKCpleGVjLCB0aGlzT2JqZWN0LCB7ICZjb21tYSwgMSB9LCB1bnNpZ25lZExlbmd0aCkpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZmFzdEpv
aW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwgeyAmY29tbWEsIDEgfSwgdW5zaWduZWRMZW5ndGgp
KSk7CiAgICAgfQogCiAgICAgLy8gNC4gTGV0IHNlcCBiZSA/IFRvU3RyaW5nKHNlcGFyYXRvciku
Ci0gICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhl
Yyk7CisgICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmco
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkgfHwgIWNhblVzZUZhc3RKb2luKHRoaXNPYmplY3QpKSkgewogICAgICAg
ICB1aW50NjRfdCBsZW5ndGg2NCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpOwogICAg
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPihsZW5ndGg2NCkgPT0gbGVuZ3RoKTsKIAot
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9p
bigqZXhlYywgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqY2FsbEZy
YW1lLCB0aGlzT2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CiAgICAgfQogCi0gICAg
YXV0byB2aWV3V2l0aFN0cmluZyA9IGpzU2VwYXJhdG9yLT52aWV3V2l0aFVuZGVybHlpbmdTdHJp
bmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGpzU2VwYXJhdG9yLT52aWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpleGVjLCB0aGlzT2JqZWN0LCB2aWV3V2l0aFN0cmlu
Zy52aWV3LCBsZW5ndGgpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoZmFzdEpvaW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwgdmlld1dpdGhTdHJpbmcu
dmlldywgbGVuZ3RoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNQb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogCiAgICAgaWYgKGlz
SlNBcnJheSh0aGlzVmFsdWUpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChleGVjKSkpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1
ZSktPnBvcChjYWxsRnJhbWUpKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09i
amVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0
dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhl
YywgdGhpc09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0
aGlzT2JqKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGlmIChsZW5ndGggPT0gMCkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoKSk7Cisg
ICAgICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGgp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAxKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdldChjYWxsRnJhbWUsIGxlbmd0aCAtIDEp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGJvb2wgc3VjY2VzcyA9IHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpOworICAgIGJvb2wgc3VjY2VzcyA9IHRo
aXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGNh
bGxGcmFtZSwgbGVuZ3RoIC0gMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQ
cm9wZXJ0eUVycm9yKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpz
TnVtYmVyKGxlbmd0aCAtIDEpKTsKKyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09i
aiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1
c2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0
cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKIAotICAgIGlmIChMSUtFTFkoaXNKU0Fy
cmF5KHRoaXNWYWx1ZSkgJiYgZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CisgICAgaWYg
KExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBhcnJheS0+cHVzaElubGluZShleGVj
LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAgIGFycmF5LT5wdXNoSW5saW5l
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CiAgICAgfQog
ICAgIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUo
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgZm9yICh1bnNp
Z25lZCBuID0gMDsgbiA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgbisrKSB7CisgICAgZm9yICh1
bnNpZ25lZCBuID0gMDsgbiA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyBuKyspIHsKICAg
ICAgICAgLy8gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3c7IHdoZXJlIHNhZmUgd2UgY2FuIGRv
IGEgZmFzdCBwdXQgYnkgaW5kZXguCiAgICAgICAgIGlmIChsZW5ndGggKyBuID49IGxlbmd0aCkK
LSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCBsZW5ndGggKyBuLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgdHJ1ZSk7Cisg
ICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpc09iaiwg
Y2FsbEZyYW1lLCBsZW5ndGggKyBuLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0
cnVlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzT2JqKTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKLSAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOworICAgICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU1ZhbHVlKHN0
YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKSk7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2
bSktPnB1dCh0aGlzT2JqLCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudChuKSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIAotICAgIEpTVmFs
dWUgbmV3TGVuZ3RoKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxp
bnQ2NF90PihleGVjLT5hcmd1bWVudENvdW50KCkpKTsKKyAgICBKU1ZhbHVlIG5ld0xlbmd0aChz
dGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVu
Z3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCBuZXdMZW5ndGgpOworICAgIHB1dExlbmd0aChjYWxsRnJh
bWUsIHZtLCB0aGlzT2JqLCBuZXdMZW5ndGgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
bmV3TGVuZ3RoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB0aGlzT2JqZWN0LT5lbnN1cmVX
cml0YWJsZSh2bSk7CkBAIC05NTcsNDIgKzk1Nyw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWdu
ZWQgbWlkZGxlID0gbGVuZ3RoIC8gMjsKICAgICBmb3IgKHVuc2lnbmVkIGxvd2VyID0gMDsgbG93
ZXIgPCBtaWRkbGU7IGxvd2VyKyspIHsKICAgICAgICAgdW5zaWduZWQgdXBwZXIgPSBsZW5ndGgg
LSBsb3dlciAtIDE7Ci0gICAgICAgIGJvb2wgbG93ZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQ
cm9wZXJ0eShleGVjLCBsb3dlcik7CisgICAgICAgIGJvb2wgbG93ZXJFeGlzdHMgPSB0aGlzT2Jq
ZWN0LT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGxvd2VyKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWUgbG93ZXJW
YWx1ZTsKICAgICAgICAgaWYgKGxvd2VyRXhpc3RzKSB7Ci0gICAgICAgICAgICBsb3dlclZhbHVl
ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIGxvd2VyKTsKKyAgICAgICAgICAgIGxvd2VyVmFsdWUg
PSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCBsb3dlcik7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJvb2wgdXBwZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCB1cHBl
cik7CisgICAgICAgIGJvb2wgdXBwZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShj
YWxsRnJhbWUsIHVwcGVyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWUgdXBwZXJWYWx1ZTsKICAgICAgICAgaWYg
KHVwcGVyRXhpc3RzKSB7Ci0gICAgICAgICAgICB1cHBlclZhbHVlID0gdGhpc09iamVjdC0+Z2V0
KGV4ZWMsIHVwcGVyKTsKKyAgICAgICAgICAgIHVwcGVyVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQo
Y2FsbEZyYW1lLCB1cHBlcik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh1cHBlckV4aXN0
cykgewotICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0QnlJbmRleElubGluZShleGVjLCBsb3dl
ciwgdXBwZXJWYWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4
SW5saW5lKGNhbGxGcmFtZSwgbG93ZXIsIHVwcGVyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBsb3dlcik7Cisg
ICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIGxvd2VyKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewotICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobG93ZXJFeGlzdHMp
IHsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdXBwZXIs
IGxvd2VyVmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0QnlJbmRleElu
bGluZShjYWxsRnJhbWUsIHVwcGVyLCBsb3dlclZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgdXBwZXIpOworICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgY2FsbEZyYW1lLCB1cHBlcik7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBVbmFibGVUb0RlbGV0
ZVByb3BlcnR5RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDAwLDYxICsxMDAwLDYxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAobGVuZ3Ro
ID09IDApIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXRMZW5ndGgoZXhl
Yywgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOworICAgICAgICBwdXRMZW5ndGgoY2Fs
bEZyYW1lLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1
bHQgPSB0aGlzT2JqLT5nZXRJbmRleChleGVjLCAwKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRo
aXNPYmotPmdldEluZGV4KGNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNoaWZ0PihleGVjLCB0aGlzT2JqLCAwLCAxLCAwLCBsZW5ndGgpOworICAgIHNoaWZ0PEpTQXJy
YXk6OlNoaWZ0Q291bnRGb3JTaGlmdD4oY2FsbEZyYW1lLCB0aGlzT2JqLCAwLCAxLCAwLCBsZW5n
dGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpz
TnVtYmVyKGxlbmd0aCAtIDEpKTsKKyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09i
aiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Ns
aWNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1h
cnJheS5wcm90b3R5cGUuc2xpY2UKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAg
ICByZXR1cm4geyB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNP
YmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iaik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGJl
Z2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAwLCBsZW5ndGgp
OworICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVu
ZChjYWxsRnJhbWUsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9y
RW5kKGV4ZWMsIDEsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVu
dENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMSwgbGVuZ3RoLCBsZW5ndGgp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGVuZCA8IGJl
Z2luKQogICAgICAgICBlbmQgPSBiZWdpbjsKIAotICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3Ry
dWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJy
YXkoZXhlYywgdGhpc09iaiwgZW5kIC0gYmVnaW4pOworICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29u
c3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0
QXJyYXkoY2FsbEZyYW1lLCB0aGlzT2JqLCBlbmQgLSBiZWdpbik7CiAgICAgLy8gV2UgY2FuIG9u
bHkgZ2V0IGFuIGV4Y2VwdGlvbiBpZiB3ZSBjYWxsIHNvbWUgdXNlciBmdW5jdGlvbi4KICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmly
c3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKFVOTElL
RUxZKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0
aW9uKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBz
cGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYm
IGlzSlNBcnJheSh0aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7
CisgICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2ll
c0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxlbmd0
aCA9PSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKExJS0VMWShva1RvRG9GYXN0UGF0aCkpIHsKLSAgICAg
ICAgaWYgKEpTQXJyYXkqIHJlc3VsdCA9IGFzQXJyYXkodGhpc09iaiktPmZhc3RTbGljZSgqZXhl
YywgYmVnaW4sIGVuZCAtIGJlZ2luKSkKKyAgICAgICAgaWYgKEpTQXJyYXkqIHJlc3VsdCA9IGFz
QXJyYXkodGhpc09iaiktPmZhc3RTbGljZSgqY2FsbEZyYW1lLCBiZWdpbiwgZW5kIC0gYmVnaW4p
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApA
QCAtMTA2Miw3ICsxMDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJz
dCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICByZXN1
bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBlbmQgLSBiZWdpbik7CisgICAgICAg
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBlbmQgLSBi
ZWdpbik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQog
CkBAIC0xMDcyLDM0ICsxMDcyLDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNpZ25lZCBuID0gMDsK
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSBiZWdpbjsgayA8IGVuZDsgaysrLCBuKyspIHsKLSAgICAg
ICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayk7CisgICAgICAgIEpT
VmFsdWUgdiA9IGdldFByb3BlcnR5KGNhbGxGcmFtZSwgdGhpc09iaiwgayk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICh2KSB7Ci0gICAgICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG4sIHYsIDAsIFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJh
bWUsIG4sIHYsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCByZXN1bHQsIG4pOworICAgIHNl
dExlbmd0aChjYWxsRnJhbWUsIHZtLCByZXN1bHQsIG4pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDE1LjQuNC4xMgogCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmog
PSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhl
Yyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpIHsKLSAgICAgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpT
T2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlz
T2JqLCAwKTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAg
IHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1
bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCB0aGlzT2JqLCAwKTsKICAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVzUmVzdWx0
LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpFeGNlcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0x
MTA4LDIzICsxMTA4LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc3BlY2llc1Jlc3VsdC5m
aXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICAg
ICAgcmVzdWx0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCByZXN1bHQsIDApOwor
ICAgICAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCAwKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCBsZW5ndGgp
OworICAgICAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAotICAgIHVuc2ln
bmVkIGFjdHVhbFN0YXJ0ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVj
LCAwLCBsZW5ndGgpOworICAgIHVuc2lnbmVkIGFjdHVhbFN0YXJ0ID0gYXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZChjYWxsRnJhbWUsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB1bnNpZ25lZCBhY3R1
YWxEZWxldGVDb3VudCA9IGxlbmd0aCAtIGFjdHVhbFN0YXJ0OwotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgIGRvdWJsZSBkZWxldGVDb3VudCA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPiAxKSB7CisgICAgICAgIGRvdWJsZSBkZWxldGVDb3VudCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBp
ZiAoZGVsZXRlQ291bnQgPCAwKQogICAgICAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAwOwpA
QCAtMTEzNCw4MyArMTEzNCw4MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGFjdHVhbERlbGV0
ZUNvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbGV0ZUNvdW50KTsKICAgICB9CiAKLSAg
ICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVz
dWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIGFjdHVhbERlbGV0ZUNv
dW50KTsKKyAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBz
cGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhpc09iaiwg
YWN0dWFsRGVsZXRlQ291bnQpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRp
b24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpF
eGNlcHRpb24pKTsKICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3Ry
dWN0UmVzdWx0OjpFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gbnVsbHB0cjsKLSAgICBib29s
IG9rVG9Eb0Zhc3RQYXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0
UmVzdWx0OjpGYXN0UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVu
Z3RoKGV4ZWMsIHRoaXNPYmopOworICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVzUmVz
dWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNBcnJh
eSh0aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAo
TElLRUxZKG9rVG9Eb0Zhc3RQYXRoKSkKLSAgICAgICAgcmVzdWx0ID0gYXNBcnJheSh0aGlzT2Jq
KS0+ZmFzdFNsaWNlKCpleGVjLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQpOworICAg
ICAgICByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmNhbGxGcmFtZSwgYWN0
dWFsU3RhcnQsIGFjdHVhbERlbGV0ZUNvdW50KTsKIAogICAgIGlmICghcmVzdWx0KSB7CiAgICAg
ICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkNy
ZWF0ZWRPYmplY3QpCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGFjdHVhbERlbGV0ZUNv
dW50KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoVW5kZWNpZGVkKSwgYWN0dWFsRGVsZXRlQ291bnQpOwogICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsg
ayA8IGFjdHVhbERlbGV0ZUNvdW50OyArK2spIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdl
dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBhY3R1YWxTdGFydCk7CisgICAgICAgICAgICBK
U1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmosIGsgKyBhY3R1YWxTdGFy
dCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdikpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGssIHYsIDAs
IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChjYWxsRnJhbWUsIGssIHYsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB1bnNpZ25lZCBpdGVtQ291bnQgPSBzdGQ6Om1heDxp
bnQ+KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOworICAgIHVuc2lnbmVkIGl0ZW1Db3Vu
dCA9IHN0ZDo6bWF4PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKICAg
ICBpZiAoaXRlbUNvdW50IDwgYWN0dWFsRGVsZXRlQ291bnQpIHsKLSAgICAgICAgc2hpZnQ8SlNB
cnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oZXhlYywgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFj
dHVhbERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CisgICAgICAgIHNoaWZ0PEpTQXJy
YXk6OlNoaWZ0Q291bnRGb3JTcGxpY2U+KGNhbGxGcmFtZSwgdGhpc09iaiwgYWN0dWFsU3RhcnQs
IGFjdHVhbERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoaXRl
bUNvdW50ID4gYWN0dWFsRGVsZXRlQ291bnQpIHsKLSAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpT
aGlmdENvdW50Rm9yU3BsaWNlPihleGVjLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVs
ZXRlQ291bnQsIGl0ZW1Db3VudCwgbGVuZ3RoKTsKKyAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpT
aGlmdENvdW50Rm9yU3BsaWNlPihjYWxsRnJhbWUsIHRoaXNPYmosIGFjdHVhbFN0YXJ0LCBhY3R1
YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGl0ZW1Db3VudDsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmotPnB1dEJ5SW5k
ZXhJbmxpbmUoZXhlYywgayArIGFjdHVhbFN0YXJ0LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChr
ICsgMiksIHRydWUpOworICAgICAgICB0aGlzT2JqLT5wdXRCeUluZGV4SW5saW5lKGNhbGxGcmFt
ZSwgayArIGFjdHVhbFN0YXJ0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAyKSwg
dHJ1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIH0KICAgICAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgc2V0TGVuZ3RoKGV4
ZWMsIHZtLCB0aGlzT2JqLCBsZW5ndGggLSBhY3R1YWxEZWxldGVDb3VudCArIGl0ZW1Db3VudCk7
CisgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGxlbmd0aCAtIGFjdHVhbERl
bGV0ZUNvdW50ICsgaXRlbUNvdW50KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNo
aWZ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNVblNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICAvLyAxNS40LjQuMTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1l
LCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQo
ISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgZG91YmxlIGRvdWJs
ZUxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIGRvdWJsZSBkb3VibGVMZW5n
dGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGRvdWJsZUxlbmd0aDsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIHVuc2lnbmVkIG5yQXJncyA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsK
KyAgICB1bnNpZ25lZCBuckFyZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAobnJBcmdzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShkb3VibGVMZW5ndGggKyBzdGF0aWNf
Y2FzdDxkb3VibGU+KG5yQXJncykgPiBtYXhTYWZlSW50ZWdlcigpKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQ2Fubm90IHNoaWZ0IHRvIG9mZnNl
dCBncmVhdGVyIHRoYW4gKDIgKiogNTMpIC0gMSJfcyk7Ci0gICAgICAgIHVuc2hpZnQ8SlNBcnJh
eTo6U2hpZnRDb3VudEZvclNoaWZ0PihleGVjLCB0aGlzT2JqLCAwLCAwLCBuckFyZ3MsIGxlbmd0
aCk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiQ2Fubm90IHNoaWZ0IHRvIG9mZnNldCBncmVhdGVyIHRoYW4gKDIgKiogNTMpIC0gMSJfcyk7
CisgICAgICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNoaWZ0PihjYWxsRnJhbWUs
IHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBuckFyZ3M7ICsraykgewotICAgICAgICB0aGlzT2JqLT5wdXRCeUluZGV4SW5s
aW5lKGV4ZWMsIGssIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLCB0cnVlKTsKKyAgICAgICAg
dGhpc09iai0+cHV0QnlJbmRleElubGluZShjYWxsRnJhbWUsIGssIGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoayksIHRydWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihsZW5ndGggKyBuckFyZ3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgo
ZXhlYywgdm0sIHRoaXNPYmosIHJlc3VsdCk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0s
IHRoaXNPYmosIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCkBAIC0xMzE1LDM2ICsxMzE1LDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBmYXN0SW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNBcnJheSogYXJyYXksIHVuc2lnCiAgICAg
fQogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhP
ZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxG
cmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdG9MZW5ndGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9M
ZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CisgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMSwgbGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEpTVmFsdWUgc2VhcmNoRWxl
bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmplY3QpKSB7
Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6
Rm9yd2FyZD4oZXhlYywgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0aCwgc2VhcmNoRWxl
bWVudCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPEluZGV4
T2ZEaXJlY3Rpb246OkZvcndhcmQ+KGNhbGxGcmFtZSwgdm0sIGFzQXJyYXkodGhpc09iamVjdCks
IGxlbmd0aCwgc2VhcmNoRWxlbWVudCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGZvciAoOyBpbmRleCA8IGxl
bmd0aDsgKytpbmRleCkgewotICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShleGVjLCB0
aGlzT2JqZWN0LCBpbmRleCk7CisgICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGNhbGxG
cmFtZSwgdGhpc09iamVjdCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVu
dCwgZSk7CisgICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKGNhbGxG
cmFtZSwgc2VhcmNoRWxlbWVudCwgZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgICAgIGlmIChpc0VxdWFsKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOwpAQCAtMTM1MywyNCArMTM1MywyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZy
YW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xl
bmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNl
cHRpb24oKSkgfHwgIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcigtMSkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBsZW5ndGggLSAxOwotICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewotICAgICAgICBKU1ZhbHVlIGZyb21WYWx1ZSA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgICAgICBkb3VibGUgZnJvbURvdWJsZSA9
IGZyb21WYWx1ZS50b0ludGVnZXIoZXhlYyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpID49IDIpIHsKKyAgICAgICAgSlNWYWx1ZSBmcm9tVmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOworICAgICAgICBkb3VibGUgZnJvbURvdWJsZSA9IGZyb21WYWx1
ZS50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICAgICAgaWYgKGZyb21Eb3VibGUgPCAwKSB7CiAgICAgICAgICAgICBmcm9t
RG91YmxlICs9IGxlbmd0aDsKQEAgLTEzODEsMTAgKzEzODEsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21Eb3VibGUpOwog
ICAgIH0KIAotICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKICAg
ICBpZiAoaXNKU0FycmF5KHRoaXNPYmplY3QpKSB7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6QmFja3dhcmQ+KGV4ZWMsIHZtLCBhc0FycmF5
KHRoaXNPYmplY3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKKyAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBmYXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9uOjpCYWNrd2FyZD4oY2Fs
bEZyYW1lLCB2bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBp
bmRleCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAg
IGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMzkyLDExICsxMzkyLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBkbyB7CiAgICAg
ICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCk7Ci0gICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3Bl
cnR5KGV4ZWMsIHRoaXNPYmplY3QsIGluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJv
cGVydHkoY2FsbEZyYW1lLCB0aGlzT2JqZWN0LCBpbmRleCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBz
ZWFyY2hFbGVtZW50LCBlKTsKKyAgICAgICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoY2FsbEZyYW1lLCBzZWFyY2hFbGVtZW50LCBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKGlzRXF1YWwpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7CkBAIC0xNTAwLDEzICsxNTAw
LDEzIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5RWxlbWVudHMoVCogYnVmZmVyLCB1bnNpZ25l
ZCBvZmZzZXQsIHZvaWQqIHNvdXJjZSwgdW5zaWduCiAgICAgICAgIGNsZWFyRWxlbWVudDxUPihi
dWZmZXJbaSArIG9mZnNldF0pOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNBcnJheSogZmlyc3RBcnJheSA9IGpzQ2FzdDxKU0Fy
cmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTQXJyYXkqIGZpcnN0QXJy
YXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIAogICAgIC8vIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgbmVpdGhlciBhcnJheSBoYXMgc2V0
IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUuIElmIHRoZSBmaXJzdCBhcnJheQogICAgIC8vIGhh
cyBpbmRleGVkIGFjY2Vzc29ycyB0aGVuIG9uZSBvZiB0aG9zZSBhY2Nlc3NvcnMgbWlnaHQgY2hh
bmdlIHRoZSB2YWx1ZSBvZiBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlCkBAIC0xNTE1LDE0ICsx
NTE1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVG
dW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIHRoZSBzcGVjaWVz
IGNvbnN0cnVjdG9yIGhlcmUgc2luY2UgY2hlY2tpbmcgaXQgaW4gdGhlIEpTIHdyYXBwZXIgaXMg
dG9vIGV4cGVuc2l2ZSBmb3IgdGhlIG5vbi1vcHRpbWl6aW5nIHRpZXJzLgotICAgIGJvb2wgaXNW
YWxpZCA9IHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChleGVjLCBmaXJzdEFycmF5KTsKKyAgICBi
b29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoY2FsbEZyYW1lLCBmaXJzdEFy
cmF5KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIGlmIChVTkxJS0VMWSgh
aXNWYWxpZCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0g
ICAgSlNWYWx1ZSBzZWNvbmQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1Zh
bHVlIHNlY29uZCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgaWYgKCFp
c0pTQXJyYXkoc2Vjb25kKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25j
YXRBcHBlbmRPbmUoZXhlYywgdm0sIGZpcnN0QXJyYXksIHNlY29uZCkpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbmNhdEFwcGVuZE9uZShjYWxsRnJhbWUsIHZtLCBmaXJz
dEFycmF5LCBzZWNvbmQpKTsKIAogICAgIEpTQXJyYXkqIHNlY29uZEFycmF5ID0ganNDYXN0PEpT
QXJyYXkqPihzZWNvbmQpOwogICAgIApAQCAtMTUzNiw3ICsxNTM2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0
YXRlKiBleGVjKQogICAgIGNoZWNrZWRSZXN1bHRTaXplICs9IHNlY29uZEFycmF5U2l6ZTsKIAog
ICAgIGlmIChVTkxJS0VMWShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0g
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xNTQ1LDE0ICsxNTQ1LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBJbmRleGluZ1R5cGUgc2Vjb25kVHlwZSA9IHNlY29uZEFycmF5LT5p
bmRleGluZ1R5cGUoKTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0QXJyYXktPm1lcmdl
SW5kZXhpbmdUeXBlRm9yQ29weWluZyhzZWNvbmRUeXBlKTsKICAgICBpZiAodHlwZSA9PSBOb25B
cnJheSB8fCAhZmlyc3RBcnJheS0+Y2FuRmFzdENvcHkodm0sIHNlY29uZEFycmF5KSB8fCByZXN1
bHRTaXplID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgSlNBcnJheSogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCByZXN1bHRTaXplKTsKKyAg
ICAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51
bGxwdHIsIHJlc3VsdFNpemUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICBib29sIHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMo
ZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3RBcnJheSwgZmlyc3RBcnJheVNpemUpOworICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCAwLCBm
aXJzdEFycmF5LCBmaXJzdEFycmF5U2l6ZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nl
c3MpKQogICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgICAgIHN1Y2Nl
c3MgPSBtb3ZlRWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdCwgZmlyc3RBcnJheVNpemUsIHNlY29u
ZEFycmF5LCBzZWNvbmRBcnJheVNpemUpOworICAgICAgICBzdWNjZXNzID0gbW92ZUVsZW1lbnRz
KGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgZmlyc3RBcnJheVNpemUsIHNlY29uZEFycmF5LCBzZWNv
bmRBcnJheVNpemUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSA9PSBzdWNjZXNzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkKICAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTU2MCwxNiArMTU2MCwxNSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNw
eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVy
ZSA9IGxleGljYWxHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbih0eXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KHR5cGUpOwogICAgIGlmIChVTkxJS0VMWShoYXNBbnlBcnJheVN0b3JhZ2UocmVzdWx0U3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKIAotICAgIEFTU0VSVCghbGV4aWNhbEdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFk
VGltZSgpKTsKKyAgICBBU1NFUlQoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKTsK
ICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIGluaXRpYWxpemF0aW9uU2NvcGUodm0pOwog
ICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0
cmljdGVkKGluaXRpYWxpemF0aW9uU2NvcGUsIHJlc3VsdFN0cnVjdHVyZSwgcmVzdWx0U2l6ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBA
IC0xNTg4LDI0ICsxNTg3LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVt
Y3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMyk7CisgICAgQVNTRVJUKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDMpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQXJyYXkqIHJlc3VsdEFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNBcnJheSogb3Ro
ZXJBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwot
ICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOworICAg
IEpTQXJyYXkqIHJlc3VsdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0FycmF5KiBvdGhlckFycmF5ID0ganNDYXN0PEpTQXJy
YXkqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBKU1ZhbHVlIHN0YXJ0
VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIEFTU0VSVChzdGFy
dFZhbHVlLmlzVUludDMyQXNBbnlJbnQoKSk7CiAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHN0
YXJ0VmFsdWUuYXNVSW50MzJBc0FueUludCgpOwotICAgIGJvb2wgc3VjY2VzcyA9IHJlc3VsdEFy
cmF5LT5hcHBlbmRNZW1jcHkoZXhlYywgdm0sIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXkpOworICAg
IGJvb2wgc3VjY2VzcyA9IHJlc3VsdEFycmF5LT5hcHBlbmRNZW1jcHkoY2FsbEZyYW1lLCB2bSwg
c3RhcnRJbmRleCwgb3RoZXJBcnJheSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBtb3Zl
RWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdEFycmF5LCBzdGFydEluZGV4LCBvdGhlckFycmF5LCBv
dGhlckFycmF5LT5sZW5ndGgoKSk7CisgICAgbW92ZUVsZW1lbnRzKGNhbGxGcmFtZSwgdm0sIHJl
c3VsdEFycmF5LCBzdGFydEluZGV4LCBvdGhlckFycmF5LCBvdGhlckFycmF5LT5sZW5ndGgoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKaW5kZXggNzVhYzlk
MmFkNGFkYTZlMzgzYWZkOTQ4MDU1NGU0Zjg0NjZlODRmYi4uNmIyZGY2M2FlYmQxYjE2MDcyOGI1
NWI4MDRkMThmNjY3NTljN2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCkBAIC01MCwxMCArNTAsMTAgQEAgY2xhc3MgQXJyYXlQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1l
bWNweShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNU
b1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmND
b25jYXRNZW1jcHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYzc3OGEwMGM4OTBhOThhYzQyZWQwYWIwODBkOWY2NDcxMTkzYTdjMC4uN2I4
ZmFhYmQwM2M5ZWNkY2I1MTYzY2U2MzVhNDE2YjRlYTliYmVlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCkBAIC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpBc3luYykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhl
Yy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKKyAgICBB
cmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkFzeW5jKSk7CiB9CiAKIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA5YTM5Mzg3NmU4ZTM1MzFlYjI5
N2IyYTRjNTQyNmI1MDg3YjA4NTJkLi44ZjdhODJkMWQyMDU5NDM3YzJiYTYxYTYxMmExNmJmZTRj
MWIxN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDE2
ICszNiwxNiBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywg
anNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJh
dG9yKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpBc3luY0dlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3Ip
KTsKIH0KIAogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggMzY4
ZWE4ZmE2Y2NiOTc2ZTFjNTFkOGUwYjQ3NjU2ZmYyNTlkMzIwNi4uYTZkMDk3NDU3ZTk0MzkzMjMy
MjAwNDc2OWE5MmI5NTE0YTU5YzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEF0b21pY3NPYmplY3QpOwogICAgIG1hY3JvKHhvciwg
WG9yLCAzKQogCiAjZGVmaW5lIERFQ0xBUkVfRlVOQ19QUk9UTyhsb3dlck5hbWUsIHVwcGVyTmFt
ZSwgY291bnQpICAgICAgICAgICAgICAgICBcCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhdG9taWNzRnVuYyAjIyB1cHBlck5hbWUoRXhlY1N0YXRlKik7CisgICAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuYyAjIyB1cHBlck5hbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIEZPUl9FQUNIX0FUT01JQ1NfRlVOQyhERUNMQVJFX0ZVTkNfUFJP
VE8pCiAjdW5kZWYgREVDTEFSRV9GVU5DX1BST1RPCiAKQEAgLTE4NiwxMiArMTg2LDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU1ZhbHVlKiBhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci1FbmNv
ZGVkSlNWYWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZ1bmMmIGZ1bmMpCitFbmNvZGVkSlNWYWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgRnVu
YyYgZnVuYykKIHsKICAgICBKU1ZhbHVlIGFyZ3NbMiArIEZ1bmM6Om51bUV4dHJhQXJnc107CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMiArIEZ1bmM6Om51bUV4dHJhQXJnczsgaS0tOykKLSAgICAg
ICAgYXJnc1tpXSA9IGV4ZWMtPmFyZ3VtZW50KGkpOwotICAgIHJldHVybiBhdG9taWNPcGVyYXRp
b25XaXRoQXJncyhleGVjLT52bSgpLCBleGVjLCBhcmdzLCBmdW5jKTsKKyAgICAgICAgYXJnc1tp
XSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoaSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldp
dGhBcmdzKGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLCBhcmdzLCBmdW5jKTsKIH0KIAog
c3RydWN0IEFkZEZ1bmMgewpAQCAtMzEzLDgwICszMTMsODAgQEAgRW5jb2RlZEpTVmFsdWUgaXNM
b2NrRnJlZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJnKQogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0FkZChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5j
QWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBBZGRGdW5jKCkpOwor
ICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgQWRkRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNz
RnVuY0FuZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0
b21pY3NGdW5jQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBBbmRG
dW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgQW5kRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhdG9taWNzRnVuY0NvbXBhcmVFeGNoYW5nZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQ29tcGFyZUV4Y2hhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBh
dG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBDb21wYXJlRXhjaGFuZ2VGdW5jKCkpOworICAg
IHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwg
Q29tcGFyZUV4Y2hhbmdlRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhdG9taWNzRnVuY0V4Y2hhbmdlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmNFeGNoYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9u
V2l0aEFyZ3MoZXhlYywgRXhjaGFuZ2VGdW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRp
b25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgRXhjaGFuZ2VGdW5jKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jSXNMb2NrRnJlZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jSXNM
b2NrRnJlZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBpc0xvY2tGcmVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gaXNM
b2NrRnJlZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jTG9hZChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jTG9hZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRv
bWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgTG9hZEZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21p
Y09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBMb2FkRnVuYygpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY09yKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNPcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgT3JGdW5jKCkpOworICAgIHJldHVy
biBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgT3JGdW5j
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3RvcmUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVu
Y1N0b3JlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBTdG9yZUZ1bmMo
KSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCBTdG9yZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXRvbWljc0Z1bmNTdWIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhdG9taWNzRnVuY1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhl
YywgU3ViRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIFN1YkZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXRvbWljc0Z1bmNXYWl0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWl0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAgICBKU0ludDMyQXJyYXkqIHR5cGVkQXJyYXkgPSBq
c0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
SlNJbnQzMkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCF0eXBlZEFycmF5KSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2Fr
ZSBtdXN0IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCBiZSBhbiBJbnQz
MkFycmF5LiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgfQogICAgIAogICAgIGlmICghdHlwZWRBcnJheS0+aXNTaGFyZWQoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dh
a2UgbXVzdCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCB3
cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9
IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZtLCBleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgdHlwZWRB
cnJheSk7CisgICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRBY2Nlc3NJbmRleCh2
bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0eXBlZEFycmF5KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkp
OwogICAgIAogICAgIGludDMyX3QqIHB0ciA9IHR5cGVkQXJyYXktPnR5cGVkVmVjdG9yKCkgKyBh
Y2Nlc3NJbmRleDsKICAgICAKLSAgICBpbnQzMl90IGV4cGVjdGVkVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgyKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgZXhwZWN0ZWRWYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMikudG9JbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCi0gICAg
ZG91YmxlIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IGV4ZWMtPmFyZ3VtZW50KDMpLnRvTnVtYmVy
KGV4ZWMpOworICAgIGRvdWJsZSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDMpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAgICBpZiAoIXZt
Lm1fdHlwZWRBcnJheUNvbnRyb2xsZXItPmlzQXRvbWljc1dhaXRBbGxvd2VkT25DdXJyZW50VGhy
ZWFkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBdG9taWNzLndh
aXQgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQuIl9zKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0zOTgsNyArMzk4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dhaXQoRXhlY1N0
YXRlKiBleGVjKQogICAgIC8vICAgICBhLiBMZXQgcSBiZSA/IFRvTnVtYmVyKHRpbWVvdXQpLgog
ICAgIC8vICAgICBiLiBJZiBxIGlzIE5hTiB0aGVuIGxldCB0IGJlICtpbmYsIG90aGVyd2lzZSBs
ZXQgdCBiZSBtYXgoMCwgcSkuCiAgICAgLy8KLSAgICAvLyBleGVjLT5hcmd1bWVudCgzKSByZXR1
cm5zIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCBwcm92aWRlZCBhbmQgVG9OdW1iZXIodW5kZWZpbmVk
KSByZXR1cm5zIE5hTiwKKyAgICAvLyBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpIHJldHVybnMgdW5k
ZWZpbmVkIGlmIGl0J3Mgbm90IHByb3ZpZGVkIGFuZCBUb051bWJlcih1bmRlZmluZWQpIHJldHVy
bnMgTmFOLAogICAgIC8vIHNvIE5hTiBpcyB0aGUgb25seSBzcGVjaWFsIGNhc2UuCiAgICAgaWYg
KCFzdGQ6OmlzbmFuKHRpbWVvdXQpKQogICAgICAgICB0aW1lb3V0ID0gc3RkOjptYXgoMF9zLCB0
aW1lb3V0KTsKQEAgLTQyOCwzMSArNDI4LDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXRvbWljc0Z1bmNXYWl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJh
eSA9IGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsK
KyAgICBKU0ludDMyQXJyYXkqIHR5cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJh
eSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXR5cGVkQXJyYXkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2Fp
dC93YWtlIG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFu
IEludDMyQXJyYXkuIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCF0eXBlZEFycmF5LT5pc1NoYXJlZCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdh
aXQvd2FrZSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBt
dXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGFjY2Vzc0lu
ZGV4ID0gdmFsaWRhdGVkQWNjZXNzSW5kZXgodm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCB0
eXBlZEFycmF5KTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlkYXRlZEFjY2Vzc0lu
ZGV4KHZtLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHR5cGVkQXJyYXkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSk7CiAgICAgCiAgICAgaW50MzJfdCogcHRyID0gdHlwZWRBcnJheS0+dHlwZWRWZWN0b3Io
KSArIGFjY2Vzc0luZGV4OwogICAgIAotICAgIEpTVmFsdWUgY291bnRWYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDIpOworICAgIEpTVmFsdWUgY291bnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
Mik7CiAgICAgdW5zaWduZWQgY291bnQgPSBVSU5UX01BWDsKICAgICBpZiAoIWNvdW50VmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnQzMl90IGNvdW50SW50ID0gY291bnRWYWx1ZS50
b0ludDMyKGV4ZWMpOworICAgICAgICBpbnQzMl90IGNvdW50SW50ID0gY291bnRWYWx1ZS50b0lu
dDMyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgICAgIGNvdW50ID0gc3RkOjptYXgoMCwg
Y291bnRJbnQpOwogICAgIH0KQEAgLTQ2MCw5ICs0NjAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGF0b21pY3NGdW5jV2FrZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihQYXJraW5nTG90Ojp1bnBhcmtDb3VudChwdHIsIGNvdW50
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jWG9yKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNY
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIFhvckZ1bmMoKSk7Cisg
ICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBYb3JGdW5jKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkF0b21pY3NBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSBpbmRleCwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAppbmRleCAxOWEzMjVl
MmI0Y2EzNzViMTFjM2I1MWZmOTU4YTE2MDFlZGE5MjJjLi45YWE2NTg3YTExNzZhNzg3NmRhNjM2
Nzc3ZTYwZDcyMjVkM2M0NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25z
dHJ1Y3RvckZ1bmNBc1VpbnROKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNV
aW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC01Nyw3ICs1Nyw3IEBA
IGNvbnN0IENsYXNzSW5mbyBCaWdJbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmQmFzZTo6c19pbmZvLCAmYmlnSW50CiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogQmlnSW50Q29uc3RydWN0b3I6OkJpZ0ludENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxCaWdJbnRDb25zdHJ1Y3RvciwgbnVsbHB0cikKQEAg
LTExMCwxOCArMTEwLDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIH0pKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAKLSAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUg
cHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoc3RhdGUpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUu
dG9QcmltaXRpdmUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewogICAg
ICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCAiTm90IHNh
ZmUgaW50ZWdlciJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIk5vdCBzYWZlIGludGVnZXIi
X3MpKTsKICAgICAgICAgCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgaWYgKHBy
aW1pdGl2ZS5pc0ludDMyKCkpCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQog
ICAgIAotICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KCpzdGF0ZSwgcHJpbWl0
aXZlKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludCgqY2FsbEZyYW1lLCBw
cmltaXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBs
ZW1lbnQgQmlnSW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTQ0CkBAIC0xNDYsNyArMTQ2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnRO
KEV4ZWNTdGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50
TihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1
Y3RvckZ1bmNBc0ludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIC8vIEZJ
WE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQu
YXNVaW50TgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODExNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5
cGUuY3BwCmluZGV4IDRmMWUyNWE3MDdjMmViNjgxMWRmYWM4YTljN2E5YWI0ZmJjNDRmMjAuLmJh
MGNlNzM5MTcwMDM2ZjVjOTFiMzE1ZWUzMzQ4NDhhNTZhZGEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtNDEsOSArNDEs
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3Rv
RnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC05MCw0MiArOTAsNDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlz
VmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBK
U1ZhbHVlIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlzQmln
SW50VmFsdWUodm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSlNCaWdJbnQqIHZhbHVlID0g
dG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIid0
aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7Ci0gICAgCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiJ3RoaXMnIHZh
bHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKKwogICAgIEFTU0VSVCh2
YWx1ZSk7CiAKLSAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVu
dChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzY29wZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW50MzJfdCByYWRpeCA9IGV4dHJh
Y3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBzY29wZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFN0
cmluZyByZXN1bHRTdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmcoc3RhdGUsIHJhZGl4KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKGNhbGxGcmFtZSwgcmFkaXgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
IGlmIChyZXN1bHRTdHJpbmcubGVuZ3RoKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHJlc3VsdFN0cmlu
Z1swXSkpOworICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhyZXN1bHRTdHJpbmdbMF0pOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcodm0sIHJlc3VsdFN0cmluZykpOworICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIHJlc3VsdFN0cmluZyk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShi
aWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJ
bnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYmlnSW50UHJvdG9GdW5jVG9TdHJp
bmcoc3RhdGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9T
dHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwotICAgIGlmIChKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJ
bnRWYWx1ZSh2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgaWYgKEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSk7CiAgICAgCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIid0aGlzJyB2YWx1
ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmln
SW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAK
aW5kZXggNGViOTYwMDc3MGM2NGM0MjJmMTFlNDE1YmVkOGQ4OGY5ODg1Zjk4Mi4uNTk5Yjg4NTRl
OGY1YTlhNTEwOGFlZWMwMzA2ZmFiNDQ4ZDA2YjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCkBAIC0zMiwxOCArMzIs
MTggQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEJvb2xlYW5Db25z
dHJ1Y3Rvcik7CiBjb25zdCBDbGFzc0luZm8gQm9vbGVhbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoQm9vbGVhbkNvbnN0cnVjdG9yKSB9OwogCiAvLyBFQ01BIDE1LjYuMQotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQm9v
bGVhbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCku
dG9Cb29sZWFuKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKSkpOwogfQogCiAvLyBF
Q01BIDE1LjYuMgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIGJvb2xl
YW4gPSBqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKTsKLSAgICBT
dHJ1Y3R1cmUqIGJvb2xlYW5TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+Ym9vbGVhbk9iamVj
dFN0cnVjdHVyZSgpKTsKKyAgICBKU1ZhbHVlIGJvb2xlYW4gPSBqc0Jvb2xlYW4oY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKSk7CisgICAgU3RydWN0dXJlKiBib29s
ZWFuU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPmJvb2xlYW5P
YmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gQm9vbGVhbk9iamVjdDo6Y3Jl
YXRlKHZtLCBib29sZWFuU3RydWN0dXJlKTsKICAgICBvYmotPnNldEludGVybmFsVmFsdWUodm0s
IGJvb2xlYW4pOwpAQCAtNjIsOSArNjIsOSBAQCB2b2lkIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eQogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQogCi1KU09iamVjdCogY29uc3RydWN0Qm9vbGVhbkZyb21JbW1l
ZGlhdGVCb29sZWFuKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpbW1lZGlhdGVCb29sZWFuVmFsdWUpCitKU09iamVjdCogY29uc3RydWN0Qm9v
bGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW1tZWRpYXRlQm9vbGVhblZhbHVlKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEJvb2xl
YW5PYmplY3QqIG9iaiA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5i
b29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iai0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwg
aW1tZWRpYXRlQm9vbGVhblZhbHVlKTsKICAgICByZXR1cm4gb2JqOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCAwNmY5ZmQz
MGFkNTI3ODk4MGE1MzEyODQ3ZDM2YWYwNTZjMTI3OWM2Li4zZjliNWRmZGJmZDg1NGQ0NDFkN2I2
OTIxMDRhYzM3ODQ5NjM0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IH0KIApAQCAtNjUsMTEgKzY1LDExIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1Rv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9v
bGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJp
bmdzLmZhbHNlU3RyaW5nKCkpOwogCkBAIC03OCw3ICs3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJvb2xlYW5PYmplY3QqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKQEAgLTg3LDE3ICs4NywxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmlu
Z3MudHJ1ZVN0cmluZygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxCb29sZWFuT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCmluZGV4IDA4Zjc5ZGY0ZDY3
ODAxMzQ0NGE2YTYzOWFiNGZmYTQ5YWU3MWI1YTAuLmU5NzE0ODg1MmQwYjhlNjc0NTQ3OGVmZjky
MDUzM2E0YzViM2FmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhbGxEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEu
aApAQCAtMzMsMTIgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBBcmdMaXN0OwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwog
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Njb3Bl
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBlbnVtIGNsYXNzIENhbGxUeXBlIDog
dW5zaWduZWQgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGQ1ZDZmN2UyNDAwZGI3YzkwZWQxZjM2OWViZjgzMjc4
MjZkOTRhMWIuLjFmNzVjYjUwOWVhNjM1YWJlMjM3NTUxMDc1YTJhMTU0MjUyZTNiNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0z
MDYsNyArMzA2LDggQEAgaW5saW5lIEpTQXJyYXkqIGFsbG9jYXRlTmV3QXJyYXlCdWZmZXIoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNJbW11dGFibGUKIAogfSAvLyBuYW1lc3BhY2Ug
Q29tbW9uU2xvd1BhdGhzCiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3Vz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmlu
ZSBTTE9XX1BBVEgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApp
bmRleCBiMWU4ZTI5YjUwMmM3NzMwYjEzYjYzMGJjMzk3YmY5MTE2M2ViMzhhLi4yMTZkNjZkYzcx
OGNiMmZhOTUzNmQ5OWViNjk4MmUzOGI2YzZlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zMSwxNCArMzEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIEJ5dGVjb2RlQ2FjaGVFcnJvcjsKIGNsYXNzIENhY2hlZEJ5dGVjb2RlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
SlNPYmplY3Q7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBT
eW1ib2w7CiBjbGFzcyBWTTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBl
eGNlcHRpb24gPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVD
bGllbnQuaAppbmRleCAxOThlZmYzYTM2ZjIwYzE3NzE1NzM1ODIxNDYyZjEzODBlNzU1MTE1Li45
ODM4ZDk1MjgzZDA4MzdmNTE2N2ZlOTJiM2NlMTRlM2VhNmFmNmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oCkBAIC0zNCw3ICszNCw4IEBAIGNs
YXNzIFNjcmlwdEFyZ3VtZW50czsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xh
c3MgQ29uc29sZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCmluZGV4IDdmNGNmN2U0NjNmZWM5YjNkNTU2MTc2Y2Mz
NTNjYjhhYjAyMGQ4YjYuLjZhNzIxMzFmNjI2OTc3NmViMmVhZTk2OGNiZGFjNjBhYWYwNzNkZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
CkBAIC00OCwzMiArNDgsMzIgQEAgc3RhdGljIFN0cmluZyB2YWx1ZU9yRGVmYXVsdExhYmVsU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKENvbnNvbGVPYmplY3QpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jRGVidWcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0luZm8oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jRGlyWE1MKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RyYWNlKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2Vy
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNDb3VudChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jUHJvZmlsZUVuZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jVGltZUxvZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNHcm91cChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNSZWNvcmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1NjcmVlbnNob3QoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jRGVidWcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0xvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNXYXJuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1RyYWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jQ291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1By
b2ZpbGVFbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVM
b2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0dyb3VwRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jUmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hv
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gQ29uc29s
ZU9iamVjdDo6c19pbmZvID0geyAiQ29uc29sZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQ29uc29sZU9iamVjdCkgfTsKIApAQCAtMTI2LDMw
OSArMTI2LDMwOSBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbAogICAgIHJldHVybiB2YWx1ZS50
b1dURlN0cmluZyhleGVjKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbnNvbGVMb2dX
aXRoTGV2ZWwoRXhlY1N0YXRlKiBleGVjLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZUxldmVsIGxldmVsKQogewotICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29s
ZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29u
c29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5sb2dXaXRoTGV2ZWwoZXhlYywg
SW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCksIGxldmVsKTsKKyAgICBj
bGllbnQtPmxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJn
dW1lbnRzKGNhbGxGcmFtZSwgMCksIGxldmVsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jRGVidWcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjb25z
b2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6RGVidWcpOworICAgIHJldHVybiBj
b25zb2xlTG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6
OkRlYnVnKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dp
dGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkVycm9yKTsKKyAgICByZXR1cm4gY29uc29sZUxv
Z1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTWVzc2FnZUxldmVsOjpFcnJvcik7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNMb2coRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0xvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVj
LCBNZXNzYWdlTGV2ZWw6OkxvZyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6TG9nKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0luZm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVs
OjpJbmZvKTsKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgTWVzc2FnZUxldmVsOjpJbmZvKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpXYXJuaW5nKTsK
KyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25z
b2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNv
bGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Y2xlYXIoZXhlYyk7CisgICAgY2xp
ZW50LT5jbGVhcihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNEaXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25z
b2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBp
ZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIAotICAgIGNsaWVudC0+ZGlyKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1l
bnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmRpcihjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25z
b2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNv
bGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+ZGlyWE1MKGV4ZWMsIEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmRpclhNTChj
YWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jVGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50
ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQt
PnRhYmxlKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsK
KyAgICBjbGllbnQtPnRhYmxlKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1
bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1RyYWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGll
bnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAg
ICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIAotICAgIGNsaWVudC0+dHJhY2UoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRB
cmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dHJhY2UoY2FsbEZyYW1lLCBJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNBc3NlcnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVD
bGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVu
dCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNs
aWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYm9vbCBjb25kaXRpb24gPSBleGVjLT5hcmd1bWVudCgw
KS50b0Jvb2xlYW4oZXhlYyk7CisgICAgYm9vbCBjb25kaXRpb24gPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvQm9vbGVhbihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+YXNzZXJ0
aW9uKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAg
ICBjbGllbnQtPmFzc2VydGlvbihjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJn
dW1lbnRzKGNhbGxGcmFtZSwgMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNDb3VudChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGllbnQg
PSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gbGFi
ZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwgPSB2
YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPmNvdW50KGV4ZWMs
IGxhYmVsKTsKKyAgICBjbGllbnQtPmNvdW50KGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNDb3VudFJlc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZt
KCkpOwotICAgIGF1dG8qIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29u
c29sZUNsaWVudCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xl
Q2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJl
bFN0cmluZyhleGVjKTsKKyAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgY2xpZW50LT5jb3VudFJlc2V0KGV4ZWMsIGxhYmVsKTsKKyAgICBjbGll
bnQtPmNvdW50UmVzZXQoY2FsbEZyYW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwor
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgp
OwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCi0gICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQo
KTsKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAg
ICAgaWYgKCFhcmdzQ291bnQpIHsKLSAgICAgICAgY2xpZW50LT5wcm9maWxlKGV4ZWMsIFN0cmlu
ZygpKTsKKyAgICAgICAgY2xpZW50LT5wcm9maWxlKGNhbGxGcmFtZSwgU3RyaW5nKCkpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVj
ayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFs
dWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGNsaWVudC0+cHJvZmlsZShleGVjLCB0aXRsZSk7CisgICAgY2xpZW50
LT5wcm9maWxlKGNhbGxGcmFtZSwgdGl0bGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDb25zb2xlQ2xpZW50
KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsK
KyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQo
KTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50
KCk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwog
ICAgIGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJvZmlsZUVuZChleGVjLCBT
dHJpbmcoKSk7CisgICAgICAgIGNsaWVudC0+cHJvZmlsZUVuZChjYWxsRnJhbWUsIFN0cmluZygp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CiAKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnByb2ZpbGVFbmQoZXhlYywgdGl0bGUpOwor
ICAgIGNsaWVudC0+cHJvZmlsZUVuZChjYWxsRnJhbWUsIHRpdGxlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jVGFrZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBzaXplX3QgYXJnc0Nv
dW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoIWFyZ3NDb3VudCkgewotICAgICAgICBj
bGllbnQtPnRha2VIZWFwU25hcHNob3QoZXhlYywgU3RyaW5nKCkpOworICAgICAgICBjbGllbnQt
PnRha2VIZWFwU25hcHNob3QoY2FsbEZyYW1lLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5n
JiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKSk7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIHRpdGxlKTsKKyAgICBjbGllbnQtPnRh
a2VIZWFwU25hcHNob3QoY2FsbEZyYW1lLCB0aXRsZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRv
KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVu
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAg
IGF1dG8gbGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8g
bGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRp
bWUoZXhlYywgbGFiZWwpOworICAgIGNsaWVudC0+dGltZShjYWxsRnJhbWUsIGxhYmVsKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGltZUxvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNv
bnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29s
ZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFi
ZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGltZUxvZyhleGVjLCBsYWJlbCwgSW5zcGVjdG9yOjpj
cmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOworICAgIGNsaWVudC0+dGltZUxvZyhjYWxs
RnJhbWUsIGxhYmVsLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUs
IDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVu
ZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jVGltZUVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVj
dC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JE
ZWZhdWx0TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0
TGFiZWxTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGltZUVuZChleGVjLCBsYWJlbCk7Cisg
ICAgY2xpZW50LT50aW1lRW5kKGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXAoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFt
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmpl
Y3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+dGltZVN0YW1wKGV4
ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGll
bnQtPnRpbWVTdGFtcChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNHcm91cChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBjbGllbnQtPmdyb3VwKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1l
bnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpj
cmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91
cENvbGxhcHNlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBn
bG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Z3Jv
dXBDb2xsYXBzZWQoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywg
MCkpOworICAgIGNsaWVudC0+Z3JvdXBDb2xsYXBzZWQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29u
c29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+
Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cEVuZChleGVjLCBJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5n
cm91cEVuZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxG
cmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNS
ZWNvcmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1JlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNs
aWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAot
ICAgIGNsaWVudC0+cmVjb3JkKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnJlY29yZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNv
bnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3Qt
PmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+cmVjb3JkRW5kKGV4ZWMs
IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQt
PnJlY29yZEVuZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNh
bGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNTY3JlZW5zaG90KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNs
aWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAg
IENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwog
ICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgY2xpZW50LT5zY3JlZW5zaG90KGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnNjcmVlbnNob3QoY2FsbEZy
YW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggNTkzOGE5MGQ4OWY5
NmMzOTE1MTBlMDQzYzFhZDI1OTNmOTMxMDgwZC4uOTY3MzU4NTE0YjFkODMwNGU5MmJkYzY5MDNh
NGRjMGZiNWVlNDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0
cnVjdERhdGEuaApAQCAtMzUsMTAgKzM1LDExIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
QXJnTGlzdDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNTY29wZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RUeXBlIDogdW5zaWdu
ZWQgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAppbmRleCBmNmI4ZmVlMDZhN2JjZTIwMDU1YTM0OTc3ODRkYWYyNzli
ZjBkZWNmLi5mMGM1YjIwOTk5ZGM0ZTExYjVhMDZlYTI4NGI0NTIwZTFlM2M1ZTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAg
LTQ1LDggKzQ1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUGFyc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVVUQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIH0KIApAQCAtNjgsOCArNjksOCBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZgogCiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRGF0ZUNvbnN0cnVjdG9yKTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERhdGUoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSwgY2FsbERhdGUsIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3Ip
CkBAIC0xNTAsMzggKzE1MSw0MyBAQCBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbgogICAgIHJldHVy
biBEYXRlSW5zdGFuY2U6OmNyZWF0ZSh2bSwgZGF0ZVN0cnVjdHVyZSwgdmFsdWUpOwogfQogICAg
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVj
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdERhdGUoZXhlYywganNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMt
PnZtKCkpLCBleGVjLT5uZXdUYXJnZXQoKSwgYXJncykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxs
RnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RGF0ZShjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgYXJncykpOwogfQogCiAv
LyBFQ01BIDE1LjkuMgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERh
dGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbERhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBHcmVnb3JpYW5EYXRlVGltZSB0czsKICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUodm0s
IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBXVEY6
OkxvY2FsVGltZSwgdHMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCBmb3JtYXREYXRlVGltZSh0cywgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwg
ZmFsc2UpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBTdHJpbmcgZGF0
ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBk
YXRlU3RyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBhcnNlRGF0
ZShleGVjLCB2bSwgZGF0ZVN0cikpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGNhbGxGcmFtZSwgdm0sIGRhdGVTdHIp
KSkpOworfQorCitKU1ZhbHVlIGRhdGVOb3dJbXBsKCkKK3sKKyAgICByZXR1cm4ganNOdW1iZXIo
anNDdXJyZW50VGltZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
Tm93KEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoanNDdXJyZW50VGltZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqIGV4ZWMpIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlVVRDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgZG91YmxlIG1zID0gbWlsbGlzZWNvbmRzRnJvbUNvbXBvbmVudHMoZXhlYywgQXJnTGlzdChl
eGVjKSwgV1RGOjpVVENUaW1lKTsKKyAgICBkb3VibGUgbXMgPSBtaWxsaXNlY29uZHNGcm9tQ29t
cG9uZW50cyhjYWxsRnJhbWUsIEFyZ0xpc3QoY2FsbEZyYW1lKSwgV1RGOjpVVENUaW1lKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRpbWVDbGlwKG1zKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4
IGMxNjI1MGQzOTk3MjEzMWQzMjkzMGNkOWI0ZjAzMTZkM2QzNTA3ZjQuLmJlYzQwYTVjMzA4Zjgy
OTk0N2IyNjVkZjg0NzQzMTJhMzk1MjI4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01NCw3ICs1NCw2IEBAIGNsYXNzIERhdGVD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIH07CiAKIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBu
ZXdUYXJnZXQsIGNvbnN0IEFyZ0xpc3QmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlTm93KEV4ZWNTdGF0ZSopOworSlNWYWx1ZSBkYXRlTm93SW1wbCgpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKaW5kZXggMTg1MjJkMTAwNDRkZTEzYTUwMjljNjU3NjM0OTIwNTNjOWFiYzk3My4u
OTE3NzE2ZDFlMTY4MDg4OTcyNWUzNTVhMjM3ZjUxZWYwNjlkYmRmZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTcxLDUwICs3MSw1
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFy
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0SG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGlt
ZXpvbmVPZmZzZXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3VycyhF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZ
ZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0RGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldEZ1bGxZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaW51dGVzKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0
TW9udGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0hvdXJz
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
U2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTWludXRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dFllYXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb0RhdGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxl
VGltZVN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmlu
ZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvSVNPU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF5KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0TW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFRpbWV6b25lT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldEhvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29uZHMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldE1pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1vbnRoKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENE
YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
SG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
U2V0VVRDTWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
RGF0ZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC01MjUsMzEgKzUyNSwzMSBAQCB2b2lk
IERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIAogLy8gRnVuY3Rpb25zCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxz
ZTsKLSAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERh
dGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNl
KGNhbGxGcmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmco
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jVG9VVENTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBjb25zdCBib29sIGFzVVRDVmFyaWFudCA9IHRydWU7Ci0gICAgcmV0dXJuIGZvcm1hdGVE
YXRlSW5zdGFuY2UoZXhlYywgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50
KTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9y
bWF0RGF0ZUFuZFRpbWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgCiAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAiSW52YWxpZCBEYXRlIl9zKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJJbnZhbGlkIERhdGUiX3Mp
KTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0
ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nKCJJ
bnZhbGlkIERhdGUiX3MpKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVl
ZCBpbiBidWZmZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAqIDUgKDIgY2hhcmFjdGVy
cyBlYWNoIGZvciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCkgKyA0ICguICsgMyBk
aWdpdHMgZm9yIG1pbGxpc2Vjb25kcykKQEAgLTU3MywzMDYgKzU3MywzMDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyLCBjaGFyYWN0ZXJzV3JpdHRlbikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wg
YXNVVENWYXJpYW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhl
YywgRGF0ZVRpbWVGb3JtYXREYXRlLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRl
RGF0ZUluc3RhbmNlKGNhbGxGcmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlLCBhc1VUQ1ZhcmlhbnQp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVT
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jVG9UaW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKLSAgICByZXR1cm4g
Zm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdFRpbWUsIGFzVVRDVmFyaWFu
dCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRlVGltZUZv
cm1hdFRpbWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRo
aXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShjYWxsRnJhbWUsIHRoaXNEYXRl
T2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZUFuZFRpbWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVE
YXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJu
YWxOdW1iZXIoKSwgTG9jYWxlRGF0ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9y
bWF0TG9jYWxlRGF0ZShjYWxsRnJhbWUsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJu
YWxOdW1iZXIoKSwgTG9jYWxlRGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1p
Y0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0Rh
dGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGNhbGxGcmFtZSwgdGhpc0Rh
dGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3lt
Ym9sKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQg
fHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0g
ZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3Qg
YXJndW1lbnQuIik7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAot
ICAgIEpTVmFsdWUgaGludFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4
ZWMsIGhpbnRWYWx1ZSk7CisgICAgSlNWYWx1ZSBoaW50VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOworICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZShjYWxsRnJhbWUsIGhpbnRWYWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAodHlwZSA9PSBO
b1ByZWZlcmVuY2UpCiAgICAgICAgIHR5cGUgPSBQcmVmZXJTdHJpbmc7CiAKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5vcmRpbmFyeVRv
UHJpbWl0aXZlKGV4ZWMsIHR5cGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShjYWxsRnJhbWUs
IHR5cGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFRpbWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhp
c0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0
aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERh
dGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVP
YmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdy
ZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVn
b3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUp
OwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVn
b3JpYW5EYXRlVGltZS0+eWVhcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxG
cmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFu
Y2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0
ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBp
ZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0
ZVRpbWUtPm1vbnRoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBp
ZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0
ZVRpbWUtPm1vbnRoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
Z3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7
CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERh
eSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
dGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdv
cmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwor
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFu
RGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGhE
YXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXREYXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0RGF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0
ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3Qg
R3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT53ZWVrRGF5KCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFVUQ0RheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+d2Vla0RheSgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhv
dXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlz
RGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
KGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2Fz
dDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNE
YXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMo
Y2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRl
T2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5n
cmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1l
KTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3Jl
Z29yaWFuRGF0ZVRpbWUtPm1pbnV0ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRlcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERh
dGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVP
YmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdy
ZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBn
cmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxs
RnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdv
cmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdv
cmlhbkRhdGVUaW1lLT5zZWNvbmQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRl
SW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2Jq
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVn
b3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZy
YW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Z3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWlj
Q2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAog
ICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwogICAgIGlm
IChzdGQ6OmlzbmFuKG1pbGxpKSkKQEAgLTg4MywxNCArODgzLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtcykpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0
aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50
ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoc3RkOjppc25hbihtaWxsaSkpCkBAIC05MDEsMzEgKzkw
MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENN
aWxsaXNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIobXMpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5z
dGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLWdyZWdvcmlh
bkRhdGVUaW1lLT51dGNPZmZzZXQoKSAvIG1pbnV0ZXNQZXJIb3VyKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRpbWUoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0
PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0Rh
dGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAg
ZG91YmxlIG1pbGxpID0gdGltZUNsaXAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykp
OworICAgIGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9O
dW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsTnVtYmVyKG1pbGxpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1pbGxpKSk7CkBAIC0xMDE0LDg2
ICsxMDE0LDg2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJn
cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdW
YWx1ZUZyb21UaW1lQXJncyhleGVjLCAxLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNl
dE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMSwgV1RGOjpMb2NhbFRpbWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDEs
IFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxG
cmFtZSwgMSwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRTZWNvbmRzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVB
cmdzKGV4ZWMsIDIsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9t
VGltZUFyZ3MoY2FsbEZyYW1lLCAyLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vj
b25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAyLCBXVEY6OlVUQ1RpbWUpOworICAgIHJl
dHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6VVRDVGltZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbnV0
ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAzLCBXVEY6OkxvY2Fs
VGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMywg
V1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFy
Z3MoZXhlYywgMywgV1RGOjpVVENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGlt
ZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3VycyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21UaW1lQXJncyhleGVjLCA0LCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1Zh
bHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgNCwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENIb3VycyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRV
VENIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCA0LCBXVEY6OlVUQ1RpbWUpOworICAg
IHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDQsIFdURjo6VVRDVGlt
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldERh
dGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAxLCBXVEY6OkxvY2FsVGlt
ZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNhbGxGcmFtZSwgMSwgV1RG
OjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywg
MSwgV1RGOjpVVENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2Fs
bEZyYW1lLCAxLCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJn
cyhleGVjLCAyLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURh
dGVBcmdzKGNhbGxGcmFtZSwgMiwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXRO
ZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAyLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6VVRDVGltZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEZ1bGxZZWFyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDMsIFdURjo6TG9jYWxUaW1l
KTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6
OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdz
KGV4ZWMsIDMsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVB
cmdzKGNhbGxGcmFtZSwgMywgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSkgeyAKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
KSB7IAogICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxOdW1iZXIoUE5hTik7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgfQpAQCAtMTEwOSwxMSAr
MTEwOSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZ
ZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBlbHNlIHsKICAgICAgICAgZG91YmxlIHNlY3MgPSBm
bG9vcihtaWxsaSAvIG1zUGVyU2Vjb25kKTsKICAgICAgICAgbXMgPSBtaWxsaSAtIHNlY3MgKiBt
c1BlclNlY29uZDsKLSAgICAgICAgaWYgKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBvdGhlciA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKSkKKyAgICAgICAgaWYgKGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lKiBvdGhlciA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZShjYWxsRnJhbWUpKQogICAgICAgICAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUuY29weUZyb20oKm90
aGVyKTsKICAgICB9CiAKLSAgICBkb3VibGUgeWVhciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50
ZWdlclByZXNlcnZlTmFOKGV4ZWMpOworICAgIGRvdWJsZSB5ZWFyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghc3RkOjppc2Zpbml0
ZSh5ZWFyKSkgewogICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxOdW1iZXIoUE5hTik7
CkBAIC0xMTI3LDE2ICsxMTI3LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
KGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3Jl
Z29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7
CiAKQEAgLTExNDQsMjggKzExNDQsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpIC0gMTkwMCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9K
U09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9P
YmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50b1ByaW1pdGl2
ZShleGVjLCBQcmVmZXJOdW1iZXIpOworICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50
b1ByaW1pdGl2ZShjYWxsRnJhbWUsIFByZWZlck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKHRpbWVWYWx1ZS5pc051bWJl
cigpICYmICFzdGQ6OmlzZmluaXRlKHRpbWVWYWx1ZS5hc051bWJlcigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBKU1ZhbHVlIHRvSVNPVmFsdWUg
PSBvYmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0lTT1N0cmluZyk7CisgICAg
SlNWYWx1ZSB0b0lTT1ZhbHVlID0gb2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b0lTT1N0cmluZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKHZtLCB0b0lTT1ZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgInRvSVNPU3RyaW5n
IGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVj
LCBhc09iamVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsICp2bS5l
bXB0eUxpc3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGFzT2JqZWN0
KHRvSVNPVmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCmluZGV4IDAwYmUyNjZmNWMzOGE2MzU1MjZlYjQ2
MTkzOWI2NTBhZjdiZjlkNzMuLmNhYzVhYjVlZGI2YzI0NDdkMTM1Y2JhN2JmN2E2NDYxNGNhMTFm
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgK
QEAgLTUyLDYgKzUyLDYgQEAgY2xhc3MgRGF0ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFRpbWUoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAppbmRleCBiMzA0NjYwNTlh
ZTY1NTNkN2RmNWJiZjE5N2VjZWIwNjJlZTJjMmEwLi41Y2ZiZmJmY2JkZjYwZWI3ZTZkNzFmZWE2
OGVkNWUyM2ZjOThjMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcApAQCAt
MzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBib29sIGlzQ29uc3RydWN0
b3IgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9yKGV4ZWMtPnZtKCkp
OworICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkuaXNDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGlzQ29uc3RydWN0b3IpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5oCmluZGV4IDgwOGQ3Zjg4M2JmZjQ5YjU4Y2ZkYmU1ZDcyYzE0NjExNTNiN2Iy
ZmMuLmI2YTFjZWM3Y2IxM2EyYWI2OWRkOGQzMjhmM2IxODgzNjVkMjMzMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5j
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmgKQEAgLTI5LDYgKzI5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGMwNGJjNTVjZTNjYTU0YWI5M2Rm
OTk0M2IzNmU2NDIxZmUyMmYyNjQuLjdiOGQ1MjFjMmI5MTE2ZmYyMGYwYWI4ZTAxMTE1M2FjYTNm
NTYwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMzMsMTIgKzMz
LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7
CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU3RydWN0dXJlOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogCiAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCiBKU09iamVjdCogY3JlYXRlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5k
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAppbmRleCBkYTY5MTE2YjQ2NDY2NTdjODg3Y2I1ZDI4OWM1NDJlODc4MmYwYmVlLi4z
ZWM2Mzc3NmM5MDkwMDUyZDY5NmFjZGE5NjllMTkwMDE1Njc2NGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzMsOCAr
MzMsOCBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRXJyb3JDb25z
dHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoRXJyb3JDb25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEVycm9yQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwg
c3RydWN0dXJlLCBjYWxsRXJyb3JDb25zdHJ1Y3RvciwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rv
cikKQEAgLTQ3LDI2ICs0NywyNiBAQCB2b2lkIEVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQogICAgIC8vIEVDTUEg
MTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VM
aW1pdCwganNOdW1iZXIoZ2xvYmFsT2JqZWN0KHZtKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVP
cihPcHRpb25zOjpkZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051bWJl
cihnbG9iYWxPYmplY3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVPcihPcHRpb25zOjpkZWZh
dWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6Ok5vbmUpKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5nbG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZSgpKTsKKyAgICBKU1ZhbHVlIG1l
c3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90
aGluZywgZmFsc2UpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1l
c3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFs
dWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1
Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoZXhlYy0+dm0oKSktPmVycm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1l
c3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVzc2Fn
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBt
ZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogYm9vbCBFcnJvckNv
bnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAg
LTc5LDkgKzc5LDkgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICAgICAgICAgIGRvdWJs
ZSBlZmZlY3RpdmVMaW1pdCA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgICAgICBlZmZlY3Rp
dmVMaW1pdCA9IHN0ZDo6bWF4KDAuLCBlZmZlY3RpdmVMaW1pdCk7CiAgICAgICAgICAgICBlZmZl
Y3RpdmVMaW1pdCA9IHN0ZDo6bWluKGVmZmVjdGl2ZUxpbWl0LCBzdGF0aWNfY2FzdDxkb3VibGU+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwotICAgICAgICAgICAgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlZmZlY3RpdmVMaW1pdCkpOworICAgICAgICAgICAgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWZm
ZWN0aXZlTGltaXQpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3Qodm0pLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RG
OjpudWxsb3B0KTsKICAgICB9CiAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtOTMsNyArOTMsNyBAQCBib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbQogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCi0gICAgICAgIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCh2bSktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAg
ICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVs
bG9wdCk7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCA5MjJjZjRjMzZjYjZhYjU5MGM5OGU5ZjcwMTgwYWQz
NjUwODk2YWZiLi42MWM0ZjQxYTBmYTM4MDNjMTRkMGZjNGZjYWQxZjAwMDc5MTIwZjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoRXJyb3JQcm90b3R5cGUpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTcxLDI3ICs3MSwyNyBAQCB2
b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0cmluZyYg
bmFtZSkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEtMjYyIDUuMSwgMTUuMTEuNC40Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogCiAgICAgLy8gMi4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICBKU09iamVjdCogdGhpc09i
aiA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IHJlY3Vyc2lv
biEKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iaik7Cisg
ICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwgdGhpc09iaik7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2Vy
LmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJs
eVJldHVyblZhbHVlKTsKIAogICAgIC8vIDMuIExldCBuYW1lIGJlIHRoZSByZXN1bHQgb2YgY2Fs
bGluZyB0aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50ICJuYW1l
Ii4KLSAgICBKU1ZhbHVlIG5hbWUgPSB0aGlzT2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSk7CisgICAgSlNWYWx1ZSBuYW1lID0gdGhpc09iai0+Z2V0KGNhbGxGcmFtZSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA0LiBJZiBuYW1lIGlzIHVuZGVmaW5lZCwgdGhlbiBs
ZXQgbmFtZSBiZSAiRXJyb3IiOyBlbHNlIGxldCBuYW1lIGJlIFRvU3RyaW5nKG5hbWUpLgpAQCAt
OTksMTIgKzk5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKG5hbWUuaXNVbmRlZmluZWQoKSkK
ICAgICAgICAgbmFtZVN0cmluZyA9ICJFcnJvciJfczsKICAgICBlbHNlIHsKLSAgICAgICAgbmFt
ZVN0cmluZyA9IG5hbWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIG5hbWVTdHJpbmcgPSBu
YW1lLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIC8vIDUuIExldCBtc2cgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldF1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdp
dGggYXJndW1lbnQgIm1lc3NhZ2UiLgotICAgIEpTVmFsdWUgbWVzc2FnZSA9IHRoaXNPYmotPmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2Ug
PSB0aGlzT2JqLT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8v
IChzaWMpCkBAIC0xMTQsNyArMTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobWVzc2FnZS5p
c1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVy
cm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5hbWUuaXNTdHJpbmcoKSA/IG5hbWUgOiBqc1N0cmluZyh2bSwgbmFtZVN0
cmluZykpOwogCiAgICAgLy8gMTAuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNvbmNhdGVuYXRpbmcg
bmFtZSwgIjoiLCBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIsIGFuZCBtc2cuCi0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBuYW1lU3RyaW5nLCAiOiAiLCBtZXNzYWdlU3RyaW5nKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
Y2FsbEZyYW1lLCBuYW1lU3RyaW5nLCAiOiAiLCBtZXNzYWdlU3RyaW5nKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkZ1enouaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkZ1enouaAppbmRleCBjNjk0YjU3NjZjNDBlMTIwOWI3NDY3MDZmYjcyNjI4Yjc3NGUyMWIwLi5k
MThmOWE3NDU0Njc0Y2Y3ZTEwNDVmZTM0NjA5Njk3YTQ3ZWUxN2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCkBAIC0yOSw4ICsyOSw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBUaHJvd1Njb3BlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBDYWxs
IHRoaXMgb25seSBpZiB5b3Uga25vdyB0aGF0IGV4Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQu
CiB2b2lkIGRvRXhjZXB0aW9uRnV6emluZyhFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3Qg
Y2hhciogd2hlcmUsIGNvbnN0IHZvaWQqIHJldHVyblBDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDhiY2Nj
ZGE4YmVkNjk3MDNlZjIwMGZhZGY1Y2I2ZGJlMDBjNTY3Ni4uNmNmYzRiZWUzMDQ2ZmY4OTFlMzY3
MTRkOWRiNzI3MmYwNDk0ZWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDE3ICszOCwxNyBAQCBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7
CiAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1bmN0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAg
IEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6RnVuY3Rpb24sIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAog
Ly8gRUNNQSAxNS4zLjEgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yIENhbGxlZCBhcyBhIEZ1bmN0
aW9uCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0o
KSksIGFyZ3MpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBh
cmdzKSk7CiB9CiAKIEZ1bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4OSw3ICsxODksNyBAQCBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAvLyBFQ01BIDE1LjMu
MiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGUsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cywg
ZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCksIFN0cmluZygpLCBUZXh0UG9zaXRpb24oKSwgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBuZXdUYXJnZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggOTYxOWMw
MGYxMjI0OThkMDE2YmJkZGUwOTk3M2JlYzVhYTQzNWViMi4uMjUyNjBkOTkzNjliOTQ1MjA5OGYw
MzAwM2M0ZDVkNmE2NDVmYzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBAIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShGdW5jdGlvblByb3RvdHlwZSk7CiAKIGNv
bnN0IENsYXNzSW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0
aW9uUHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiAvLyBFQ01BIDE1LjMuNAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSopCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC03NiwxNiArNzYsMTYgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlw
ZTo6aW5pdFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cywgZXJyb3JHZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1
bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
IikpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAiZnVuY3Rpb24gIiwgZnVuY3Rp
b24tPm5hbWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogCiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQ2xhc3MoKSkKQEAgLTEzNCwyMSArMTM0LDIx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJs
ZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxl
LT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnNTdGFydE9mZnNldCgpICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwotICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFtZSh2bSksIHNv
dXJjZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsIGZ1bmN0aW9uSGVhZGVyLCBmdW5j
dGlvbi0+bmFtZSh2bSksIHNvdXJjZSkpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzPEludGVybmFsRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAg
ICBbbmF0aXZlIGNvZGVdXG59IikpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJmdW5j
dGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkp
OwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKICAgICAgICAgaWYgKG9iamVjdC0+
aXNGdW5jdGlvbih2bSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBv
YmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAiZnVuY3Rpb24gIiwgb2Jq
ZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxu
fSIpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZjNmZWNi
M2RlMzRiYTM5OTYwNDBkMmI0ODgzNDQ1YmI1YTJlZTA0OC4uNjQ2Mjg2ZDY0M2MzNjEyOWRjMzFk
ZWEwMjkwZDUwMzhkNTgyOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2
LDE2ICszNiwxNiBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJh
bWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJh
dG9yKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xp
c3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6R2VuZXJhdG9yLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaAppbmRleCA5YWQxMjBjZGY0NzljOTgzZTkzYmRjZDI0MGZiNTcwNjQ5OGQ2
N2Y3Li4wMmEzYjViODc4ODI0NzkyZjJmZGE0MDk2ZTZjOWIxMWU1ZmFiZGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOSw3ICsyOSw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0luZGV4
KHVpbnQzMl90IGluZGV4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKaW5kZXgg
NjVlOWExNzcxOTljOTE5NGQwMGQwZTQyOTJjYjQ0MTk4NDY0ZTVjYi4uNWUyNDk5YzkzZWM5NTAw
YzEzM2U3NmQ3YTU3NDA3OTM0Zjc2MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
Y3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyhFeGVjU3Rh
dGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0TG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODEs
MTIgKzgxLDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpkaXNhYmxl
KFZNJiB2bSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdExvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgdmFsdWUgPSB0
YXJnZXQudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1dURlN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGRhdGFMb2codmFsdWUsICJcbiIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IDIzOGU1NDMzM2VhZGNjYmVmODViM2ViNjA0MDNkNTdi
MGJmMzg5YjEuLjAwOTgyMGMyZDczOTg2OWY4MjYwM2M5Yzk0NDBlYjhjNzdiM2EyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CkBAIC0zOCw2ICszOCw3IEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRnVuY3Rpb24KICAgICA6IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2Z1bmN0aW9uRm9yQ2FsbChmdW5j
dGlvbkZvckNhbGwpCiAgICAgLCBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KGZ1bmN0aW9uRm9yQ29u
c3RydWN0ID8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3RvcikKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQogewogICAgIC8vIGV4ZWMtPnZtKCkgd2FudHMgY2FsbGVlcyB0byBub3QgYmUgbGFy
Z2UgYWxsb2NhdGlvbnMuCiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTGFyZ2VBbGxvY2F0aW9uKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
CmluZGV4IGFiZjAxY2NiMjdiMjZiYTdmNjNiNGUzYjk4ZTI2OWJiMzY5NmY4MjAuLmFhMmU5NWE4
YzIzOWZmOTMyYmI2YjBiZWQwNjEzMTU2NjRmMDUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTc2LDYgKzc2LDEzIEBAIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5h
bEZ1bmN0aW9uLCBtX2dsb2JhbE9iamVjdCk7CisgICAgfQorCisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisK
IHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwg
U3RydWN0dXJlKiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbkZvckNvbnN0cnVjdCk7CiAKQEAgLTkxLDYgKzk4LDcgQEAgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbiA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgVGFnZ2VkTmF0
aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24g
bV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb3Jp
Z2luYWxOYW1lOworICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmpl
Y3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1RhcmdldCwg
U3RydWN0dXJlKiBiYXNlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDNmNDc4ZTE5ODRj
ZGRlYmZmZDhiYTkyYzg1YmVjZTczMDAwMWE3ZS4uOTA1OWU2YjM3YTVhMzEyZjIyMzcxNzQwMGJi
MDcyYTYxYTQ5NzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9y
Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIH0KIApAQCAtNDksOCArNDksOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzTwog
CiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBD
bGFzc0luZm8gSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcikgfTsKIApA
QCAtODUsMzMgKzg1LDMzIEBAIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsCiAgICAgY29sbGF0b3JQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxh
dG9yIChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYg
TmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0
aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyAyLiBM
ZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAl
Q29sbGF0b3JQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChjb2xsYXRvciku
Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bENvbGxh
dG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSktPmNvbGxhdG9yU3RydWN0dXJlKHZt
KSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2Fz
dDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmNvbGxh
dG9yU3RydWN0dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChjb2xsYXRvcik7CiAKICAgICAvLyA0
LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4K
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBjb2xs
YXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29sbGF0b3IpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChb
bG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3VGFy
Z2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9i
amVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyBOZXdUYXJnZXQg
aXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgogCi0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNhbGxlZSA9
IGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0
b3IqIGNhbGxlZSA9IGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+
anNDYWxsZWUoKSk7CiAKICAgICAvLyBGSVhNRTogQ29sbGF0b3IgZG9lcyBub3QgZ2V0IHRoZSB3
b3JrYXJvdW5kIGZvciBFQ01BLTQwMiAxLjAgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CkBAIC0xMjIsMjUgKzEyMiwy
NCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9y
KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgQVNTRVJUKGNvbGxhdG9yKTsKIAogICAgIC8vIDQuIFJl
dHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAg
IGNvbGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigq
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRM
b2NhbGVzT2YoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTAuMi4yIEludGwuQ29s
bGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAy
LjApCiAKICAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2Nh
bGVMaXN0KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBj
YW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgq
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAogICAgIC8vIDIuIFJldHVybklm
QWJydXB0KHJlcXVlc3RlZExvY2FsZXMpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMo
JUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9u
cykuCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgp
LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBnbG9iYWxPYmplY3QtPmludGxDb2xs
YXRvckF2YWlsYWJsZUxvY2FsZXMoKSwgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50
KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1
cHBvcnRlZExvY2FsZXMoKmNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5pbnRsQ29sbGF0b3JBdmFp
bGFibGVMb2NhbGVzKCksIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKaW5kZXggNzBmMTFhZTIx
M2E3ZmY5NTgzZTNiNzFiZTUzNzhjMzllMTU0OGJiMC4uM2VkOWJlYjg3MzMxZGNmNzQ5OGQxNTBl
MDczMmQ3NzUzOGJiNGEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVy
ZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPmNvbGxhdG9yU3RydWN0
dXJlKCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKFZNJikgY29uc3QgeyBy
ZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmNvbGxhdG9yU3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwCmluZGV4IGNkZjQ4NmI1ODU0NTA5Nzk1YjAzNzgyNjY2ZDEyNWJmZTcxZjVm
ZDUuLjVhNTRjYTU4NDY4NWUyYjYwYzE0NDJjYzM2YzcyOWJkZjUzMDg0OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJD
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNzgsNDUgKzc4LDQ1IEBA
IHZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
VGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShFeGVjU3RhdGUq
IHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9y
RnVuY0NvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAvLyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkK
ICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgLy8gMi4gQXNz
ZXJ0OiBUeXBlKGNvbGxhdG9yKSBpcyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRp
YWxpemVkQ29sbGF0b3JdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCi0gICAg
SW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0Nhc3Q8SW50bENvbGxh
dG9yKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyAzLiBJZiB4IGlzIG5vdCBw
cm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgogICAgIC8vIDQuIElmIHkgaXMgbm90IHByb3Zp
ZGVkLCBsZXQgeSBiZSB1bmRlZmluZWQuCiAgICAgLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCku
Ci0gICAgSlNTdHJpbmcqIHggPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpOwor
ICAgIEpTU3RyaW5nKiB4ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJh
bWUpOwogICAgIC8vIDYuIFJldHVybklmQWJydXB0KFgpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNy4gTGV0IFkgYmUgVG9TdHJp
bmcoeSkuCi0gICAgSlNTdHJpbmcqIHkgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9TdHJpbmcoc3Rh
dGUpOworICAgIEpTU3RyaW5nKiB5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1N0cmluZyhj
YWxsRnJhbWUpOwogICAgIC8vIDguIFJldHVybklmQWJydXB0KFkpLgogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gOS4gUmV0dXJuIENv
bXBhcmVTdHJpbmdzKGNvbGxhdG9yLCBYLCBZKS4KLSAgICBhdXRvIHhWaWV3V2l0aFN0cmluZyA9
IHgtPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhzdGF0ZSk7CisgICAgYXV0byB4Vmlld1dpdGhT
dHJpbmcgPSB4LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHlWaWV3
V2l0aFN0cmluZyA9IHktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhzdGF0ZSk7CisgICAgYXV0
byB5Vmlld1dpdGhTdHJpbmcgPSB5LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29t
cGFyZVN0cmluZ3MoKnN0YXRlLCB4Vmlld1dpdGhTdHJpbmcudmlldywgeVZpZXdXaXRoU3RyaW5n
LnZpZXcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKCpjYWxsRnJhbWUsIHhWaWV3V2l0aFN0cmluZy52aWV3
LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAy
LjApCiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgotICAg
IEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZt
LCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5
bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0
b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJf
cykpOwogCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xsYXRvci0+Ym91
bmRDb21wYXJlKCk7CiAgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSBpcyB1
bmRlZmluZWQsCkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUKICAg
ICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDIsICJjb21wYXJlIl9zLCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9J
bnRyaW5zaWMpOwogCiAgICAgICAgIC8vIGMuIExldCBiYyBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRl
KEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0
aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0
b3IsIG51bGxwdHIsIDIsICJjb21wYXJlIl9zKTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRP
YmplY3QsIGNvbGxhdG9yLCBudWxscHRyLCAyLCAiY29tcGFyZSJfcyk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBT
ZXQgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSB0byBiYy4KICAgICAgICAgY29sbGF0b3ItPnNl
dEJvdW5kQ29tcGFyZSh2bSwgYm91bmRDb21wYXJlKTsKQEAgLTEzNiwxNyArMTM2LDE3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZShFeGVjU3RhdGUqIHN0YXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZENv
bXBhcmUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQw
MiAyLjApCi0gICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENv
bGxhdG9yKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBjb2xs
YXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghY29sbGF0b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucygqc3RhdGUp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3ItPnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCBiNTRlY2IwY2IwZWNjYTY0YzNh
ZmI4YTZlMjJkYjU0NmFhMzM1YjkxLi43YTRiMDc3MGU0ODEzMjkyZTYyYWU0NmZjOTFhNGVlYzQ3
ZTk5MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0
ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02OSw4ICs2OSw4IEBAIFN0
cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxEYXRlVGlt
ZUZvcm1hdCwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KQpAQCAtODUsNjMgKzg1LDYyIEBA
IHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvCiAgICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVU
aW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8g
MS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZl
IGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAv
LyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3Io
bmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1Rh
cmdldCgpLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+anND
YWxsZWUoKSktPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChkYXRlVGltZUZvcm1h
dCk7CiAKICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1l
Rm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZGF0
ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3Jt
YXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBO
ZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rp
b24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1Rh
cmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdv
cmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwv
YXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzY3OQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bElu
c3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1l
Rm9ybWF0Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2bSkg
eworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdv
cmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PigqY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CiAg
ICAgICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25z
dHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgogICAgICAgICAv
LyAzLiBSZXR1cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCiAgICAgICAgIEludGxEYXRlVGlt
ZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwg
Y2FsbGVlLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgICAgICBBU1NFUlQoZGF0
ZVRpbWVGb3JtYXQpOwogCiAgICAgICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAgICAgICBkYXRlVGlt
ZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgICAgICByZXR1cm4gZGF0ZVRpbWVGb3JtYXQ7CiAg
ICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEu
IExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2Nh
bGVzXV0uCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxl
ZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFi
bGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0LT5pbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2Nh
bGVzKCk7CiAKICAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVM
b2NhbGVMaXN0KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMg
PSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlz
dCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBTdXBw
b3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMp
LgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRl
ZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0
ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBhdmFpbGFibGVMb2NhbGVzLCBy
ZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCmluZGV4IGMyYThmNWEyZGZmNzQ1
MzgxNTdjY2MyMDE0ZjZiOGZhMjUzNDM5OWEuLjA3ZTA3ODAwZWFkZTYyZTE4MDY0MGUyYjYwMzZj
MTJjYzJiMTQ1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qo
dm0pLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBkYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZShWTSYpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAppbmRleCA3MTU4NTdiOGE1OTgzOWY0NjhmYjRiNzY0MWM2MGZiNjMyMGU3ZmY5
Li4zYThmMDFkMDI5YTg1YTRlZDBhNmYxN2IwN2ZkMjM1ZTRmYWU1YjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKQEAgLTQxLDExICs0MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgSlNDX0lDVV9IQVNfVUZJRUxEUE9TSVRFUgot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2VuZGlmCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTkyLDQ4ICs5Miw0OCBAQCB2b2lk
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJPYmplY3Qi
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0
ZVRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAv
LyAxMi4xLjcgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucyAoRUNNQS00MDIpCiAgICAgLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZm9ybWF0ZGF0ZXRpbWUKIAotICAgIElu
dGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBqc0Nh
c3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBK
U1ZhbHVlIGRhdGUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBkYXRlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBkb3VibGUgdmFsdWU7CiAKICAgICBpZiAoZGF0ZS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KHN0
YXRlKSkudG9OdW1iZXIoc3RhdGUpOworICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9O
dW1iZXIoY2FsbEZyYW1lKTsKICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVD
bGlwKGRhdGUudG9OdW1iZXIoc3RhdGUpKTsKKyAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlw
KGRhdGUudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KCpzdGF0ZSwgdmFsdWUpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5m
b3JtYXQoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZv
cm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZv
cm1hdCBvYmplY3QuCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxE
YXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0
byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0
ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
Njc5CiAgICAgaWYgKCFkdGYpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxT
dWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgZHRm
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0K
IAogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFkdGYpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykp
OwogCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQo
KTsKICAgICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhp
cyBEYXRlVGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLApAQCAtMTQzLDcgKzE0Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSoKICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlz
IGxlbmd0aCBwcm9wZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMgbGVuZ3RoIHByb3BlcnR5IHdhcyAw
IGluIEVDTUEtNDAyIDEuMCkKICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxEYXRl
VGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBj
LiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAg
ICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9i
YWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKKyAg
ICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxscHRyLCAxLCAiZm9ybWF0Il9z
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIC8vIGQuIFNldCBkdGYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBk
dGYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CkBAIC0xNTMsNTIgKzE1Myw1MiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdChFeGVjU3RhdGUqCiB9CiAKICNpZiBKU0NfSUNVX0hBU19VRklFTERQT1NJ
VEVSCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
NS40IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAy
IDQuMCkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1JbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzCiAKLSAgICBJbnRsRGF0ZVRpbWVG
b3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQq
Pih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVU
aW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVG
b3JtYXQiX3MpKTsKIAotICAgIEpTVmFsdWUgZGF0ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGRvdWJsZSB2YWx1
ZTsKIAogICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGRhdGVOb3coc3RhdGUpKS50b051bWJlcihzdGF0ZSk7CisgICAgICAgIHZhbHVl
ID0gZGF0ZU5vd0ltcGwoKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIGVsc2UgewotICAgICAg
ICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihzdGF0ZSkpOworICAgICAgICB2
YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3Jt
YXQtPmZvcm1hdFRvUGFydHMoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygq
Y2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8g
cHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVy
bnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3
OQogICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+
KHZtLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERh
dGVUaW1lRm9ybWF0Il9zKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1h
dC0+cmVzb2x2ZWRPcHRpb25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODVjZDY0M2Q1ZTYzOTgwMTI5OTBiOWFi
OGU0NGExZDdkMDVmNmU3MS4uOWRlOGQ1ZWU4ZmJmYTI3MWNiYmFmY2NhMTJhYmRmMGQ1MmQ4NjIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02OSw4ICs2OSw4IEBAIFN0cnVjdHVyZSogSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCoKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50
bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlLCBjYWxsSW50bE51bWJlckZvcm1hdCwgY29uc3RydWN0SW50bE51bWJlckZv
cm1hdCkKQEAgLTg1LDYzICs4NSw2MiBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eQogICAgIG51
bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJG
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAv
LyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEt
NDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFy
Z2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUg
TmV3VGFyZ2V0LgogICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVG
cm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCiAgICAg
Ly8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBz
dGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihz
dGF0ZS0+anNDYWxsZWUoKSktPm51bWJlckZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+bnVtYmVyRm9ybWF0U3Ry
dWN0dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOwog
CiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBs
b2NhbGVzLCBvcHRpb25zKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgbnVtYmVyRm9ybWF0
LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0
ZS0+YXJndW1lbnQoMSkpOworICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1h
dCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4
ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5qc0NhbGxlZSgpKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxlZSA9
IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5
IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRs
Q29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+dGhpc1ZhbHVlKCks
IGNhbGxlZSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPElu
dGxOdW1iZXJGb3JtYXQ+KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxl
ZSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRp
bmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5
cGUlKS4KICAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KICAgICAg
ICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3Jl
YXRlKHZtLCBjYWxsZWUtPm51bWJlckZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgICAgICBBU1NF
UlQobnVtYmVyRm9ybWF0KTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAgICAgICBudW1iZXJG
b3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51
bWJlckZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpKTsKICAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdDsKICAgICB9KSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgLy8gMTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVz
IFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxv
Y2FsZXMgYmUgJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
dm0pOwogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZ2xvYmFs
T2JqZWN0LT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCiAgICAgLy8gMi4g
TGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4K
LSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxl
TGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVx
dWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExv
Y2FsZXMoKmNhbGxGcmFtZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5oCmluZGV4IGE0OTlkM2ZlNmE3MTU0Y2M2M2JmYzVmYzQzMThmYjIxYjZkMDFi
MzAuLjAzYWJlYmFlYzQyMWFkN2E3ODBiOWQzZTgyZmZmZmExZGU5OWJiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAotICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29u
c3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCk7IH0K
KyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZShWTSYpIGNvbnN0IHsgcmV0dXJu
IGdsb2JhbE9iamVjdCgpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNTcwOWM5MjJiODVhN2UzODI3ZGI3NTcyNWRl
YTc5Zjk2YjRhZjliOS4uNWQxZjg0NGU4Y2QyOWY1MmZiNzA2MDI1YWRlM2I2NWI0MWEyOTA0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTM5LDExICszOSwxMSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNpZiBIQVZFKElDVV9GT1JNQVRfRE9VQkxF
X0ZPUl9GSUVMRFMpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVu
Y0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTg5LDQ0ICs4OSw0NCBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJP
YmplY3QiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVt
YmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8g
MTEuMy40IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4g
TGV0IG5mIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMg
T2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFs
IHNsb3Qgd2hvc2UgdmFsdWUgIHRydWUuCi0gICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9y
bWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAg
IEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyAzLiBJZiB2YWx1ZSBpcyBub3Qg
cHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCiAgICAgLy8gNC4gTGV0IHggYmUgVG9O
dW1iZXIodmFsdWUpLgotICAgIGRvdWJsZSBudW1iZXIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9O
dW1iZXIoc3RhdGUpOworICAgIGRvdWJsZSBudW1iZXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQoeCkuCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA2
LiBSZXR1cm4gRm9ybWF0TnVtYmVyKG5mLCB4KS4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqc3RhdGUsIG51
bWJlcikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShu
dW1iZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqY2FsbEZyYW1lLCBudW1iZXIpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0
aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCi0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5
bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5k
IHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBh
dHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM2NzkKICAgICBpZiAoIW5mKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIG5m
ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAgICB9CiAK
ICAgICBpZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVy
Rm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVt
YmVyRm9ybWF0Il9zKSk7CiAgICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9
IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1
bmRlZmluZWQsCkBAIC0xMzYsNyArMTM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3QKICAg
ICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAg
ICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1i
ZXIsIE5vSW50cmluc2ljKTsKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25D
cmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5m
LCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5k
RnVuY3Rpb246OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgbmYsIG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91
bmRGb3JtYXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZv
cm1hdCk7CkBAIC0xNDYsNDUgKzE0Niw0NSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdAogfQog
CiAjaWYgSEFWRShJQ1VfRk9STUFUX0RPVUJMRV9GT1JfRklFTERTKQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0VG9QYXJ0cyAoRUNNQS00MDIpCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLmZvcm1hdHRvcGFydHMK
IAotICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxOdW1iZXJG
b3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW51bWJlckZvcm1hdCkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9y
bWF0Il9zKSk7CiAKLSAgICBkb3VibGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoc3RhdGUpOworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9O
dW1iZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqc3RhdGUsIHZhbHVlKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0VG9QYXJ0cygqY2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjUgSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAg
SW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCog
bnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlk
ZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAg
IGlmICghbnVtYmVyRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIG51
bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7
CiAgICAgfQogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1h
dC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqY2FsbEZy
YW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggODAxMjk0YThiN2I4NWJlZWU2OWRjYTQyMDc1
MTEwN2VkMTRjYzMyNy4uNGU4ZGQzYzg0NGI5MDlmZDJlM2FhNzlmZmMxZTY1OTM5ZTNlMGJjMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShJbnRsT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5v
bmljYWxMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBKU1Zh
bHVlIGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQog
ewpAQCAtOTE3LDI3ICs5MTcsMjYgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0Zv
ckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICByZXR1cm4gbnVtYmVyaW5nU3lzdGVt
czsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENh
bm9uaWNhbExvY2FsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIEludGwuZ2V0Q2Fu
b25pY2FsTG9jYWxlcyhsb2NhbGVzKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTQwMi8jc2VjLWludGwuZ2V0Y2Fub25pY2FsbG9jYWxlcwogCi0gICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsZUxp
c3QgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBsb2NhbGVMaXN0ID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgq
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxlbmd0aCA9IGxvY2FsZUxp
c3Quc2l6ZSgpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5q
c0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTQXJyYXkqIGxvY2FsZUFycmF5ID0g
SlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgbGVuZ3RoKTsK
ICAgICBpZiAoIWxvY2FsZUFycmF5KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihz
dGF0ZSwgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgbG9jYWxlQXJyYXkt
PnB1dERpcmVjdEluZGV4KHN0YXRlLCBpLCBqc1N0cmluZyh2bSwgbG9jYWxlTGlzdFtpXSkpOwor
ICAgICAgICBsb2NhbGVBcnJheS0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBpLCBqc1N0cmlu
Zyh2bSwgbG9jYWxlTGlzdFtpXSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShs
b2NhbGVBcnJheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjAyMjI1MGNhZjExYWYz
YzM5NTBhMWVmMTAxMzlkZDQ4YzM4OWVlMi4uMzdhY2M4OWUxNjYxYTMwOGE0OTE0YmUyMTA2OThj
MjRhYmEwZTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjcsOCArNjcsOCBAQCBTdHJ1Y3R1cmUqIElu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZwogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OkludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxJbnRsUGx1cmFsUnVsZXMsIGNvbnN0cnVjdEludGxQbHVyYWxSdWxl
cykKQEAgLTgzLDQ3ICs4Myw0NiBAQCB2b2lkIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZQogICAgIHBsdXJh
bFJ1bGVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEz
LjIuMSBJbnRsLlBsdXJhbFJ1bGVzIChbIGxvY2FsZXMgWyAsIG9wdGlvbnMgXSBdKQogICAgIC8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKS0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUo
dm0pKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganND
YXN0PEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
SW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKHBsdXJh
bFJ1bGVzKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwbHVyYWxSdWxlcy0+aW5pdGlh
bGl6ZVBsdXJhbFJ1bGVzKCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1l
bnQoMSkpOworICAgIHBsdXJhbFJ1bGVzLT5pbml0aWFsaXplUGx1cmFsUnVsZXMoKmNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKiBzdGF0
ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVs
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IDEzLjIuMSBJbnRsLlBsdXJhbFJ1bGVzIChbIGxvY2FsZXMgWyAsIG9wdGlvbnMgXSBdKQogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiUGx1cmFsUnVsZXMiKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQbHVyYWxSdWxlcyIpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAv
LyAxMy4zLjIgSW50bC5QbHVyYWxSdWxlcy5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywg
b3B0aW9ucyBdKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWlu
dGwucGx1cmFscnVsZXMuc3VwcG9ydGVkbG9jYWxlc29mCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0LT5pbnRs
TnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVx
dWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmlj
YWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygq
c3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVu
dCgxKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShz
dXBwb3J0ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yLmgKaW5kZXggNzk4ODliZmMyNDQ5YjA2NjI1YmVlOTc3YTJkNjRm
MDNjNWE4ZmNhYi4uZDgzZWExYzJjM2YzMTRjYzIzOWMyZjJlYzgyYjdhYmM0NTA1NGQ2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZShWTSYgdm0p
IGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1
cm4gZ2xvYmFsT2JqZWN0KCktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUuY3BwCmluZGV4IGQ5OTNkZjVkMDE3MmJjZGMxNDhlZmE3ZTY4YTBi
OGZlYTA3MTg1YjYuLjFiZmNkNDNkZDJlOWNhNWYyMWYyNmFhMmU3MDAwNzUyYTI5NzMxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlLmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlRnVuY1NlbGVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0K
IApAQCAtNzgsMzcgKzc4LDM3IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2
bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMu
NC4zIEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCAodmFsdWUpCiAgICAgLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5
cGUuc2VsZWN0Ci0gICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nh
c3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bFBs
dXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKCFwbHVyYWxSdWxlcykKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
ICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKSk7CiAKLSAg
ICBkb3VibGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUpOworICAg
IGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVz
LT5zZWxlY3QoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KCpjYWxsRnJhbWUsIHZhbHVlKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MTMuNC40IEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMu
cHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwotICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVs
ZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVl
KCkpOworICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PElu
dGxQbHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICgh
cGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRp
b25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IFBsdXJhbFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFs
UnVsZXMtPnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDU3NWM1N2MxZTIyOWQwZGViY2U3ODNhYTk1
YWUyOTRhNTVkM2RlMWMuLjA0OWI2MGNlNjc2NzhhMjdjYzA0ZmRmMGI5ZGVjYzQxNDJhNDc5NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5j
SXNWaWV3KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8PgogY29uc3QgQ2xhc3NJ
bmZvIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0gewpAQCAtNjcsMjYgKzY3LDI2
IEBAIHZvaWQgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNBcnJhCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBz
cGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogCiAgICAgaWYg
KHNoYXJpbmdNb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+aXNWaWV3LCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaXNWaWV3UHJpdmF0ZU5hbWUoKSwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAg
ICAgfQogfQogCiB0ZW1wbGF0ZTxBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlPgot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0gICAgU3RydWN0dXJlKiBhcnJheUJ1ZmZl
clN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4
ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJy
YXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpKTsKKyAgICBTdHJ1Y3R1cmUqIGFycmF5QnVm
ZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aDsKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGxlbmd0aCA9IGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvSW5kZXgoZXhlYywgImxlbmd0aCIpOworICAgIGlmIChjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSkgeworICAgICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvSW5kZXgoY2FsbEZyYW1lLCAibGVuZ3RoIik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3Qgc2F5IHNvLCBpdCBp
cyBpbiBmYWN0IGNvcnJlY3QgdG8gc2F5CkBAIC05Nyw3ICs5Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9k
ZT46OmNvbnN0CiAKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVu
Z3RoLCAxKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwog
ICAgIAogICAgIGlmIChzaGFyaW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFy
ZWQpCiAgICAgICAgIGJ1ZmZlci0+bWFrZVNoYXJlZCgpOwpAQCAtMTE5LDE5ICsxMTksMTkgQEAg
Y29uc3QgQ2xhc3NJbmZvKiBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdN
b2RlPjo6aW5mbygpCiAgICAgcmV0dXJuICZKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
PHNoYXJpbmdNb2RlPjo6c19pbmZvOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJBcnJheUJ1ZmZlciIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkFycmF5QnVmZmVyIikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMjQu
MS4zLjEKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZm
ZXJGdW5jSXNWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihqc0R5bmFtaWNDYXN0PEpT
QXJyYXlCdWZmZXJWaWV3Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSkpOwogfQogCiAvLyBJbnN0YW50aWF0ZSBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yLmgKaW5kZXggNDJmMTYzZmUzOGFjYzRmN2NjY2M5M2U4N2JlMTY5
NjJjOWNjYjM0Yi4uOGFhY2E1ZGU3Y2Y2NGE1ZTQ0NTU0ZjIxNWFmNTFmYThkNjEzYTdiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSlNHZW5lcmljQXJyYXlCdWZm
ZXJDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBKU0dl
bmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIq
IHNwZWNpZXNTeW1ib2wpOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBKU0dlbmVyaWNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuY3BwCmluZGV4IGM5NzgyNDI0MWVkYTBiNTJkZGQxYTY4ZTAxZmNlNWVlY2I0
MTY4MzMuLmIxMTAxNjBmMzE2ZTBmMzgwMzY0Y2U4OTkyYTMzOThiOGY0YjQyNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwCkBAIC0zNSwzMCArMzUsMjggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlCdWZmZXJQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIAotICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZm
ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0IHx8
IHRoaXNPYmplY3QtPmltcGwoKS0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIEFycmF5
QnVmZmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIEFycmF5QnVmZmVyLiJfcyk7CiAK
LSAgICBkb3VibGUgYmVnaW4gPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXIoZXhlYyk7Cisg
ICAgZG91YmxlIGJlZ2luID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludGVnZXIoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAKICAgICBkb3VibGUgZW5kOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICBlbmQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0lu
dGVnZXIoZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgZW5kID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0lu
dGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmlt
cGwoKS0+Ynl0ZUxlbmd0aCgpOwogICAgIAogICAgIGF1dG8gbmV3QnVmZmVyID0gdGhpc09iamVj
dC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3
QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsK
ICAgICAKICAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShuZXdCdWZmZXIpKTsKICAgICAKQEAgLTY2LDM3ICs2NCwz
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlv
L2VjbWFzY3JpcHRfc2hhcmVkbWVtL3NobWVtLmh0bWwjc2VjLWdldC1hcnJheWJ1ZmZlci5wcm90
b3R5cGUuYnl0ZWxlbmd0aAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5j
Qnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJS
ZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJS
ZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJh
eSBidWZmZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIG5vdCBiZSBhIHNoYXJlZCBhcnJheSBidWZm
ZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIG5vdCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOwogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhp
c09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKIC8vIGh0dHA6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hc2NyaXB0X3NoYXJlZG1lbS9zaG1lbS5odG1sI1N0cnVjdHVyZWREYXRhLlNo
YXJlZEFycmF5QnVmZmVyLnByb3RvdHlwZS5nZXRfYnl0ZUxlbmd0aAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRl
TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4g
YXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4g
YXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hv
dWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1NoYXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
c2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgo
KSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCmluZGV4IDdkNjU5ZGJjMzQ0ODM4MmU4YzQ4NTdkOGFlODE5OTVkNGQ0YjBiYjcu
LjY2MGVkNmU3MzRjYmUwOTY3YTBmZTI2N2Y2YzE4OWQ5MGVmYzhlOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMzUsMTMg
KzM1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0
aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCb3VuZEZ1bmN0aW9uKSB9OwogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0
aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBl
bmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVu
ZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
YXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24g
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOwpA
QCAtNTEsMTYgKzUxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGV4
ZWMtPnZtKCksIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIEpTQXJyYXkqIGJvdW5k
QXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOwogCkBAIC02OSwxMCArNjksMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0
aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldEluZGV4UXVp
Y2tseShpKSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1
bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJncy5oYXNPdmVyZmxvd2VkKCkpKSB7
Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC04MCwzMCArODAsMzAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91bmRG
dW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1
bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAg
IEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24q
PihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCi0gICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsr
aSkKKyAgICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTRnVu
Y3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihib3VuZEZ1bmN0aW9u
LT50YXJnZXRGdW5jdGlvbigpKTsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0g
ICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShleGVjLT52
bSgpLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdl
dEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBD
b25zdHJ1Y3RUeXBlOjpOb25lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
cykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFy
Z2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+
KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9
IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAg
SlNBcnJheSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CiAKQEAgLTEx
MiwxMCArMTEyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlv
bkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChi
b3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBl
bmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVu
ZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJn
cy5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMjMsMjAg
KzEyMywyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25z
dHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsK
ICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0
YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUg
IT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9vbD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVu
Y3Rpb24qPihleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1p
Y0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2Jq
ZWN0ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAg
SlNCb3VuZEZ1bmN0aW9uKiBib3VuZE9iamVjdCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGJvdW5kT2JqZWN0LT50YXJnZXRGdW5jdGlvbigpLT5oYXNJbnN0YW5jZShl
eGVjLCB2YWx1ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3Vu
ZE9iamVjdC0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2UoY2FsbEZyYW1lLCB2YWx1ZSkp
KTsKIH0KIAogaW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIHRhcmdldEZ1bmN0aW9uKQpAQCAtMjEwLDcgKzIxMCw3IEBAIEpTQXJyYXkqIEpTQm91bmRG
dW5jdGlvbjo6Ym91bmRBcmdzQ29weShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBn
bG9iYWxPYmplY3Qodm0pKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ib3Vu
ZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG1fYm91
bmRBcmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA4YmI0Yjc3YWM1Nzg3ZDYxZjJkZTM2OWQw
Yzg1YjBkZWNiYWZhZTkyLi4yMjVhY2IwYmU4ZDUzYjRiYTQ2MjY2NmVmM2Q3NTBlOWM2ZDMwZWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
aApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q29uc3RydWN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3Vu
ZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBpc0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlQm91bmRGdW5j
dGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBKU0JvdW5kRnVuY3Rp
b24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMmM2NDllMTYwMjBmZDBiYTQ5ODZiMGYx
MzcwNjdjMmE4MTc1NDJkOC4uYWU4MzE1MWJkZTFhNmE2YmVlY2IzZDg5Y2E3YWRlZTU5MjA3YTFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xh
c3MgSlNCaWdJbnQ7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBK
U0NlbGw7CiBjbGFzcyBKU1ZhbHVlU291cmNlOwogY2xhc3MgVk07CkBAIC01Myw2ICs1Myw3IEBA
IGNsYXNzIFByb3BlcnR5TmFtZTsKIGNsYXNzIFByb3BlcnR5U2xvdDsKIGNsYXNzIFB1dFByb3Bl
cnR5U2xvdDsKIGNsYXNzIFN0cnVjdHVyZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgSklUQ29tcGlsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDU0NjEyNzRlYmQ3N2Rm
ZjNmMDVmMTJkYzEwNzI5YWZlMTQ2OGYyMDEuLmU5NWQ1MTJhMzhlNjgyZGJmZGEzNjRkMjgwYjFl
OGQ3N2FkYmE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0z
OCwxMCArMzgsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNs
YXNzIENvbXBsZXRlU3Vic3BhY2U7CiBjbGFzcyBDb3B5VmlzaXRvcjsKIGNsYXNzIEdDRGVmZXJy
YWxDb250ZXh0OwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3Q7CkBAIC01Miw2ICs1
Miw3IEBAIGNsYXNzIFByb3BlcnR5TmFtZTsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogY2xh
c3MgU3RydWN0dXJlOwogY2xhc3MgSlNDZWxsTG9jazsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogZW51bSBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dEFyZ1ByZXNlbnNlIHsKICAgICBI
YXNBcmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDVjNzEyYzAzYjlmNGFkZDg0
N2UyNzQ0MWIxMzAyNjM5OTU3MTAxOGQuLjU1YzUwZTRmMTQ0ZTAwYjZjYmQwYzQ5ZDUyNDY3NTYx
M2UwY2ZmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0zNSwyOSArMzUsMjkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bikgfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uOjpjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjpjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
biogY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24qIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEN1c3RvbUdl
dHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24tPmN1c3RvbUdldHRlclNldHRlcigpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogCiAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5pc1NldHRlcigpKSB7
CiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGN1c3Rv
bUdldHRlclNldHRlci0+c2V0dGVyKCk7CiAgICAgICAgIEFTU0VSVChzZXR0ZXIpOwotICAgICAg
ICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIHNldHRlciwgdHJ1ZSwgdGhpc1ZhbHVlLCBleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoY2FsbEZyYW1lLCBzZXR0ZXIs
IHRydWUsIHRoaXNWYWx1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCiAgICAgaWYgKGN1c3Rv
bUdldHRlclNldHRlci0+aW5oZXJpdHM8RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyPih2bSkpIHsK
ICAgICAgICAgYXV0byBkb21BdHRyaWJ1dGUgPSBqc0Nhc3Q8RE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+ZG9tQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJv
cGVydHlOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1ET01BdHRyaWJ1dGVHZXR0
ZXJUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgZG9tQXR0cmlidXRlLmNsYXNzSW5mbywgY3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShleGVjLCBKU1ZhbHVlOjplbmNvZGUo
dGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsK
KyAgICByZXR1cm4gY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShjYWxsRnJhbWUsIEpTVmFs
dWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVy
dHlOYW1lKCkpOwogfQogCiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFR5cGUgdHlwZSwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgKaW5kZXggODBhMmM4MWJiZjhm
OGEzYzMxNWI1MzBmOTkwNzI4NzY5NmZhNzVlZS4uNGZlZDBlZDQ2YjlmYmU2YTlmYzI1Y2NmZWY0
ZTI4MGU3YjAwNDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaApAQCAtNjMsNyArNjMsNyBA
QCBjbGFzcyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVu
Y3Rpb24gewogICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYpOwogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgQ3VzdG9tR2V0dGVyU2V0dGVy
KiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKik7CisgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25DYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICAgICBDdXN0b21HZXR0ZXJT
ZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyU2V0dGVy
LmdldCgpOyB9CiAgICAgYm9vbCBpc1NldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpTZXR0ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5kZXggN2EyZWM3NDI3NmM1NzA0NjQ0OGVkZmQzOWQ4
ZmUxNDk5NWU4NGFiMy4uYzJjMmY3OTk0ODc5NDYyNGVjMzgwYTUyMTViYzBkZTUxNmUxNmQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAKQEAgLTYxLDI1ICs2MSwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKIEBlbmQKICov
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY0dldEludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY0dldEludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRV
aW50MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jR2V0RmxvYXQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0SW50MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jU2V0VWludDgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRG
bG9hdDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY1NldEZsb2F0NjQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0
ZU9mZnNldChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQ4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWlu
dDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dEZsb2F0NjQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0
dGVyQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBTdHJ1Y3R1cmUq
IEpTRGF0YVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KLUVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZp
ZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMTYzLDkgKzE2Myw5IEBAIEVuY29kZWRK
U1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgotRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZt
LCBleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0yMTAsMTIwICsyMTAsMTIwIEBAIEVuY29kZWRKU1Zh
bHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogCiBJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVH
SU4oIm1pc3NpbmctcHJvdG90eXBlcyIpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpz
RHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNE
YXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0
aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBl
Y3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVyKGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHZpZXctPnBvc3NpYmx5U2hhcmVkSlNCdWZmZXIoY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRl
ckJ5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2Fz
dDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2
aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJl
IGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8
IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFW
aWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVm
ZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5
cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZzZXQoKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50
OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jR2V0SW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxJbnQ4QWRhcHRvcj4oZXhlYyk7Cisg
ICAgcmV0dXJuIGdldERhdGE8SW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDE2KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQxNihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxJbnQxNkFkYXB0b3I+KGV4ZWMp
OworICAgIHJldHVybiBnZXREYXRhPEludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY0dldEludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPEludDMyQWRhcHRvcj4o
ZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8SW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDhBZGFw
dG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxVaW50OEFkYXB0b3I+KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY0dldFVpbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPFVp
bnQxNkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPFVpbnQxNkFkYXB0b3I+KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBn
ZXREYXRhPFVpbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPFVpbnQzMkFk
YXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIGdldERhdGE8RmxvYXQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXRE
YXRhPEZsb2F0MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1
bmNHZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPEZsb2F0NjRBZGFwdG9yPihleGVjKTsKKyAg
ICByZXR1cm4gZ2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0
SW50OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jU2V0SW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxJbnQ4QWRhcHRvcj4oZXhlYyk7
CisgICAgcmV0dXJuIHNldERhdGE8SW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDE2KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxJbnQxNkFkYXB0b3I+KGV4
ZWMpOworICAgIHJldHVybiBzZXREYXRhPEludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0SW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEludDMyQWRhcHRv
cj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8SW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDhB
ZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxVaW50OEFkYXB0b3I+KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY1NldFVpbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRh
PFVpbnQxNkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPFVpbnQxNkFkYXB0b3I+
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBzZXREYXRhPFVpbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPFVpbnQz
MkFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0
MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIHNldERhdGE8RmxvYXQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBz
ZXREYXRhPEZsb2F0MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNTZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEZsb2F0NjRBZGFwdG9yPihleGVjKTsK
KyAgICByZXR1cm4gc2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogfQogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGVNYXRoLmgKaW5kZXggOWQ0OTc1ODdhYTIxMjlhYzkyZTZjMGI2MmU3
Y2E1Y2E1YzI5MGY5My4uNjA0MWQ1ZWVlMGVkMDYwMjAzMWQzOWQzNDkxZjQ1ZmYyZjNjZTA2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaApAQCAtNDcsOCAr
NDcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKFZNJiwgZG91YmxlLCBXVEY6
OlRpbWVUeXBlIG91dHB1dFRpbWVUeXBlLCBHcmVnb3JpYW5EYXRlVGltZSYpOwogSlNfRVhQT1JU
X1BSSVZBVEUgZG91YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhWTSYsIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lJiwgZG91YmxlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyY2FlNDRkYTcx
YmQxN2ViYzM4YTA5ZDk2YjE3OGRkZWJiMmFhZTMzLi5lYWFkZGQ1OTIwZDBkOWY3MTIxOTdhYmQ3
NmZjMmYyZTI3ZDY1NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTIsMTEgKzUyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFDb25z
dHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKKyAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKQEAgLTExNSw2ICsxMTUs
NyBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKFZNJiB2bSwgSlNHbG9iYQogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFi
bGUoKQorICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpCiB7CiAgICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQpAQCAtMTYz
LDcgKzE2NCw3IEBAIEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rp
b24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKExJS0VMWShwcm90b3R5cGUuaXNP
YmplY3QoKSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChwcm90b3R5cGUpOwogCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAg
IGlmICghaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMt
cnVudGltZS1zZW1hbnRpY3MtZXZhbHVhdGVib2R5CiAgICAgICAgIGlmIChpc0dlbmVyYXRvcldy
YXBwZXJQYXJzZU1vZGUoanNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpKSkKQEAgLTE4Myw3ICsx
ODQsNyBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxp
emVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpegogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwg
ZXhlYyk7CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBGdW5jdGlvblJhcmVEYXRh
OjpjcmVhdGUodm0sIHRoaXMpOwotICAgIHJhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUodm0sIGdsb2JhbE9iamVjdCh2bSksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNp
dHksIHRoaXMpOworICAgIHJhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUodm0sIGdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsK
IAogICAgIC8vIEEgREZHIGNvbXBpbGF0aW9uIHRocmVhZCBtYXkgYmUgdHJ5aW5nIHRvIHJlYWQg
dGhlIHJhcmUgZGF0YQogICAgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgaXQgc2VlcyBpdCBw
cm9wZXJseSBhbGxvY2F0ZWQKQEAgLTE5OSw3ICsyMDAsNyBAQCBGdW5jdGlvblJhcmVEYXRhKiBK
U0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5s
aW5lQwogICAgIEFTU0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JDb25z
dHJ1Y3Rpb24odm0sIGV4ZWMpOwotICAgIG1fcmFyZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KHZtKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBh
Y2l0eSwgdGhpcyk7CisgICAgbV9yYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKHZtLCBnbG9iYWxPYmplY3QoKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwgdGhp
cyk7CiAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiB9CiAKQEAgLTQzNyw5ICs0MzgsOSBA
QCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICAgICAgICAgIC8vIFVubGlrZSBmdW5j
dGlvbiBpbnN0YW5jZXMsIHRoZSBvYmplY3QgdGhhdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGEgR2Vu
ZXJhdG9yRnVuY3Rpb24ncyBwcm90b3R5cGUKICAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBk
b2VzIG5vdCBoYXZlIGEgY29uc3RydWN0b3IgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgdGhlIEdl
bmVyYXRvckZ1bmN0aW9uIGluc3RhbmNlLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdlbmVyYXRvcmZ1bmN0aW9uLWluc3RhbmNlcy1wcm90
b3R5cGUKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7
CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywg
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUodGhpc09i
amVjdC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpKSkKLSAgICAgICAgICAgICAgICBwcm90
b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3Qodm0pLT5hc3luY0dlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgICAgICBwcm90
b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKS0+YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAg
ICAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAppbmRleCAxOGQ5Y2ZiZjE1ODhhYzY0OWJmNjg0ODViNWQyMzQxZTlhOTlkMDRjLi4z
ZmVmOTJkNDQ1ZWM0YzA3ZTRmMzEyNjBjYzgzY2QzZDJkNGZlNDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFNp
Z25hdHVyZTsKIH0KIAogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworSlNfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsK
IApAQCAtMTI0LDYgKzEyNCwxMSBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVl
IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3JhcmVEYXRh
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbE9i
amVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24s
IG1fZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisKICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0
YShWTSYgdm0pCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEpKQpAQCAt
MTQ0LDYgKzE0OSw4IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAg
ICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKICAgICBi
b29sIGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNBbm9ueW1vdXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdDsKQEAgLTIyNCw2ICsyMzEsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2Fs
bGVlIHsKIAogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOwog
ICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblJhcmVEYXRhPiBtX3JhcmVEYXRhOworICAgIFdyaXRl
QmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwogCiBjbGFzcyBKU1N0
cmljdEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggMTg3MjY4NGRh
NDBjZWFjNGViOThhZDJkMDM4NTRiY2Q5ODRjNGFjNC4uM2UwNDc1Yzg0NDg2MmRmOTYyZjVkNzU0
N2VlMTIxZGZjMjRiYzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzCiAgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRh
YmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQogICAgICwgbV9yYXJlRGF0YSgpCisgICAgLCBtX2ds
b2JhbE9iamVjdCh2bSwgdGhpcywgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKIHsKICAgICBh
c3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkODIzYWM1Mzc0ZDIxNmE0MjIxZGU1MTg5
OWFkMmVhMDgxYThkYzNlLi43ZmU5MWM1MGJmNDYxY2ZlZDI1MDdjYmFhY2E4MTBhMDYzNWJjOTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAg
LTM4LDEwICszOCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmlj
VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmll
d0NsYXNzPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxWaWV3Q2xhc3M+OjpK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkBAIC0yMDYsNTYgKzIwNiw1NiBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBJbnRlcm5h
bEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anND
YWxsZWUoKSk7Ci0gICAgU3RydWN0dXJlKiBwYXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xv
YmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlT
dG9yYWdlVHlwZSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgcGFyZW50
U3RydWN0dXJlKTsKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHBh
cmVudFN0cnVjdHVyZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVj
dHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzaXplX3Qg
YXJnQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgc2l6ZV90IGFyZ0NvdW50ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAKICAgICBpZiAoIWFyZ0NvdW50KSB7CiAgICAg
ICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFW
aWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iX3MpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFW
aWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iX3MpOwogCi0g
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFz
czo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoY2FsbEZyYW1lLCBz
dHJ1Y3R1cmUsIDApKSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwogICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsK
LSAgICAgICAgb2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChleGVj
LCAiYnl0ZU9mZnNldCIpOworICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLnRvSW5kZXgoY2FsbEZyYW1lLCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAo
YXJnQ291bnQgPiAyKSB7CiAgICAgICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3Rv
cmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIERh
dGFWaWV3IGJ5dGVMZW5ndGggaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBt
aXNzaW5nLgotICAgICAgICAgICAgICAgIEpTVmFsdWUgYnl0ZUxlbmd0aFZhbHVlID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBieXRlTGVuZ3Ro
VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgICAgICAgICAgICAg
IGlmICghYnl0ZUxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gYnl0ZUxlbmd0aFZhbHVlLnRvSW5kZXgoZXhlYywgImJ5dGVMZW5ndGgiKTsK
KyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZUxlbmd0aFZhbHVlLnRvSW5kZXgoY2Fs
bEZyYW1lLCAiYnl0ZUxlbmd0aCIpOwogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDIpLnRvSW5kZXgoZXhlYywgImxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxl
bmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9JbmRleChjYWxsRnJhbWUs
ICJsZW5ndGgiKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8Vmlld0NsYXNzPihleGVjLCBzdHJ1Y3R1cmUs
IEpTVmFsdWU6OmVuY29kZShmaXJzdFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxWaWV3Q2xhc3M+KGNhbGxGcmFtZSwgc3RydWN0dXJl
LCBKU1ZhbHVlOjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKSkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5
cGVFcnJvcihleGVjLCBzY29wZSwgVmlld0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBWaWV3Q2xhc3M6OmluZm8oKS0+Y2xh
c3NOYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggYWRiMzI3OTNiOTJjN2Q3Nzc5Zjc5ZTAx
ODI5NTkwZTA4YTllYTE2ZS4uMGE0YjEzNDIxMTEyNDI4OWFlNmE3YzM5MGUxMjA0NzNjYzViMGE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBA
IC00NTMsNyArNDUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGEKICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiByZXN1bHQgPSBz
cGVjaWVzQ29uc3RydWN0KGV4ZWMsIHRoaXNPYmplY3QsIGFyZ3MsIFsmXSgpIHsKLSAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJy
YXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlT
dHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgICAgICByZXR1
cm4gVmlld0NsYXNzOjpjcmVhdGVVbmluaXRpYWxpemVkKGV4ZWMsIHN0cnVjdHVyZSwgbGVuZ3Ro
KTsKICAgICB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTU0OSwxMCArNTQ5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAKICAg
ICB1bnNpZ25lZCBuZXdCeXRlT2Zmc2V0ID0gdGhpc09iamVjdC0+Ynl0ZU9mZnNldCgpICsgb2Zm
c2V0ICogVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKIAotICAgIEpTT2JqZWN0KiBkZWZhdWx0Q29u
c3RydWN0b3IgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cihWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgSlNPYmplY3QqIGRlZmF1
bHRDb25zdHJ1Y3RvciA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlDb25zdHJ1
Y3RvcihWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgSlNWYWx1ZSBzcGVj
aWVzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgaWYgKHNwZWNpZXMgPT0gZGVm
YXVsdENvbnN0cnVjdG9yKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVl
LT5nbG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRB
cnJheVN0b3JhZ2VUeXBlKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUt
Pmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKTsKIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZSgKICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVy
ZSwgV1RGTW92ZShhcnJheUJ1ZmZlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTIwYjE2Mzg0ZmQ0OWM5NzQ5Zjk3NjI0NDc1
N2U4Y2M3Y2NhOWVkOC4uZDk1Njk3OTNkODI5MWYzZTEzODE3OTVjMmRlZWZkOGFjZGNkMTc4MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMjY4LDQ2ICsyNjgsNDQgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlQ29uc29sZVByb3Bl
cnR5KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gQ29uc29sZU9iamVjdDo6
Y3JlYXRlKHZtLCBnbG9iYWwsIENvbnNvbGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWwtPmdsb2JhbEV4ZWMoKSkpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJv
dW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLQotICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNWYWx1ZSBib3VuZFRoaXMgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKTsKLSAgICBKU1ZhbHVlIGJvdW5kQXJncyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpOwotICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgzKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDQpKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNWYWx1ZSBib3VuZFRoaXMgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYm91bmRBcmdzID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKKyAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgzKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9
IGFzU3RyaW5nKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoNCkpOwogCiAgICAgQVNTRVJU
KGxlbmd0aFZhbHVlLmlzSW50MzJBc0FueUludCgpKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IGxl
bmd0aFZhbHVlLmFzSW50MzJBc0FueUludCgpOwogCi0gICAgU3RyaW5nIG5hbWUgPSBuYW1lU3Ry
aW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFy
Z3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5n
dGgsIFdURk1vdmUobmFtZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8ganNDYXN0PEpT
QXJyYXkqPihib3VuZEFyZ3MpIDogbnVsbHB0ciwgbGVuZ3RoLCBXVEZNb3ZlKG5hbWUpKSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSBhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0YXJnZXQtPmhhc093blByb3BlcnR5KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSkpOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMCku
aXNCb29sZWFuKCkpOwotICAgIGlmIChleGVjLT5hcmd1bWVudCgwKS5hc0Jvb2xlYW4oKSkKKyAg
ICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzQm9vbGVhbigpKTsKKyAg
ICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5hc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGJvb2wgaXRlcmF0ZWRPbmNl
ID0gZmFsc2U7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIHVuc2ln
bmVkIGxpbmU7Ci0gICAgZXhlYy0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikg
eworICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgewog
ICAgICAgICBpZiAoIWl0ZXJhdGVkT25jZSkgewogICAgICAgICAgICAgaXRlcmF0ZWRPbmNlID0g
dHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwpAQCAtMzk2
LDE1ICszOTQsMTQgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmpl
Y3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiBAZW5kCiAqLwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAot
ICAgIEpTVmFsdWUgam9iID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVu
dDAgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MSA9IGV4ZWMtPmFy
Z3VtZW50KDIpOwotICAgIEpTVmFsdWUgYXJndW1lbnQyID0gZXhlYy0+YXJndW1lbnQoMyk7Cisg
ICAgSlNWYWx1ZSBqb2IgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBhcmd1bWVudDIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDMpOwogCiAgICAgZ2xvYmFsT2JqZWN0LT5xdWV1ZU1pY3JvdGFzayhjcmVh
dGVKU01pY3JvdGFzayh2bSwgam9iLCBhcmd1bWVudDAsIGFyZ3VtZW50MSwgYXJndW1lbnQyKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBmNGRiN2E0M2RhNjUwNmQyNjU0MjZlYjRmODU5NDRk
YmVkMzBiZmU5Li4yOGI0YzZiNTNiMWQ3MzBiNDU5OWU0ODAyN2ExYTNkZmJmMzcxNzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCkBAIC00NzgsNTAgKzQ3OCw0OCBAQCBzdGF0aWMgZG91YmxlIHBhcnNl
RmxvYXQoU3RyaW5nVmlldyBzKQogICAgIHJldHVybiBqc1N0ckRlY2ltYWxMaXRlcmFsKGRhdGEs
IGVuZCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHggPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHggPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICgheC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHgpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVu
YWJsZWQoKSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZh
bEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXZhbEVycm9y
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAot
ICAgIFN0cmluZyBzID0gYXNTdHJpbmcoeCktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0g
YXNTdHJpbmcoeCktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKICAg
ICBpZiAocy5pczhCaXQoKSkgewotICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJz
ZXIoZXhlYywgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKKyAg
ICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGNhbGxGcmFtZSwgcy5jaGFyYWN0
ZXJzOCgpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAgcGFyc2VkT2JqZWN0
ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIExp
dGVyYWxQYXJzZXI8VUNoYXI+IHByZXBhcnNlcihleGVjLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxl
bmd0aCgpLCBOb25TdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJl
cGFyc2VyKGNhbGxGcmFtZSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0
SlNPTik7CiAgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2Uo
KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKHBhcnNlZE9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShwYXJzZWRPYmplY3QpOwogCi0gICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGV4ZWMt
PmNhbGxlclNvdXJjZU9yaWdpbigpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBjYWxsZWVHbG9iYWxP
YmplY3QgPSBleGVjLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VT
b3VyY2Uocywgc291cmNlT3JpZ2luKSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7CisgICAgU291cmNlT3JpZ2luIHNvdXJjZU9y
aWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7CisgICAgRXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtl
U291cmNlKHMsIHNvdXJjZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGV4ZWMsIGNhbGxlZUds
b2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCBjYWxsZWVHbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
KCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodm0u
aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFRoaXMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIHJhZGl4VmFsdWUgPSBleGVjLT5hcmd1bWVudCgx
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIHJhZGl4VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgLy8gT3B0aW1p
emVkIGhhbmRsaW5nIGZvciBudW1iZXJzOgogICAgIC8vIElmIHRoZSBhcmd1bWVudCBpcyAwIG9y
IGEgbnVtYmVyIGluIHJhbmdlIDEwXi02IDw9IG4gPCBJTlRfTUFYKzEsIHRoZW4gcGFyc2VJbnQK
QEAgLTU0MSwzMyArNTM5LDMzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAvLyBJZiBUb1N0cmlu
ZyB0aHJvd3MsIHdlIHNob3VsZG4ndCBjYWxsIFRvSW50MzIuCi0gICAgcmV0dXJuIHRvU3RyaW5n
VmlldyhleGVjLCB2YWx1ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZUludCh2aWV3LCByYWRpeFZhbHVlLnRvSW50
MzIoZXhlYykpKSk7CisgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhjYWxsRnJhbWUsIHZhbHVlLCBb
Jl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBhcnNlSW50KHZpZXcsIHJhZGl4VmFsdWUudG9JbnQzMihjYWxsRnJhbWUpKSkpOwog
ICAgIH0pOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJz
ZUZsb2F0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1BhcnNlRmxvYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRo
U3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHBhcnNlRmxvYXQodmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRt
YXA8MjU2PiBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1h
cCgKICAgICAgICAgIiMkJissLzo7PT9AIgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGRlY29kZShleGVjLCBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJLCB0cnVlKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoY2FsbEZyYW1lLCBkb05vdFVuZXNj
YXBlV2hlbkRlY29kaW5nVVJJLCB0cnVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFw
PDI1Nj4gZW1wdHlCaXRtYXA7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZXhl
YywgZW1wdHlCaXRtYXAsIHRydWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlY29k
ZShjYWxsRnJhbWUsIGVtcHR5Qml0bWFwLCB0cnVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RF
c2NhcGVXaGVuRW5jb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVoiCkBAIC01NzYsMTAgKzU3NCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAiISMkJicoKSorLC0uLzo7PT9AX34iCiAgICAgKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZW5jb2RlKGV4ZWMsIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlbmNvZGUoY2FsbEZyYW1lLCBkb05vdEVzY2FwZVdo
ZW5FbmNvZGluZ1VSSSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNFbmNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90
RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAg
ICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNTg4LDEwICs1ODYsMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiEnKCkqLS5ffiIKICAgICApOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShlbmNvZGUoZXhlYywgZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdV
UklDb21wb25lbnQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShjYWxsRnJh
bWUsIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJp
dG1hcDwyNTY+IGRvTm90RXNjYXBlID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNjAwLDggKzU5OCw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICIqKy0uL0BfIgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvU3Ry
aW5nVmlldyhleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsK
LSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvU3RyaW5nVmlldyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFsmXSAoU3Ry
aW5nVmlldyB2aWV3KSB7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBpZiAodmlldy5pczhCaXQoKSkg
ewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGMgPSB2aWV3LmNoYXJhY3RlcnM4KCk7CkBAIC02
MzYsOSArNjM0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNj
YXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9TdHJpbmdWaWV3KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAg
ICAgICAgLy8gV2UgdXNlIGludCBmb3IgayBhbmQgbGVuZ3RoIGludGVudGlvbmFsbHkgc2luY2Ug
d2Ugd291bGQgbGlrZSB0byBldmFsdWF0ZQogICAgICAgICAvLyB0aGUgY29uZGl0aW9uIGBrIDw9
IGxlbmd0aCAtNmAgZXZlbiBpZiBsZW5ndGggaXMgbGVzcyB0aGFuIDYuCiAgICAgICAgIGludCBr
ID0gMDsKQEAgLTY4OCw2MiArNjg2LDYxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLT52bSgpLCBidWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgICAgICByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhy
b3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVu
dHNDYWxsZWVBbmRDYWxsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50
cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29u
dGV4dC4iKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
J2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGlu
IHRoaXMgY29udGV4dC4iKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jTWFrZVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBl
cnJvclN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpU
eXBlRXJyb3IpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBleGVjLT5hcmd1bWVudCgwKSwgbnVsbHB0ciwgVHlw
ZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3Rh
bmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1l
LCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoZXhlYywgdGhpc1ZhbHVlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1
ZSkpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KSB7Ci0gICAgICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSB0aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKKyAg
ICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBl
KGNhbGxGcmFtZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhcHJvdG90eXBlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZt
LCBleGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNPYmplY3QtPmdldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgT2JqZWN0
UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVu
ZGVmaW5lZEVycm9yKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUp
OwogCkBAIC03NTcsMzEgKzc1NCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7Ci0gICAgdGhpc09iamVj
dC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwor
ICAgIHRoaXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3dJZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9t
aXNlUmVqZWN0aW9uVHJhY2tlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0ganNDYXN0PEpTUHJv
bWlzZSo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0Nh
c3Q8SlNQcm9taXNlKj4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKICAgICAvLyBJbnRlcm5h
bFByb21pc2VzIHNob3VsZCBub3QgYmUgZXhwb3NlZCB0byB1c2VyIHNjcmlwdHMuCiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPih2bSwgcHJvbWlzZSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBKU1ZhbHVlIG9w
ZXJhdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBvcGVyYXRpb25W
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKICAgICBBU1NFUlQob3BlcmF0aW9uVmFs
dWUuaXNOdW1iZXIoKSk7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxKU1Byb21p
c2VSZWplY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvblZhbHVlLnRvVUludDMyKGV4ZWMpKTsKKyAg
ICBhdXRvIG9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlv
bj4ob3BlcmF0aW9uVmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKG9wZXJh
dGlvbiA9PSBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb246OlJlamVjdCB8fCBvcGVyYXRpb24g
PT0gSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uOjpIYW5kbGUpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcikKLSAgICAgICAgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcihnbG9i
YWxPYmplY3QsIGV4ZWMsIHByb21pc2UsIG9wZXJhdGlvbik7CisgICAgICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVjdGlvblRyYWNrZXIoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHByb21pc2UsIG9wZXJhdGlvbik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CiAgICAgICAgIGNhc2UgSlNQcm9taXNlUmVqZWN0
aW9uT3BlcmF0aW9uOjpSZWplY3Q6CkBAIC03OTcsOTEgKzc5Myw4OCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhl
Y1N0YXRlKiBleAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVp
bHRpbkxvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGRh
dGFMb2coZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyksICJcbiIpOworICAgIGRh
dGFMb2coY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpLCAiXG4i
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRp
bkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwg
dG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHRvU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0lt
cG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7Ci0KLSAgICBhdXRvKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6
OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHByb21pc2UgPSBKU1By
b21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
YXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgYXV0byByZWpl
Y3QgPSBbJl0gKEpTVmFsdWUgcmVqZWN0aW9uUmVhc29uKSB7CiAgICAgICAgIGNhdGNoU2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIHJlamVjdGlv
blJlYXNvbik7CisgICAgICAgIHByb21pc2UtPnJlamVjdChjYWxsRnJhbWUsIHJlamVjdGlvblJl
YXNvbik7CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH07CiAKLSAgICBh
dXRvIHNvdXJjZU9yaWdpbiA9IGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKLSAgICBhdXRvKiBzcGVjaWZp
ZXIgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBhdXRv
IHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSk7CisgICAgYXV0byog
c3BlY2lmaWVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxs
RnJhbWUpOwogICAgIGlmIChFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uLT52YWx1ZSgpKTsKIAogICAg
IC8vIFdlIGFsd2F5cyBzcGVjaWZ5IHBhcmFtZXRlcnMgYXMgdW5kZWZpbmVkLiBPbmNlIGR5bmFt
aWMgaW1wb3J0KCkgc3RhcnRzIGFjY2VwdGluZyBmZXRjaGluZyBwYXJhbWV0ZXJzLAogICAgIC8v
IHdlIHNob3VsZCByZXRyaWV2ZSB0aGlzIGZyb20gdGhlIGFyZ3VtZW50cy4KICAgICBKU1ZhbHVl
IHBhcmFtZXRlcnMgPSBqc1VuZGVmaW5lZCgpOwotICAgIGF1dG8qIGludGVybmFsUHJvbWlzZSA9
IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShleGVjLCBzcGVjaWZp
ZXIsIHBhcmFtZXRlcnMsIHNvdXJjZU9yaWdpbik7CisgICAgYXV0byogaW50ZXJuYWxQcm9taXNl
ID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKGNhbGxGcmFtZSwg
c3BlY2lmaWVyLCBwYXJhbWV0ZXJzLCBzb3VyY2VPcmlnaW4pOwogICAgIGlmIChFeGNlcHRpb24q
IGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZWpl
Y3QoZXhjZXB0aW9uLT52YWx1ZSgpKTsKLSAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGludGVy
bmFsUHJvbWlzZSk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZShjYWxsRnJhbWUsIGludGVybmFsUHJv
bWlzZSk7CiAKICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51
bWVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0gICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPT0gMik7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7
Ci0gICAgYm9vbCBlbnVtZXJhYmxlID0gb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUo
KTsKKyAgICBib29sIGVudW1lcmFibGUgPSBvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZW51bWVyYWJs
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNPd25LZXlz
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y093bktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAg
ICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3Bl
cnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxsRnJhbWUsIG9i
amVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5UTCkKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwot
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgZGF0ZVRpbWVGb3JtYXQtPmlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBkb3VibGUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgy
KS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDIpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdCgqZXhlYywgdmFsdWUpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZv
cm1hdCgqY2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAppbmRl
eCA5NDhkNjdlYzE4Zjk1ZTFmNjJlOThkMThmNmI2ODJmNDIyNmFjZjc2Li4yMTEzMGY5YjYwYzll
OWRlZDE3ZDRhZTE1YzAzNTIwODVhOTQ1ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTI5LDM1ICsy
OSwzNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgcmVhbGx5IGJl
IGluIEpTR2xvYmFsT2JqZWN0LmNwcCwgYnV0IHB1dHRpbmcgdGhlbSB0aGVyZQogLy8gaXMgYSAw
LjUlIHJlZHVjdGlvbi4KIAogZXh0ZXJuIGNvbnN0IEFTQ0lJTGl0ZXJhbCBPYmplY3RQcm90b0Nh
bGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3I7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUkkoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkko
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNv
ZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxs
ZWVBbmRDYWxsZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNNYWtlVHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y0J1aWx0aW5Mb2coRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGlt
ZUZvcm1hdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNEZWNvZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRW5jb2RlVVJJKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0VzY2FwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlw
ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRy
YWNrZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmli
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVy
YWJsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogZG91YmxlIGpzVG9OdW1iZXIoU3RyaW5nVmll
dyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggMzk5MzRhNmIx
MDlhNTNmNGU3NjBkNjQ5ZGYzODE4NTlmOWU2MjhiMS4uOTdiYjk3ZDdkMjM3ZDY2N2U4YTBmMWMw
YjdlNzZhYjIyYWZmNDI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgK
QEAgLTQ5LDkgKzQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogLy8gRHJvcEFsbExvY2tzIG9iamVj
dCB0YWtlcyBjYXJlIHRvIHJlbGVhc2UgdGhlIEpTTG9jayBvbmx5IGlmIHlvdXIKIC8vIHRocmVh
ZCBhY3F1aXJlZCBpdCB0byBiZWdpbiB3aXRoLgogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBWTTsKIGNsYXNzIEpTTG9jazsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGluaXRpYWxp
emF0aW9uIG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZNLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGU4ODc4MGI1
ZDEwMzRiZmRmMTI2Mjc4ZjJiMDFhZTQ4NGE0NjZhYjguLjBlNWE5N2U4YzMxMDIwN2E1M2JkOTE2
MjhjZTNjZTM5NjJiNTZkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTUwLDE0ICs1MCwxNCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFy
c2VNb2R1bGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJGZXRjaChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50
aWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJSZXNvbHZlU3luYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB9CiAKQEAgLTM4NywzMyArMzg3LDMzIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBKU01vZHVsZUxvYWRlcjo6Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIGF1dG8gcmVqZWN0ID0gWyZdIChKU1ZhbHVlIHJlamVjdGlv
blJlYXNvbikgewogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlamVjdChleGVjLCByZWplY3Rpb25SZWFzb24pOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZWplY3QoY2FsbEZyYW1lLCByZWplY3Rp
b25SZWFzb24pOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9OwogCi0gICAgY29uc3QgSWRl
bnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUu
ZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhjZXB0aW9u
KCkpOwogCi0gICAgSlNWYWx1ZSBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1Zh
bHVlIHNvdXJjZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byoganNTb3VyY2VD
b2RlID0ganNDYXN0PEpTU291cmNlQ29kZSo+KHNvdXJjZSk7CiAgICAgU291cmNlQ29kZSBzb3Vy
Y2VDb2RlID0ganNTb3VyY2VDb2RlLT5zb3VyY2VDb2RlKCk7CiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgaWYgKHNvdXJjZUNvZGUucHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6V2ViQXNzZW1ibHkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseTo6aW5zdGFudGlhdGUoZXhlYywgZGVmZXJyZWQsIG1v
ZHVsZUtleSwganNTb3VyY2VDb2RlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNXZWJBc3NlbWJseTo6aW5zdGFudGlhdGUoY2FsbEZyYW1lLCBkZWZlcnJlZCwgbW9kdWxlS2V5
LCBqc1NvdXJjZUNvZGUpKTsKICNlbmRpZgogCiAgICAgQ29kZVByb2ZpbGluZyBwcm9maWxlKHNv
dXJjZUNvZGUpOwpAQCAtNDIzLDQ4ICs0MjMsNDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHZt
LCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gcmVqZWN0KGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBzb3VyY2VDb2RlKSk7CisgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IudG9FcnJv
ck9iamVjdChnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUpKTsKICAgICBBU1NFUlQobW9kdWxlUHJv
Z3JhbU5vZGUpOwogCi0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9k
dWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCks
IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIE1vZHVsZUFuYWx5
emVyIG1vZHVsZUFuYWx5emVyKGNhbGxGcmFtZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1
bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhp
Y2FsVmFyaWFibGVzKCkpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIHJlamVjdChjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbW9kdWxlQW5hbHl6ZXIuYW5h
bHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5y
ZXNvbHZlKGNhbGxGcmFtZSwgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5v
ZGUpKTsKICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBtb2R1bGVSZWNvcmQg
PSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9k
dWxlUmVjb3JkKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxl
UmVjb3JkKSAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGNh
bGxGcmFtZSwgbnVsbHB0cikpKTsKIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCku
c2l6ZSgpKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxG
cmFtZSwgbnVsbHB0ciwgbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkuc2l6ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBz
aXplX3QgaSA9IDA7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVSZWNvcmQtPnJlcXVlc3Rl
ZE1vZHVsZXMoKSkgewotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywg
anNTdHJpbmcodm0sIGtleS5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGNhbGxGcmFtZSwgaSsrLCBqc1N0cmluZyh2bSwga2V5LmdldCgpKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxl
RGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3Ry
YWN0TW9kdWxlUmVjb3JkKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvKiBtb2R1
bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3JkKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1
bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAi
LCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKIAotICAgIG1vZHVsZVJlY29yZC0+
bGluayhleGVjLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNDcyLDcxICs0NzIsNzEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhl
Y1N0YXQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlclJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIC8vIEhvb2sgcG9pbnQsIExv
YWRlci5yZXNvbHZlLgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jy
b3dzZXItcmVzb2x2ZQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhl
IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9y
IGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJl
c291cmNlLgotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9k
dWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01vZHVsZUxvYWRlciog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+
cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMt
PmFyZ3VtZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnJlc29s
dmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlU3luYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU01vZHVsZUxvYWRlciog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1
bGVMb2FkZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0
byByZXN1bHQgPSBsb2FkZXItPnJlc29sdmVTeW5jKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBl
eGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIGF1dG8gcmVzdWx0ID0g
bG9hZGVyLT5yZXNvbHZlU3luYyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgcmVzdWx0KSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAv
LyBIb29rIHBvaW50LCBMb2FkZXIuZmV0Y2gKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIu
aW8vbG9hZGVyLyNicm93c2VyLWZldGNoCiAgICAgLy8gVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0
aGUgcmVzb3VyY2UgYWN0dWFsbHkuCiAgICAgLy8gRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3Jl
IHNoZWxsIGNhbiBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQogICAgIC8v
IGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLgotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRl
cio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMt
PmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobG9hZGVyLT5mZXRjaChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxK
U01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9hZGVy
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvKiBtb2R1bGVOYW1lc3BhY2VPYmplY3QgPSBsb2FkZXIt
PmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
YXV0byogbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID0gbG9hZGVyLT5nZXRNb2R1bGVOYW1lc3BhY2VP
YmplY3QoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG1vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0gQWRkaXRpb25hbCBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJFdmFsdWF0ZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2
YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIC8vIFRvIGluc3RydW1lbnQgYW5kIHJldHJpZXZlIHRoZSBlcnJvcnMgcmFpc2Vk
IGZyb20gdGhlIG1vZHVsZSBleGVjdXRpb24sCiAgICAgLy8gd2UgaW5zZXJ0ZWQgdGhlIGhvb2sg
cG9pbnQgaGVyZS4KIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNNb2R1bGVMb2Fk
ZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU01vZHVs
ZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGxvYWRlci0+ZXZhbHVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50
KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9h
ZGVyLT5ldmFsdWF0ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0
aXZlU3RkRnVuY3Rpb24uY3BwCmluZGV4IDhjNTEwOTg5NmEwODM1ZjExNzdhNzJmMmQyZjM4ZTlh
ZjI1MDVhMmQuLmM5NTFiZWU0MmI5NmMzZGQ3NTcxZWMwMDQ2NTkzODJmOTIwNzU5ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rp
b24uY3BwCkBAIC01NywxMSArNTcsMTEgQEAgdm9pZCBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGkKICAgICBt
X2Z1bmN0aW9uQ2VsbC5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uQ2VsbCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU05hdGl2ZVN0ZEZ1bmN0
aW9uKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNDYXN0PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
OwogICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVTdGRG
dW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShzdGF0ZSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5u
YXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSk7CiB9CiAKIEpTTmF0aXZlU3RkRnVuY3Rpb24qIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50
cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgK
aW5kZXggZmFiOWQ2ZTM1N2U3OTcxNzVjZjA0ZDE1ZWFlMTc0Mjk2OGM3NDA5Yi4uZjZjNzNiMzgw
YTZkNzMxY2ZkMTgzMDNiODQ3MjVmN2I5MWMyY2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgTmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOwogCi11c2luZyBOYXRpdmVTdGRGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248
RW5jb2RlZEpTVmFsdWUoRXhlY1N0YXRlKik+OwordXNpbmcgTmF0aXZlU3RkRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPEVuY29kZWRKU1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik+
OwogCiBjbGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24g
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAppbmRleCA4MjQ4OThhZDNiMWRhMTUzODEzZjU4NDQ0Y2E3NmY0NzhkMDliODRiLi43NzRjNWMy
ZmRiMTJiNWMxNzg2ZjJkZjQ3OWVlOGUzMWE5ODkyZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTT05PYmpl
Y3QpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0
cmluZ2lmeShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlBy
b3RvRnVuY1BhcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfQogCkBAIC03OTcsNTUgKzc5Nyw1NSBAQCBORVZFUl9JTkxJTkUgSlNW
YWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogfQogCiAvLyBFQ01BLTI2MiB2
NSAxNS4xMi4yCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJz
ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90
b0Z1bmNQYXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmlu
ZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwogCiAg
ICAgSlNWYWx1ZSB1bmZpbHRlcmVkOwogICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7Ci0gICAgICAg
IExpdGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJzZXIoZXhlYywgdmlldy5jaGFyYWN0ZXJzOCgp
LCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hh
cj4ganNvblBhcnNlcihjYWxsRnJhbWUsIHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5sZW5ndGgo
KSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVy
YWxQYXJzZSgpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8
fCAhdW5maWx0ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkgewogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIu
Z2V0RXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCBqc29uUGFyc2VyLmdl
dEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBMaXRl
cmFsUGFyc2VyPFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHZpZXcuY2hhcmFjdGVyczE2KCksIHZp
ZXcubGVuZ3RoKCksIFN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBq
c29uUGFyc2VyKGNhbGxGcmFtZSwgdmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5sZW5ndGgoKSwg
U3RyaWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQ
YXJzZSgpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAh
dW5maWx0ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkgewogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0
RXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCBqc29uUGFyc2VyLmdldEVy
cm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDIpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKICAgICAKLSAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0ZXJlZCk7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIFdhbGtlciB3YWxrZXIoZXhlYywgYXNPYmplY3QoZnVuY3Rpb24pLCBj
YWxsVHlwZSwgY2FsbERhdGEpOworICAgIFdhbGtlciB3YWxrZXIoY2FsbEZyYW1lLCBhc09iamVj
dChmdW5jdGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh3YWxrZXIud2Fsayh1bmZpbHRlcmVkKSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEy
LjMKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1
bmNTdHJpbmdpZnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgU3RyaW5naWZpZXIgc3RyaW5naWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIGV4
ZWMtPmFyZ3VtZW50KDIpKTsKKyAgICBTdHJpbmdpZmllciBzdHJpbmdpZmllcihjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5naWZpZXIuc3RyaW5naWZ5KGV4ZWMtPmFyZ3VtZW50
KDApKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0
cmluZ2lmaWVyLnN0cmluZ2lmeShjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCiBKU1Zh
bHVlIEpTT05QYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBjNDY3MGY4YTkwMTUx
MjRhMDg3Y2M3MjYwMzk4Zjg0NjFiODg2OWI2Li43MThjMTU2MTAzMTg5Zjg3NGM5NWU4MWM3Zjlh
NTlkNDllZjA4MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCkBAIC0yMzAyLDEyICsyMzAyLDEyIEBAIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoY2Fs
bEZyYW1lLCB2YWx1ZSwgcHJvdG8pKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA3NzZjMWZiMGUwZDgxYTYwZTlhNTcxMThiNGRm
MzkyZDI2ZmYxMjkwLi41MzRiN2RiNTNmNWY4Y2NjMDJhZDQ2ZDUwODA4NDk4OGVmYjRkODBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTExODQsNyArMTE4
NCw3IEBAIGNsYXNzIEpTRmluYWxPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNPYmplY3QgewogICAg
IH0KIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNl
T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogaW5saW5lIEpTT2JqZWN0KiBKU09i
amVjdDo6Y3JlYXRlUmF3T2JqZWN0KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggZGQxMTI0NTk5YTEyMGNjZjdhMjllZGRiYTM2OGY2NTQ3ZjNkZTUwMC4uODk0MWQ1OGY5
MTVjZTEzMGJhYjY5ZDcxYzJmYjY2MjU1ODJmOGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJy
YXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvcjo6SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNvbnN0cnVjdFR5cGVkQXJy
YXlWaWV3LCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldykKQEAgLTY1LDExICs2NSwxMSBAQCBTdHJ1
Y3R1cmUqIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKAogCiAK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJh
eVZpZXcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
JVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKKyAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IGZhYjZlMDllODdkNDM2NzI1NGY1YThjNmJjMjVmZDJk
MjEzZDExY2UuLjMwYjBkZmYwOGZkZDI2ZWJiYzVkZjY1NzQ2OTZjNWU5MjM0NmI0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuY3BwCkBAIC0zOCwyMjMgKzM4LDIyMiBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKICNkZWZpbmUgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGZ1
bmN0aW9uTmFtZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzd2l0Y2gg
KHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VU
eXBlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdl
dE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhDbGFtcGVkQXJyYXk+KHZtLCBl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gZnVuY3Rpb25OYW1lPEpTVWludDhDbGFtcGVkQXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZUludDMyOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MzJBcnJheT4o
dm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVp
bnQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpT
VWludDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDMyQXJyYXk+KHZt
LCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IGNhc2UgVHlwZUZsb2F0NjQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVu
Y3Rpb25OYW1lPEpTRmxvYXQ2NEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTRmxv
YXQ2NEFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIGNhc2UgVHlwZUZsb2F0MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTRmxvYXQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rp
b25OYW1lPEpTRmxvYXQzMkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZUludDg6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50OEFycmF5Pih2bSwgZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50OEFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVpbnQ4OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhBcnJheT4odm0sIGNhbGxGcmFt
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlw
ZUludDE2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1l
PEpTSW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MTZBcnJheT4o
dm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIGNhc2UgVHlwZVVpbnQxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4g
ZnVuY3Rpb25OYW1lPEpTVWludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpT
VWludDE2QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGNhc2UgTm90VHlwZWRBcnJheTogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IGNhc2UgVHlwZURhdGFWaWV3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXciX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3MpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSB3aGls
ZSAoZmFsc2UpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmll
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odmFsdWUuaXNDZWxsKCkgJiYgaXNUeXBlZFZp
ZXcodmFsdWUuYXNDZWxsKCktPmNsYXNzSW5mbyhleGVjLT52bSgpKS0+dHlwZWRBcnJheVN0b3Jh
Z2VUeXBlKSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzQ2Vs
bCgpICYmIGlzVHlwZWRWaWV3KHZhbHVlLmFzQ2VsbCgpLT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0
LT52bSgpKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1
bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5pc0NlbGwo
KSB8fCAhaXNUeXBlZFZpZXcoYXJndW1lbnQuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAg
ICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKLSAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlw
ZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCktPmNsYXNz
SW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKICAgICBBU1NFUlQoaXNUeXBlZFZpZXco
dHlwZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5Q29uc3RydWN0b3IodHlwZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTb3J0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1l
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFS
UkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNs
dWRlcyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhP
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RP
VFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04o
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSm9pbik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJG
dW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2Jq
ZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J1ZmZlcik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5j
TGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xl
bmd0aCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURB
UlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJG
dW5jQnl0ZUxlbmd0aCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J5dGVPZmZzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURB
UlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2
ZXJzZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBF
X0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5n
VGFnKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHN3aXRj
aCAodGhpc1ZhbHVlLmdldE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFn
ZVR5cGUpIHsKICAgICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaAppbmRleCA0ZTMzNDMxNDIyOWZlMDhmOTliMzllYzZmNTA4M2FkNzhmOTQ3MDcyLi41
ZDU0OTkzNjhjYWZhZWViYWQxMGZkYWFmNDEyNzliZGJiNTA1NDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oCkBAIC00NSwxMCArNDUsMTAgQEAgY2xhc3MgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsK
IH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0lzVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
aXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRl
KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5j
U29ydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTdWJhcnJheUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNzc2ZWMzYzRmMjFhYjhlY2QxNDJmOWNjNjU3NWFhMmRi
OTYwZDg0OC4uNzJhMjFhNTA1NTJjNjY4ZGVhYmY3M2Q0YTYxZjIzNjA2ZGM2MzNkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAt
NDcsNjIgKzQ3LDYxIEBAIHZvaWQgTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUsIEdldHRlclNlCiAgICAgcHV0RGlyZWN0Tm9u
SW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVj
aWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFw
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1h
cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IE1hcENvbnN0cnVjdG9yOjpNYXBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsTWFwLCBjb25zdHJ1Y3RNYXApCiB7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiTWFwIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiTWFwIikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RNYXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0p
OwotICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+
bWFwU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5l
d1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgaXRlcmFi
bGUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNNYXA6OmNy
ZWF0ZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIG1h
cFN0cnVjdHVyZSkpKTsKIAogICAgIGlmIChhdXRvKiBpdGVyYWJsZU1hcCA9IGpzRHluYW1pY0Nh
c3Q8SlNNYXAqPih2bSwgaXRlcmFibGUpKSB7CiAgICAgICAgIGlmIChpdGVyYWJsZU1hcC0+Y2Fu
Q2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShtYXBTdHJ1Y3R1cmUpKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNsb25l
KGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZU1hcC0+Y2xvbmUoY2FsbEZyYW1lLCB2
bSwgbWFwU3RydWN0dXJlKSkpOwogICAgIH0KIAotICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3Jl
YXRlKGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpOworICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3Jl
YXRlKGNhbGxGcmFtZSwgdm0sIG1hcFN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24g
PSBtYXAtPkpTT2JqZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAgICBK
U1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSBtYXAtPkpTT2JqZWN0OjpnZXQoY2FsbEZyYW1lLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zZXQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAg
IENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1
bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgeworICAgIGZvckVhY2hJbkl0ZXJh
YmxlKGNhbGxGcmFtZSwgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCFuZXh0SXRlbS5pc09iamVjdCgpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSk7CisgICAgICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFt
ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbmV4dEl0ZW0uZ2V0
KGV4ZWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBuZXh0SXRlbS5nZXQoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTExMCwyNSArMTA5LDI1IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IGNhbGwoZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1
bmN0aW9uQ2FsbERhdGEsIG1hcCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUs
IGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhLCBtYXAsIGFyZ3VtZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG1hcCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1
bmNNYXBCdWNrZXRIZWFkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0
PEpTTWFwKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBKU01hcCogbWFw
ID0ganNDYXN0PEpTTWFwKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VS
VF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oZ2xvYmFsT2JqZWN0
LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgSlNNYXAqIG1hcCA9IGpzQ2Fz
dDxKU01hcCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGF1dG8qIGhl
YWQgPSBtYXAtPmhlYWQoKTsKICAgICBBU1NFUlQoaGVhZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShoZWFkKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2
YXRlRnVuY01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1p
Y0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkp
OwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcDo6QnVj
a2V0VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwor
ICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIGJ1Y2tldCA9
IGJ1Y2tldC0+bmV4dCgpOwogICAgIHdoaWxlIChidWNrZXQpIHsKQEAgLTEzNiwyMSArMTM1LDIx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRO
ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YnVja2V0KTsKICAgICAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgfQotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+dm0oKS5zZW50aW5lbE1hcEJ1
Y2tldCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVu
Y01hcEJ1Y2tldEtleShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpT
TWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBh
dXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nh
c3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKTsKKyAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUq
PihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJ1Y2tldC0+a2V5KCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01h
cEJ1Y2tldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4o
ZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nh
c3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
QVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5
cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBh
dXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJ1Y2tldC0+dmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaAppbmRleCBlZDQ4MzA1YzVkYjNkNGZiZDY0NWYwOTYz
MTgwMzg2ZDQyMTJmNzc5Li4xYmJhYjc2ZjdiYjBmYmViMTI1MzkyYTA0YTIzZGZiNmUxM2RkNWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgK
QEAgLTU2LDkgKzU2LDkgQEAgY2xhc3MgTWFwQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE1hcFByb3RvdHlw
ZSosIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01h
cEJ1Y2tldEtleShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5j
TWFwQnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRl
RnVuY01hcEJ1Y2tldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAKaW5kZXggYzIyOTA1ZTg4MTNkNGYyNGM5OTE1NjRlZmIyN2FmNDU1Nzc0YWY0ZC4u
YWY1NzI2ZjdiNmU5MmE3ZTlmODgwZDYyZGNmYTMxZmRkZTA5MzgwZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC00OCwxMyArNDgsMTMg
QEAgY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6
OnNfaW5mbywgJm1hcFByb3RvdHlwZVRhYmwKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jSGFzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
U2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgIAogdm9pZCBNYXBQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKQEAgLTc4LDkgKzc4LDkgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0dFVFRF
Ul9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgbWFwUHJvdG9GdW5j
U2l6ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFj
Y2Vzc29yKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBK
U01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlz
Q2VsbCgpKSkgewpAQCAtOTUsNTIgKzk1LDUyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFw
KiBnZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXAp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgbWFw
LT5jbGVhcihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVs
ZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG1hcC0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXAp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShtYXAtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNI
YXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4obWFwLT5oYXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKTsKKyAg
ICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
OwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIG1hcC0+c2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlz
VmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Np
emUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIobWFwLT5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMmIwNmQ2NjAzNWE4ZjhhODIxYjYzN2Rj
N2M1OTkzMDg0OWQ4MTJmYS4uYWRmZmFlZGVhOTVkNGQwMTE0NmE0ZWI1NWVmYjA3YTQ0YWUxOWFh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAg
LTMzLDM4ICszMywzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKE1hdGhPYmplY3QpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbmgoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmND
ZWlsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jQ2x6MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNDb3MoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNDb3NoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jRXhwKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jRXhwbTEoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGcm91bmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWlu
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
UG93KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jUmFuZG9tKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jUm91bmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jU2luKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2luaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0FDb3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQVRhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FU
YW4yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNDYnJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNDbHozMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3NoKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGcm91
bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0h5cG90KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0xvZzFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jTWF4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jUmFuZG9tKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jU2lnbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNTcXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbmgoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0lNdWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3Qg
Q2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07CiAKQEAg
LTEyNyw3NiArMTI3LDc2IEBAIHZvaWQgTWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGZhYnMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmYWJzKGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Rv
dWJsZU51bWJlcihNYXRoOjphY29zKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvcyhj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW4oRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbihleGVjLT5hcmd1bWVudCgwKS50b051bWJl
cihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1h
dGg6OmFzaW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FU
YW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW4oZXhlYy0+YXJndW1lbnQo
MCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihNYXRoOjphdGFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
QVRhbjIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQVRhbjIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGRvdWJsZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7Cisg
ICAgZG91YmxlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGRvdWJsZSBhcmcxID0gZXhlYy0+YXJndW1lbnQoMSku
dG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGFyZzEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
LnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihhdGFuMihhcmcwLCBhcmcxKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNl
aWwoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihjZWlsKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQ2x6MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQ2x6MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIHVpbnQzMl90IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCkudG9VSW50MzIo
ZXhlYyk7CisgICAgdWludDMyX3QgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvVUlu
dDMyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGNseih2YWx1ZSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0NvcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6Y29zKGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoTWF0aDo6Y29zKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
RXhwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0V4cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jRmxvb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jRmxvb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZsb29yKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoZmxvb3IoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUp
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBv
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNIeXBvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2ln
bmVkIGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSBt
YXggPSAwOwogICAgIFZlY3Rvcjxkb3VibGUsIDg+IGFyZ3M7CiAgICAgYXJncy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGFyZ3NDb3VudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFy
Z3NDb3VudDsgKytpKSB7Ci0gICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgYXJncy51bmNoZWNrZWRB
cHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGlmIChzdGQ6OmlzaW5mKGFyZ3NbaV0pKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcigrc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKSk7CkBAIC0yMTcsMTkgKzIxNywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzcXJ0KHN1bSkgKiBtYXgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVt
YmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
TWF0aDo6bG9nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01h
eChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdW5zaWdu
ZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIGFyZ3ND
b3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSAt
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAgIGZvciAodW5zaWdu
ZWQgayA9IDA7IGsgPCBhcmdzQ291bnQ7ICsraykgewotICAgICAgICBkb3VibGUgdmFsID0gZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2
YWwgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGNhbGxGcmFtZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgICAgICBpZiAoc3RkOjppc25hbih2YWwpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQTmFO
OwpAQCAtMjM5LDE0ICsyMzksMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jTWluKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7
CisgICAgdW5zaWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAg
ICAgZG91YmxlIHJlc3VsdCA9ICtzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFyZ3NDb3VudDsgKytrKSB7Ci0gICAg
ICAgIGRvdWJsZSB2YWwgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihleGVj
KTsKKyAgICAgICAgZG91YmxlIHZhbCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoayku
dG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkpIHsKICAgICAg
ICAgICAgIHJlc3VsdCA9IFBOYU47CkBAIC0yNTYsMzQgKzI1NiwzNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gRUNNQSAxNS44
LjIuMS4xMwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgZG91YmxlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAg
IGRvdWJsZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIGRvdWJsZSBhcmcyID0gZXhlYy0+YXJndW1lbnQoMSkudG9O
dW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGFyZzIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRv
TnVtYmVyKGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
b3BlcmF0aW9uTWF0aFBvdyhhcmcsIGFyZzIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RG91YmxlTnVtYmVyKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbU51bWJl
cigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihnbG9iYWxP
YmplY3QtPndlYWtSYW5kb21OdW1iZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
anNSb3VuZChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGpzUm91bmQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBkb3VibGUgYXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIo
ZXhlYyk7CisgICAgZG91YmxlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKTsKICAgICBpZiAoc3RkOjppc25hbihhcmcpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIGlmICghYXJnKQpAQCAtMjkxLDk1ICsyOTEsOTUg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGQ6OnNpZ25i
aXQoYXJnKSA/IC0xIDogMSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNTaW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpz
aW4oZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpzaW4oY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVy
KHNxcnQoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzcXJ0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0
aDo6dGFuKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6dGFuKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpbnQzMl90IGxlZnQgPSBleGVjLT5hcmd1bWVudCgw
KS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgbGVmdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBpbnQzMl90IHJpZ2h0
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IHJpZ2h0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihsZWZ0ICogcmlnaHQpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmFjb3NoKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
YWNvc2goY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2lu
aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbmgoZXhlYy0+YXJndW1lbnQo
MCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihNYXRoOjphc2luaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxG
cmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0FUYW5oKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0FUYW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFuaChl
eGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW5oKGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQ2JydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDYnJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihN
YXRoOjpjYnJ0KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6Y2JydChjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zaChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoTWF0aDo6Y29zaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvc2goY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwbTEoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihN
YXRoOjpleHBtMShjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNGcm91bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0Pihl
eGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0PihjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihNYXRoOjpsb2cxcChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzFwKGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzEwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVt
YmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
TWF0aDo6bG9nMTAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0xvZzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzIoZXhlYy0+YXJndW1l
bnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Rv
dWJsZU51bWJlcihNYXRoOjpsb2cyKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2Fs
bEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jU2luaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpzaW5oKGV4
ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6c2luaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY1RhbmgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0
aDo6dGFuaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnRhbmgoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVuYyhFeGVjU3RhdGUqZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0lu
dGVnZXJQcmVzZXJ2ZU5hTihjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCmluZGV4IGFmNTdkMzRi
YTVlNDNiYTQxZmM0MjViZWQyMzM3ZWM2ZjJiZjZhZjcuLmJjZGViNDNjOTExNmU2MDA1NThjZGEy
Y2UwZGVkYjRjNThkOGFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmgKQEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgTWF0aE9iamVjdCBmaW5hbCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0FicyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBYnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNUcnVuYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01pY3JvdGFzay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmgKaW5kZXggOWM0ZjI3
NDY1MzE0ZWQ0ZGQ2MDY1NzFlNjJkNzc5MjQ3N2Y5M2E2Zi4uNWQ4ODkxNWQ1YjRlYzM5MzQ4M2E0
ZDFkYWFiYzViYzU2YzUzNzBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWljcm90YXNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWlj
cm90YXNrLmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogY2xhc3MgTWljcm90YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWljcm90YXNrPiB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDYyMTY1MDdjYWI2MGU4OGI0YjY5OTQxOTcyYWVhNzNi
YjNkNDQzZWQuLmRjMzQwNjgxMmE2ZDMwNjc4NDM2MzUyNmRlNDUyNGM0ODM0M2RkNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC01MCwyNCArNTAsMjQgQEAgdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHIK
IH0KIAogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+Ojpjb25zdHJ1Y3ROYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+Ojpjb25zdHJ1Y3ROYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7CisgICAgSlNW
YWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNT
RVJUKGVycm9yU3RydWN0dXJlKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1l
c3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZy
YW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNl
KSkpOwogfQogCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjYWxsTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgbWVzc2Fn
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBq
c0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5lcnJvclN0
cnVjdHVyZSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdl
LCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogdGVtcGxhdGUgY2xhc3MgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5k
ZXggNzMwN2QwMTBjOTM0NDY5NmM2NGFhYzlhOGMyOTVmN2FiMzNlNGEzMC4uMTY2ZWU3MWI0NTQy
NDhiODM0ZmNkN2MyMzczYWUyNGE3MWRhMGQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNjAsMTAgKzYw
LDEwIEBAIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvckJhc2UgewogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAg
fQogCi0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYgdm0pIHsgcmV0dXJuIGdsb2Jh
bE9iamVjdCh2bSktPmVycm9yU3RydWN0dXJlKGVycm9yVHlwZSk7IH0KKyAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlKFZNJikgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmVycm9yU3RydWN0
dXJlKGVycm9yVHlwZSk7IH0KIHByaXZhdGU6Ci0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci0gICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAppbmRleCA3YmRjOGY5
NmQwMzAxYzIwNDA0MzE0YjlhZWI3NGRiZGIwMzA3YTRiLi4xMGJhZjkwOTY3OTczMTcyYWM0Mzg2
ODVmMGI3NzVhMjYyZTZmOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUZ1bmN0aW9uLmgKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIAotdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSlNDX0hPU1RfQ0FMTCAqUmF3TmF0aXZlRnVuY3Rpb24pKEV4ZWNTdGF0ZSopOwordHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqUmF3TmF0aXZlRnVuY3Rpb24pKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsKIHB1
YmxpYzoKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTmF0aXZlRnVuY3Rpb24gewogICAgIGJvb2wg
b3BlcmF0b3I9PShOYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0g
b3RoZXIubV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yIT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAKLSAgICBFbmNvZGVkSlNW
YWx1ZSBvcGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gbV9wdHIoZXhlYyk7IH0K
KyAgICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBtX3B0cihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSk7IH0KIAogICAgIHZvaWQqIHJhd1BvaW50ZXIoKSBjb25zdCB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihtX3B0cik7IH0KIApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBU
YWdnZWROYXRpdmVGdW5jdGlvbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogICAg
IGJvb2wgb3BlcmF0b3IhPShUYWdnZWROYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9wdHIgIT0gb3RoZXIubV9wdHI7IH0KIAotICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJhdG9y
KCkoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBOYXRpdmVGdW5jdGlvbigqdGhpcykoZXhlYyk7
IH0KKyAgICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBOYXRpdmVGdW5jdGlvbigqdGhp
cykoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBO
YXRpdmVGdW5jdGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggYTU2Y2FiM2ZhZTc5ZWU5NDVlNjk3
NjYyNGExNjRiNWIxOGQ4ZjRjOC4uOTY3ZGJmYzU5ZDFmYmY2MjgwZmU1YmYxZjU5YzJlY2ZhMGU3
ODIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRl
ckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0
dGVyRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3Qg
Q2xhc3NJbmZvIE51bGxHZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0
ZXJGdW5jdGlvbikgfTsKIAogbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQo
RXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1
cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1NmQ1M2NjNGFh
Njc2YmY3M2RmYzFlMGVlNmY0ZjNhNjI3MTg3MDMzLi45MGM1Y2YzZWVkZmJmYzUxZTEzN2UzMjMx
OTcxOWMwODIxN2Q2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBzdGF0aWMgYm9v
bCBjYWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIG5hbWVzcGFjZSBOdWxsU2V0
dGVyRnVuY3Rpb25JbnRlcm5hbCB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4ZWMp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyAg
ICBpZiAoY2FsbGVySXNTdHJpY3QoY2FsbEZyYW1lKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiU2V0dGluZyBhIHByb3Bl
cnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4MmE4ZmI0YmY0Mzk5NjUxNDBk
NTVkYmI3NDM5YTAxOTllM2U5OGIuLjkwNjgyOTM4YWY0ODgwNTgxYWU3MDQ3OGM4N2E1ZDc2NjEx
ZmEwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lz
SW50ZWdlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVn
ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTUyLDggKzUy
LDggQEAgY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVt
YmVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbE51bWJlckNvbnN0cnVjdG9yLCBjb25zdHJ1
Y3ROdW1iZXJDb25zdHJ1Y3RvcikKQEAgLTg2LDEzICs4NiwxMyBAQCB2b2lkIE51bWJlckNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJv
dG90eXBlKQogfQogCiAvLyBFQ01BIDE1LjcuMQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGRvdWJs
ZSBuID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9OdW1iZXIoZXhlYykgOiAwOworICAgIGRvdWJsZSBuID0gY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPyBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFt
ZSkgOiAwOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm51bWJlck9iamVjdFN0
cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIE51bWJlck9iamVjdCogb2JqZWN0ID0gTnVtYmVyT2JqZWN0OjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSk7CkBAIC0xMDEsMjEgKzEwMSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCiB9CiAKIC8vIEVDTUEgMTUuNy4yCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcighZXhlYy0+YXJndW1lbnRDb3VudCgpID8gMCA6IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcighY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPyAwIDogY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSk7CiB9CiAKIC8vIEVDTUEtMjYy
IDIwLjEuMi4zCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0ludGVnZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoZXhlYy0+YXJn
dW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oTnVtYmVy
Q29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0K
IAogLy8gRUNNQS0yNjIgMjAuMS4yLjUKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5j
SXNTYWZlSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBib29sIGlzSW50ZWdlcjsKICAg
ICBpZiAoYXJndW1lbnQuaXNJbnQzMigpKQogICAgICAgICBpc0ludGVnZXIgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5k
ZXggMDNhNWUxYjAwMzc4YmIyYmVjYzI2NGJkODkzYWM3N2U3ZjlkZTllMi4uMjhlMmY1NDEzMmVj
OGNkYjY0ZTkzZmMyNzVmYmM4YjkwYTQzNzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC00NCwxMSArNDQsMTEgQEAgdHlw
ZWRlZiBXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIERvdWJsZUNvbnZlcnNp
b25TdHJpbmdCdWlsZGVyOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Q
cmVjaXNpb24oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2Nh
bGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvRXhwb25lbnRpYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lz
aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtMzg2LDE4ICszODYs
MTggQEAgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJf
dCByYWRpeCkKIC8vIFRoaXMgbWV0aG9kIHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHNwZWNp
ZnlpbmcgYSBudW1iZXIgb2YgKmRlY2ltYWwgcGxhY2VzKgogLy8gdG8gcm91bmQgdGhlIHNpZ25p
ZmljYW5kIHRvIChvciwgcHV0IGFub3RoZXIgd2F5LCB0aGlzIG1ldGhvZCBvcHRpb25hbGx5IHJv
dW5kcwogLy8gdG8gYXJndW1lbnQtcGx1cy1vbmUgc2lnbmlmaWNhbnQgZmlndXJlcykuCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1
bmNUb0V4cG9uZW50aWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGRvdWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlz
VmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhl
Yywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlz
TnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAK
LSAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAvLyBQZXJmb3JtIFRvSW50ZWdlciBvbiB0aGUg
YXJndW1lbnQgYmVmb3JlIHJlbWFpbmluZyBzdGVwcy4KLSAgICBpbnQgZGVjaW1hbFBsYWNlcyA9
IHN0YXRpY19jYXN0PGludD4oYXJnLnRvSW50ZWdlcihleGVjKSk7CisgICAgaW50IGRlY2ltYWxQ
bGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0ludGVnZXIoY2FsbEZyYW1lKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5k
IEluZmluaXR5LgpAQCAtNDA1LDcgKzQwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51
bWJlcih4KSkpOwogCiAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwIHx8IGRlY2ltYWxQbGFjZXMg
PiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgInRv
RXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b0V4cG9u
ZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJfcyk7CiAKICAgICAv
LyBSb3VuZCBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHVuZGVmaW5lZCwgYWx3YXlzIGZvcm1hdCBh
cyBleHBvbmVudGlhbC4KICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CkBAIC00MjMs
MTkgKzQyMywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKiBleGVjKQogLy8gVGhpcyBtZXRob2QgdGFrZXMgYW4g
YXJndW1lbnQgc3BlY2lmeWluZyBhIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byByb3VuZCB0
aGUKIC8vIHNpZ25pZmljYW5kIHRvLiBIb3dldmVyIHdoZW4gY29udmVydGluZyBsYXJnZSB2YWx1
ZXMgKDFlKzIxIGFuZCBhYm92ZSkgdGhpcwogLy8gbWV0aG9kIHdpbGwgaW5zdGVhZCBmYWxsYmFj
ayB0byBjYWxsaW5nIFRvU3RyaW5nLiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgaWYgKCF0b1RoaXNOdW1i
ZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1Ro
aXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
dG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4KSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKIAotICAgIGludCBkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50
PihleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXIoZXhlYykpOworICAgIGludCBkZWNpbWFsUGxh
Y2VzID0gc3RhdGljX2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlcihj
YWxsRnJhbWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlm
IChkZWNpbWFsUGxhY2VzIDwgMCB8fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAidG9GaXhlZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2Vl
biAwIGFuZCAxMDAiX3MpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBe
MjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292ZXJzIElu
aW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00NTcsMjIgKzQ1
NywyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4
ZWQoRXhlY1N0YXRlKiBleGVjKQogLy8gZGVjaW1hbCwgd2hpbHN0IDEwMDAgaXMgY29udmVydGVk
IHRvIHRoZSBleHBvbmVudGlhbCByZXByZXNlbnRhdGlvbiAxLjAwZSszLgogLy8gRm9yIG5lZ2F0
aXZlIGV4cG9uZW50cyB2YWx1ZXMgPj0gMWUtNiBhcmUgZm9ybWF0ZWQgYXMgZGVjaW1hbCBmcmFj
dGlvbnMsCiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVudGlhbCBy
ZXByZXNlbnRhdGlvbi4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9G
dW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJl
cih2bSwgZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhp
c051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0
b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgLy8gVG8gcHJlY2lz
aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAg
aWYgKGFyZy5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgLy8gUGVyZm9ybSBUb0ludGVn
ZXIgb24gdGhlIGFyZ3VtZW50IGJlZm9yZSByZW1haW5pbmcgc3RlcHMuCi0gICAgaW50IHNpZ25p
ZmljYW50RmlndXJlcyA9IHN0YXRpY19jYXN0PGludD4oYXJnLnRvSW50ZWdlcihleGVjKSk7Cisg
ICAgaW50IHNpZ25pZmljYW50RmlndXJlcyA9IHN0YXRpY19jYXN0PGludD4oYXJnLnRvSW50ZWdl
cihjYWxsRnJhbWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgLy8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgaWYgKHNpZ25pZmljYW50RmlndXJl
cyA8IDEgfHwgc2lnbmlmaWNhbnRGaWd1cmVzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUg
YmV0d2VlbiAxIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVu
IDEgYW5kIDEwMCJfcyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRml4ZWRQcmVjaXNpb24oeCwgc2lnbmlmaWNhbnRGaWd1
cmVzLCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKIH0KQEAgLTU1Myw1MCArNTUzLDQ5IEBAIEpTU3Ry
aW5nKiBudW1iZXJUb1N0cmluZyhWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCBy
YWRpeCkKICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbnRlcm5hbCh2bSwgZG91YmxlVmFsdWUs
IHJhZGl4KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlOwotICAgIGlmICghdG9UaGlz
TnVtYmVyKHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihzdGF0ZSwgc2NvcGUsIHN0YXRlLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCks
IGRvdWJsZVZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGF1dG8gcmFk
aXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCksIHNjb3BlKTsKKyAgICBhdXRvIHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVu
dChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHNjb3BlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyVG9TdHJpbmdJbnRlcm5hbCh2bSwgZG91YmxlVmFsdWUsIHJhZGl4
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJl
cih2bSwgZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhp
c051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0
b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCiAjaWYgRU5BQkxFKElOVEwpCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnRsTnVtYmVy
Rm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOwotICAgIG51bWJlckZvcm1hdC0+aW5p
dGlhbGl6ZU51bWJlckZvcm1hdCgqZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKmNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3Jt
YXROdW1iZXIoKmV4ZWMsIHgpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKmNhbGxGcmFtZSwgeCkpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhl
eGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhj
YWxsRnJhbWUpKTsKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSB4OwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCB0aGlzVmFsdWUsIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih4KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKaW5kZXggMjllNTVjNWViMzRkYTI1ZDZi
YWZhNWU5MTliMDIzZDNhMTM0ODUzZi4uNzk3YTNjYjA4OGRkYWE0ZTZhMTJjZDA4ZDc5Y2VmODQ1
MjNmZWQyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTnVtYmVyUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIE51bWJlck9iamVjdCB7CiAgICAgTnVtYmVyUHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1Zh
bHVlT2YoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclBy
b3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEpTU3RyaW5nKiBp
bnQzMlRvU3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmlu
ZyogaW50NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogSlNT
dHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiwgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAppbmRleCA4ODRkOWZmZjQyZGQ1NjdlZGU3YmIzYjY0NzkxNTgzOTBiM2FhNmJiLi45NGVj
YWIzN2Y5NjQ2ZDE1ZGE1ZWIwZmI4YzI1OTFmOTZjNTI0NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC00MCwyMSAr
NDAsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
clNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHko
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJldmVu
dEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckFzc2lnbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckZyZWV6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9ySXNTZWFsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtOTMsOCArOTMsOCBAQCBjb25zdCBD
bGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaQogKi8KIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSwgY2FsbE9iamVjdENvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoT2Jq
ZWN0Q29uc3RydWN0b3IpCkBAIC0xMTUsMTEgKzExNSwxMCBAQCB2b2lkIE9iamVjdENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE9iagogfQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3ZhbHVlXSkKLXN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IG5ld1RhcmdldCkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmpl
Y3RXaXRoTmV3VGFyZ2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBqc0Nhc3Q8T2JqZWN0Q29u
c3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gb2JqZWN0Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVj
ayBuZXdUYXJnZXQgY29uZGl0aW9uIGluIHRoaXMgY2FsbGVyIHNpZGUgaW5zdGVhZCBvZiBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSBzaWRlLgpAQCAtMTQzLDQzICsx
NDIsNDMgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2UKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGFyZy50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdE9iamVjdChleGVjLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0V2l0aE5ld1RhcmdldChjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0KGV4ZWMsIEpTVmFs
dWUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0V2l0aE5l
d1RhcmdldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSgpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBjYWxs
RnJhbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmIChvYmplY3RWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5vdCBzZXQg
cHJvdG90eXBlIG9mIHVuZGVmaW5lZCBvciBudWxsIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVu
ZGVmaW5lZCBvciBudWxsIl9zKTsKIAotICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOworICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CiAgICAgaWYgKCFwcm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJvdG90
eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3RvdHlwZSB2YWx1ZSBj
YW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbCJfcyk7CiAKLSAgICBKU09iamVjdCogb2JqZWN0
ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IG9i
amVjdFZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0
ID0gdHJ1ZTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBl
KHZtLCBleGVjLCBwcm90b1ZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CisgICAgYm9vbCBk
aWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lLCBwcm90
b1ZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVT
RUQoZGlkU2V0UHJvdG90eXBlLCBzY29wZS5leGNlcHRpb24oKSB8fCBkaWRTZXRQcm90b3R5cGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogfQpAQCAtMjMyLDY0
ICsyMzEsNjQgQEAgSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2IKICAgICByZXR1cm4gZGVzY3JpcHRv
cnM7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5
S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1l
LCBvYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhleGVjLCBv
YmplY3QpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGNhbGxGcmFtZSwgb2Jq
ZWN0KSkpOwogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhj
YWxsRnJhbWUsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRp
b24gY2FjaGUuCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBv
YmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6
OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpT
eW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4
ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6RXhjbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckFzc2lnbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0
YXJnZXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHRhcmdldFZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOwotICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJn
ZXRWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIk9iamVjdC5hc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJh
bWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICBKU09iamVjdCogdGFyZ2V0
ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gRklYTUU6IEV4dGVuZCB0aGlzIGZvciBub24gSlNG
aW5hbE9iamVjdC4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGxpa2UgdG8gdXNlIHRoaXMgZmFzdCBw
YXRoIGZvciBmdW5jdGlvbiBvYmplY3RzIHRvby4KQEAgLTI5OCwxNyArMjk3LDE3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIDg+IHByb3Bl
cnRpZXM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgdmFsdWVzOwotICAgIHVuc2lnbmVkIGFy
Z3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBhcmdzQ291bnQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgYXJnc0NvdW50OyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpOworICAgICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAgICAgaWYgKHNvdXJjZVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgSlNPYmpl
Y3QqIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBKU09iamVj
dCogc291cmNlID0gc291cmNlVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAodGFyZ2V0Q2FuUGVy
Zm9ybUZhc3RQdXQpIHsKICAgICAgICAgICAgIGlmICghc291cmNlLT5zdGF0aWNQcm9wZXJ0aWVz
UmVpZmllZCh2bSkpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3RhdGljUHJv
cGVydGllcyhleGVjKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3RhdGljUHJv
cGVydGllcyhjYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB9CiAKQEAgLTM3NCwxMiArMzczLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICB0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCA9IGZhbHNlOwogCiAgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7Ci0gICAgICAgIHNv
dXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSwgZXhlYywg
cHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKTsKKyAgICAgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFt
ZXMoc291cmNlLCBjYWxsRnJhbWUsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKICAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0gKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAgICAgICAg
ICAgIGJvb2wgaGFzUHJvcGVydHkgPSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJv
cGVydHlTbG90KHNvdXJjZSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHNvdXJjZSwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgICAgIGlmICgh
aGFzUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDEzICszODcsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAg
ICBpZiAoTElLRUxZKCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQotICAgICAgICAg
ICAgICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gc291cmNlLT5nZXQo
Y2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3Bl
cnR5U2xvdCh0YXJnZXQsIHRydWUpOwotICAgICAgICAgICAgdGFyZ2V0LT5wdXRJbmxpbmUoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgICAgIHRh
cmdldC0+cHV0SW5saW5lKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVy
dHlTbG90KTsKICAgICAgICAgfTsKIAogICAgICAgICAvLyBGaXJzdCBsb29wIGlzIGZvciBzdHJp
bmdzLiBTZWNvbmQgbG9vcCBpcyBmb3Igc3ltYm9scyB0byBrZWVwIHN0YW5kYXJkaXplZCBvcmRl
ciByZXF1aXJlbWVudCBpbiB0aGUgc3BlYy4KQEAgLTQyNiwyOCArNDI1LDI4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0KTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGFyZ2V0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldFZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJPYmplY3QudmFsdWVzIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZCJfcyk7Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVl
LnRvT2JqZWN0KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJn
ZXRWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKLSAgICBKU0FycmF5KiB2YWx1ZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIG51bGxwdHIpOworICAgIEpTQXJyYXkqIHZhbHVlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
Y2FsbEZyYW1lLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyh2bSwgUHJvcGVydHlOYW1lTW9k
ZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwotICAgIHRhcmdldC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhlYywgcHJvcGVydGll
cywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAg
ICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQsIGNh
bGxGcmFtZSwgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGF1dG8gYWRkVmFsdWUgPSBbJl0gKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGFyZ2V0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5ID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wg
aGFzUHJvcGVydHkgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRhcmdldCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU2LDEyICs0NTUsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgaWYgKExJS0VMWSghc2xvdC5pc1RhaW50
ZWRCeU9wYXF1ZU9iamVjdCgpKSkKLSAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVlKGNh
bGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWUg
PSB0YXJnZXQtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgdmFsdWUgPSB0
YXJnZXQtPmdldChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgdmFsdWVzLT5wdXREaXJlY3RJbmRl
eChleGVjLCBpbmRleCsrLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlcy0+cHV0RGlyZWN0SW5kZXgo
Y2FsbEZyYW1lLCBpbmRleCsrLCB2YWx1ZSk7CiAgICAgfTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDAsIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsgaSA8IG51bVByb3BlcnRp
ZXM7IGkrKykgewpAQCAtNTc0LDI0ICs1NzMsMjQgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIl9z
KTsKLSAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7CisgICAgSlNPYmplY3QqIG9iaiA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgYXV0byBzdWNjZXNzID0gdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOworICAgIGF1dG8gc3Vj
Y2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgyKSwgZGVzY3JpcHRvcik7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgPT0gc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygp
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3Nv
ckRlc2NyaXB0b3IoKSkpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgb2Jq
LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBvYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkob2JqLCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1
ZSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqKSk7
CiB9CiAKQEAgLTY0MSwzOCArNjQwLDM4IEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRp
ZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvCiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJf
cyk7Ci0gICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKLSAgICBKU09iamVjdCogcHJvcHMgPSBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVj
KTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7CisgICAgSlNPYmplY3QqIHRhcmdldE9i
aiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIEpTT2JqZWN0KiBwcm9w
cyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXByb3BzKTsKICAgICBpZiAoVU5M
SUtFTFkoIXByb3BzKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhl
eGVjLCB0YXJnZXRPYmosIHByb3BzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMoY2FsbEZyYW1lLCB0YXJnZXRPYmosIHBy
b3BzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8u
aXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmpl
Y3Qgb3IgbnVsbC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVs
bC4iX3MpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCi0gICAg
ICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQotICAgICAg
ICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxs
RnJhbWUsIGFzT2JqZWN0KHByb3RvKSkKKyAgICAgICAgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsK
KyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7Ci0gICAgSlNPYmplY3QqIHByb3BlcnRp
ZXMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKKyAgICBKU09i
amVjdCogcHJvcGVydGllcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9PYmpl
Y3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVy
dGllcyhleGVjLCBuZXdPYmplY3QsIHByb3BlcnRpZXMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhjYWxsRnJhbWUsIG5l
d09iamVjdCwgcHJvcGVydGllcykpKTsKIH0KIAogZW51bSBjbGFzcyBJbnRlZ3JpdHlMZXZlbCB7
CkBAIC03OTAsMTcgKzc4OSwxNyBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gb2JqZWN0OwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2VhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiBPLgotICAgIEpTVmFsdWUg
b2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUob2JqKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yU2VhbChleGVjLCBhc09iamVjdChvYmopKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0
cnVjdG9yU2VhbChjYWxsRnJhbWUsIGFzT2JqZWN0KG9iaikpKSk7CiB9CiAKIEpTT2JqZWN0KiBv
YmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qp
CkBAIC04MjIsMzYgKzgyMSwzNiBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBvYmplY3Q7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckZyZWV6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gTy4KLSAgICBKU1Zh
bHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9iaik7Ci0gICAgSlNPYmplY3QqIHJlc3VsdCA9IG9iamVjdENvbnN0
cnVjdG9yRnJlZXplKGV4ZWMsIGFzT2JqZWN0KG9iaikpOworICAgIEpTT2JqZWN0KiByZXN1bHQg
PSBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShjYWxsRnJhbWUsIGFzT2JqZWN0KG9iaikpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0
ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1
bWVudC5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50
KTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYXJndW1lbnQpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOworICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGNhbGxG
cmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
U2VhbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gdHJ1
ZS4KLSAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2Jq
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CkBAIC04NjEsMTUgKzg2MCwxNSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3Qt
PmlzU2VhbGVkKHZtKSkpOwogCiAgICAgLy8gMi4gUmV0dXJuID8gVGVzdEludGVncml0eUxldmVs
KE8sICJzZWFsZWQiKS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0
SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZXhlYywgdm0sIG9iamVjdCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0SW50ZWdyaXR5TGV2
ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oY2FsbEZyYW1lLCB2bSwgb2JqZWN0KSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4o
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCBy
ZXR1cm4gdHJ1ZS4KLSAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgb2JqID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CkBAIC04NzksMjUgKzg3OCwyNSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4o
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihvYmplY3QtPmlzRnJvemVuKHZtKSkpOwogCiAgICAgLy8gMi4gUmV0dXJuID8gVGVzdEludGVn
cml0eUxldmVsKE8sICJmcm96ZW4iKS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0ZXN0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4oZXhlYywgdm0s
IG9iamVjdCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0SW50
ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4oY2FsbEZyYW1lLCB2bSwgb2JqZWN0
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2Jq
LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7Ci0gICAgYm9vbCBp
c0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKKyAgICBib29sIGlzRXh0
ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihzYW1lVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50
KDEpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KSk7CiB9CiAKIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggM2UwNjcyNGNlYWMz
OGExOWU4MjI3NmI0ZjM3MGYwODViYTUxYTdiZC4uNmVmMjQzODNhM2FkNGZkYTdmMTkwZGEwNzIz
YjFlMjNiMmNlMmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCkBAIC0yNiwxMSArMjYsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvcnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CmluZGV4IDAwMDg2NmZkZTlkMWMyOTFhMWYyZWIwYzdjYTMxZGM1YzRmZTVmNDguLmU1YTlkYWZk
ZTJkNzA3NzU3MDg3ZjU0YTYwN2E5NDk0NTMwOWMyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMzMsMTUgKzMzLDE1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoT2JqZWN0UHJvdG90eXBl
KTsKIApAQCAtNzgsMjQgKzc4LDI0IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9U
aGlzKGV4ZWMsIFN0cmljdE1vZGUpOwotICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CisgICAgSlNPYmplY3QqIHZh
bHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmFsdWVPYmopOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7
Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEw
MywzNCArMTAzLDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jSGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hl
KiBoYXNPd25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJlSGFzT3duUHJvcGVydHlDYWNoZSgpOwog
ICAgIGlmIChPcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQo
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRo
aXNPYmplY3QtPmhhc093blByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICBB
U1NFUlQoKnJlc3VsdCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHBy
b3BlcnR5TmFtZSkpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbigqcmVzdWx0KSk7CiAgICAgfQogCiAg
ICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAgICBib29sIHJlc3VsdCA9IHRoaXNPYmplY3Qt
Pmhhc093blByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgYm9vbCByZXN1
bHQgPSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBoYXNPd25Qcm9wZXJ0eUNhY2hlLT50cnlBZGQodm0sIHNsb3QsIHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNJc1Byb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7
CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgIEpTVmFsdWUg
diA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTM4LDI1ICsxMzgsMjUgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSk7CiAgICAgICAgIGlmICh2ID09IHRoaXNPYmopCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVjdCh2KS0+
Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90
b3R5cGUodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9P
YmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAg
ICBKU1ZhbHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgZ2V0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0
Q2FsbERhdGEodm0sIGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVzYWdl
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
ImludmFsaWQgZ2V0dGVyIHVzYWdlIl9zKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CkBAIC0xNjYsMjUgKzE2NiwyNSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRo
aXNPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJv
dyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7
CisgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgc2V0LCBjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwogCi0gICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3Bl
cnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKQEAgLTE5
NCwyNCArMTk0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGJvb2wgc2hvdWxkVGhyb3cg
PSB0cnVlOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJvcGVydHkg
PSB0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICBib29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxG
cmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwogICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAg
ICAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkpIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvcikgewogICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2NyaXB0b3I7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpKTsKLSAgICAgICAg
ICAgIGlmIChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQorICAgICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2Uo
KS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50
KCkgPyBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5nZXR0ZXIoKSkgOiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjksMTkgKzIyOSwxOSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJh
bWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmpl
Y3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJvb2wg
aGFzUHJvcGVydHkgPSB0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
IHx8ICFoYXNQcm9wZXJ0eSk7CiAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgIGlmIChz
bG90LmlzQWNjZXNzb3IoKSkgewpAQCAtMjUxLDcgKzI1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ICAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgaWYgKHNs
b3Quc2xvdEJhc2UoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcikpCisgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSA/IEpTVmFs
dWU6OmVuY29kZShkZXNjcmlwdG9yLnNldHRlcigpKSA6IEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1OSw2NCArMjU5LDY0IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2Rl
KS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKLSAgICBib29sIGVudW1lcmFibGUgPSB0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1l
cmFibGUoKTsKKyAgICBib29sIGVudW1lcmFibGUgPSB0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpICYmIGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGVudW1lcmFibGUpKTsKIH0KIAogLy8gMTUuMi40LjMgT2JqZWN0LnByb3RvdHlwZS50b0xvY2Fs
ZVN0cmluZygpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Rv
TG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IFYgYmUgdGhlIHRoaXMgdmFsdWUu
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJbnZva2Uo
ViwgInRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBU
b09iamVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09i
amVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhjYWxsRnJh
bWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUg
dGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgYm9vbCBo
YXNQcm9wZXJ0eSA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nLCBzbG90KTsKKyAgICBib29sIGhhc1Byb3BlcnR5ID0gb2JqZWN0LT5nZXRQ
cm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgc2xvdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5
KTsKLSAgICBKU1ZhbHVlIHRvU3RyaW5nID0gaGFzUHJvcGVydHkgPyBzbG90LmdldFZhbHVlKGV4
ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgSlNW
YWx1ZSB0b1N0cmluZyA9IGhhc1Byb3BlcnR5ID8gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSA6IGpzVW5kZWZpbmVkKCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBJZiBJc0NhbGxh
YmxlKHRvU3RyaW5nKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dm0sIHRvU3RyaW5nLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgLy8g
UmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9k
IG9mIHRvU3RyaW5nIHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYW5kIG5vIGFyZ3VtZW50cy4KLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRv
U3RyaW5nLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxG
cmFtZSwgdG9TdHJpbmcsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlM
aXN0KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50
b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRP
YmplY3RTdHJpbmcoKSA6IHZtLnNtYWxsU3RyaW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwotICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAg
ICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC0zMjYsMjYgKzMyNiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogCiAgICAgUHJvcGVydHlOYW1lIHRvU3RyaW5n
VGFnU3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2w7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sLCBbJl0gKGJvb2wgZm91bmQsIFByb3Bl
cnR5U2xvdCYgdG9TdHJpbmdUYWdTbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3Qo
Y2FsbEZyYW1lLCB0b1N0cmluZ1RhZ1N5bWJvbCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNs
b3QmIHRvU3RyaW5nVGFnU2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmIChmb3VuZCkgewot
ICAgICAgICAgICAgSlNWYWx1ZSBzdHJpbmdUYWcgPSB0b1N0cmluZ1RhZ1Nsb3QuZ2V0VmFsdWUo
ZXhlYywgdG9TdHJpbmdUYWdTeW1ib2wpOworICAgICAgICAgICAgSlNWYWx1ZSBzdHJpbmdUYWcg
PSB0b1N0cmluZ1RhZ1Nsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCB0b1N0cmluZ1RhZ1N5bWJvbCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAg
ICAgaWYgKHN0cmluZ1RhZy5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgSlNTdHJpbmcq
IHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFy
dCgpLCBhc1N0cmluZyhzdHJpbmdUYWcpLCB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKCddJykpOworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiByZXN1bHQgPSBqc1N0cmlu
ZyhjYWxsRnJhbWUsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFydCgpLCBhc1N0cmlu
ZyhzdHJpbmdUYWcpLCB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCddJykp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAg
ICAgICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdW
YWx1ZShleGVjLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOworICAgICAgICAgICAgICAg
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoY2FsbEZy
YW1lLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgdGFn
ID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1N0cmluZ05hbWUodGhpc09iamVjdCwg
ZXhlYyk7CisgICAgICAgIFN0cmluZyB0YWcgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PnRvU3RyaW5nTmFtZSh0aGlzT2JqZWN0LCBjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFr
ZVN0cmluZygiW29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlmICghbmV3
U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKHZt
LCBuZXdTdHJpbmcpOwotICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmpl
Y3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFnU2xvdCk7CisgICAg
ICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoY2Fs
bEZyYW1lLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0pKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdFByb3RvdHlwZS5oCmluZGV4IGYyNzg4NmJiMjY2NjY1MDczNzYwNjFjYmQwNjIyZmYyMmFl
NGIyMzAuLmI5YWE2NDlmNjBjMDUyOWEwNjA1NTZlNmUyMWQzY2NjMzc3MzQzYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCkBAIC00NSw2
ICs0NSw2IEBAIGNsYXNzIE9iamVjdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICBPYmplY3RQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUpT
X0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAppbmRleCAyNzczOTU1YWQ5OTVi
NmZkYzk0ODEyMzY4ZTk0MDkzZmZlZTQ2OTkxLi40NTg2YzEzMGQzYTY5YThhNTc4ZTFkMDAyMzgy
ZTY1MTM4ZWRkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eUNvbnN0cnVjdG9yLmNwcApAQCAtNDgsMzAgKzQ4LDMwIEBAIFByb3h5Q29uc3RydWN0b3Iq
IFByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFBy
b3h5T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFByb3h5Q29uc3RydWN0
b3I6OlByb3h5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFByb3h5LCBjb25zdHJ1Y3RQcm94eU9iamVjdCkKIHsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVBy
b3h5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VSZXZvY2FibGVQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRv
IGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVy
Il9zKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxl
IG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRo
ZSBoYW5kbGVyIl9zKTsKIAotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBBcmdMaXN0IGFy
Z3MoY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CiAgICAgSlNW
YWx1ZSBoYW5kbGVyID0gYXJncy5hdCgxKTsKLSAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94
eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGFyZ2V0
LCBoYW5kbGVyKTsKKyAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRl
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFByb3h5UmV2b2tlKiBy
ZXZva2UgPSBQcm94eVJldm9rZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPnByb3h5UmV2b2tlU3RydWN0dXJlKCksIHByb3h5KTsKKyAgICBQcm94eVJldm9rZSogcmV2
b2tlID0gUHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm94eVJldm9rZVN0
cnVjdHVyZSgpLCBwcm94eSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJveHki
KSwgcHJveHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkp
OwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9rZSIp
LCByZXZva2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkp
OwpAQCAtNzksMTAgKzc5LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VSZXZvY2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJsZUNvbnN0cnVj
dG9yVGhyb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5LnJl
dm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxlZCJfcyk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHku
cmV2b2NhYmxlIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIl9z
KTsKIH0KIAogdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNv
bnN0IGNoYXIqIG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05MiwyMiAr
OTIsMjIgQEAgdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNv
bnN0IGNoYXIqIG5hbWUsIEpTR2xvYmFsT2JqZWN0KgogICAgIHB1dERpcmVjdCh2bSwgbWFrZUlk
ZW50aWZpZXIodm0sICJyZXZvY2FibGUiKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDIsICJyZXZvY2FibGUiX3MsIG1ha2VSZXZvY2FibGVQcm94eSwgTm9JbnRyaW5zaWMs
IHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwot
ICAgIGlmIChleGVjLT5uZXdUYXJnZXQoKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIm5ldy50YXJnZXQgb2YgUHJveHkgY29uc3Ry
dWN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGlmIChjYWxsRnJhbWUtPm5l
d1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJuZXcudGFyZ2V0IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQg
bm90IGJlIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgQXJn
TGlzdCBhcmdzKGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwog
ICAgIEpTVmFsdWUgaGFuZGxlciA9IGFyZ3MuYXQoMSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRhcmdldCwgaGFuZGxlcikpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShQcm94eU9iamVjdDo6Y3JlYXRlKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiUHJveHkiKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlByb3h5IikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBlMzVkNDk1YWJjMTZiMTBj
Mzc2NWIxOTdkZDAyZDFjM2RiMmYyNjQwLi44YmU4MTgyNzk5M2IyMTE0ZDFmMTViMDczNzk3Yzcx
NWJjNzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCkBAIC01MTEsNDIgKzUxMSw0MiBAQCBib29sIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbQogICAg
IHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIE5PX1RB
SUxfQ0FMTFMoKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CiAgICAgfQotICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94
eU9iamVjdCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpz
Q2FzdDxQcm94eU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBo
YW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzX3By
b3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVy
VmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlOwot
ICAgIEpTVmFsdWUgYXBwbHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERh
dGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNW
YWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChjYWxsRnJhbWUsIGNhbGxEYXRh
LCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJhcHBseSIpLCAiJ2FwcGx5JyBwcm9wZXJ0
eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAgaWYgKGFwcGx5TWV0aG9kLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRhcmdldCwgY2FsbERh
dGEpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7
Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwo
ZXhlYywgdGFyZ2V0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGV4ZWMtPnRoaXNWYWx1ZSgpLCBBcmdM
aXN0KGV4ZWMpKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjYWxsKGNhbGxGcmFtZSwgdGFyZ2V0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKICAgICB9CiAKLSAgICBK
U0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5
QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7CisgICAgSlNBcnJh
eSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHN0YXRpY19jYXN0PEFycmF5
QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwot
ICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIEVDTUFN
b2RlOjpTdHJpY3RNb2RlKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CiAgICAgYXJn
dW1lbnRzLmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZs
b3dlZCgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
YWxsKGV4ZWMsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3Vt
ZW50cykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
YWxsKGNhbGxGcmFtZSwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwg
YXJndW1lbnRzKSkpOwogfQogCiBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC01NjIsNDUgKzU2Miw0NSBAQCBDYWxs
VHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3Ry
dWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQo
KSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQotICAgIFByb3h5T2JqZWN0KiBwcm94eSA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAg
ICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5k
bGVyVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBzX3Byb3h5QWxyZWFkeVJldm9r
ZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlOwotICAgIEpTVmFsdWUgY29uc3RydWN0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1
Y3QiKSwgIidjb25zdHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBi
ZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5n
ZXRNZXRob2QoY2FsbEZyYW1lLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZt
LCAiY29uc3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxl
ciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0
KCk7CiAgICAgaWYgKGNvbnN0cnVjdE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGFyZ2V0
LCBjb25zdHJ1Y3REYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RydWN0VHlwZSAh
PSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgQXJnTGlzdChleGVjKSwgZXhlYy0+bmV3VGFyZ2V0KCkpKSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChj
YWxsRnJhbWUsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChj
YWxsRnJhbWUpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSkpOwogICAgIH0KIAotICAgIEpTQXJy
YXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBBcmdMaXN0KGV4ZWMpKTsKKyAgICBKU0FycmF5KiBh
cmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBBcmdMaXN0KGNhbGxGcmFtZSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAg
YXJndW1lbnRzLmFwcGVuZChhcmdBcnJheSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT5u
ZXdUYXJnZXQoKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPm5ld1RhcmdldCgp
KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0gY2FsbChleGVjLCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
aGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1l
LCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBpZiAoIXJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBt
ZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2Nv
bnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlSZXZva2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlSZXZva2UuY3BwCmluZGV4IGY4NzVmNjVkNDUxMzk0OTcwNjRkOTM2YTk3NGE3OWRm
NjA4ZWVhNGUuLjcwNjYyYzBlOGQ4YzE2NjdjMGU1YjA2ZTNmYTNiZWM0ZmQ5N2EyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgUHJveHlSZXZva2UqIFByb3h5UmV2b2tlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJveHlPYmplY3QqIHByb3gKICAgICByZXR1cm4gcmV2b2tlOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2Uo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3Jt
UHJveHlSZXZva2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUHJveHlSZXZva2U6
OlByb3h5UmV2b2tlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUsIHBlcmZvcm1Qcm94eVJldm9rZSwgbnVsbHB0cikKQEAgLTU3LDE1ICs1Nywx
NSBAQCB2b2lkIFByb3h5UmV2b2tlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIq
IG5hbWUsIFByb3h5T2JqZWN0KiBwcm94eSkKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgUHJv
eHlSZXZva2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tlKj4oZXhlYy0+anNDYWxs
ZWUoKSk7CisgICAgUHJveHlSZXZva2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tl
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIHByb3h5VmFsdWUgPSBwcm94
eVJldm9rZS0+cHJveHkoKTsKICAgICBpZiAocHJveHlWYWx1ZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KHByb3h5VmFsdWUpOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHByb3h5
LT5yZXZva2Uodm0pOwogICAgIHByb3h5UmV2b2tlLT5zZXRQcm94eVRvTnVsbCh2bSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggODU2MDliM2MwZmU4OWE2
NGRiYzM4YjEzNTIxYTAwYWFmOGEyOThmMC4uODQ2ZDI5MzkzMmI0ZjNmZTgyZDcwNzFlMTRiYTBk
Y2I4ZmIyNzU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHAKQEAgLTM0LDE2ICszNCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdEdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlz
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdEdldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3du
S2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04Nyw1OSArODcsNTkgQEAgdm9p
ZCBSZWZsZWN0T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5jb25zdHJ1Y3QKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdENvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Qu
Y29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9z
KSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlmICghdGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0sIGNvbnN0
cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVj
dC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3Ii
X3MpKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gdGFyZ2V0OwotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPj0gMykgewotICAgICAgICBuZXdUYXJnZXQgPSBleGVjLT5hcmd1bWVu
dCgyKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgeworICAgICAg
ICBuZXdUYXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1Rh
cmdldC5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJl
cyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVzZW50Il9zKSk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQg
YmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVzZW50Il9zKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBKU09i
amVjdCogYXJndW1lbnRzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxl
Y3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1l
bnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAKLSAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVj
LCBhcmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCAiVGhpcyBlcnJvciBt
dXN0IG5vdCBiZSByYWlzZWQiX3MsICJUaGlzIGVycm9yIG11c3Qgbm90IGJlIHJhaXNlZCJfcywg
WyZdIChKU1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9vbCB7CisgICAgY3JlYXRlTGlz
dEZyb21BcnJheUxpa2UoY2FsbEZyYW1lLCBhcmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFz
a0FsbFR5cGVzLCAiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiX3MsICJUaGlzIGVycm9y
IG11c3Qgbm90IGJlIHJhaXNlZCJfcywgWyZdIChKU1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSkg
LT4gYm9vbCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgKGFyZ3Vt
ZW50cy5vdmVyZmxvd0NoZWNrTm90TmVlZGVkKCksIGVuY29kZWRKU1ZhbHVlKCkpKTsKICAgICBp
ZiAoVU5MSUtFTFkoYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
ICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1
bWVudHMsIG5ld1RhcmdldCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNv
bnN0cnVjdERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZp
bmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFy
Z2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmRlZmluZVByb3BlcnR5
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgYm9vbCBzdWNjZXNz
ID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0
b3IpOworICAgIGJvb2wgc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghc2NvcGUuZXhjZXB0aW9uKCkgPT0gc3VjY2Vzcyk7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNj
ZXNzKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xNDksMTQxICsxNDks
MTQxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVBy
b3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBSZWZsZWN0LmRlZmluZVByb3BlcnR5IHNo
b3VsZCBub3QgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5lT3duUHJvcGVydHkgb3BlcmF0
aW9uIGZhaWxzLgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxzZTsKICAgICBKU09iamVjdCog
dGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0IHJlcXVpcmVz
IHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAgIGNvbnN0IElkZW50
aWZpZXIgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdl
dDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpCi0gICAgICAgIHJlY2VpdmVy
ID0gZXhlYy0+YXJndW1lbnQoMik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDMpCisgICAgICAgIHJlY2VpdmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKIAogICAg
IFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0YXJnZXQuZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQuZ2V0KGNhbGxGcmFtZSwgcHJv
cGVydHlOYW1lLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1yZWZsZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcgotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdl
dC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zKSk7CiAKLSAgICBhdXRvIGtleSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJv
cGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IGFzT2JqZWN0KHRhcmdldCksIGtleSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRv
cihjYWxsRnJhbWUsIGFzT2JqZWN0KHRhcmdldCksIGtleSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRwcm90b3R5cGVvZgotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRh
cmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0Il9zKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoYXNPYmplY3QodGFyZ2V0KS0+Z2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpKSk7
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuaXNl
eHRlbnNpYmxlCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4
dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFy
Z2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmly
c3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuaXNFeHRlbnNp
YmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAg
IGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4ZWMp
OworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxl
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxl
KSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qu
b3dua2V5cwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5
cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0
YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFu
IG9iamVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
SW5jbHVkZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1lLCBqc0Nhc3Q8SlNPYmpl
Y3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2ZW50ZXh0ZW5zaW9ucwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVu
dEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRh
cmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25z
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOworICAg
IGJvb2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25z
KG9iamVjdCwgY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1
bHQpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVj
dC5zZXQKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RT
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJl
ZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiUmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQp
OwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5
S2V5KGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0Owot
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNCkKLSAgICAgICAgcmVjZWl2ZXIgPSBl
eGVjLT5hcmd1bWVudCgzKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0g
NCkKKyAgICAgICAgcmVjZWl2ZXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpOwogCiAgICAgLy8g
RG8gbm90IHJhaXNlIGFueSByZWFkb25seSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gc3RyaWN0IG1v
ZGUuCiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHJlY2VpdmVyLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPnB1dCh0YXJnZXRPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDIpLCBzbG90KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtcmVmbGVjdC5zZXRwcm90b3R5cGVvZgotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qu
c2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJf
cykpOwotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVm
bGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zKSk7CisgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAg
ICAgaWYgKCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qu
c2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4g
b2JqZWN0IG9yIG51bGwiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1
aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfcykp
OwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKICAgICBib29s
IHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUg
PSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50
U2V0KTsKKyAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZt
LCBjYWxsRnJhbWUsIHByb3RvLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZGlkU2V0UHJvdG90eXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZTNiYzg5
M2ZiM2MyY2EwZmQwOTkwZWZlMjAxMmQ1MjAzODIyOTljOS4uODNkYzE1NzMxYTk0NTFiYzM2YWI3
MTZjYWNiYjJiMzkxMmRlMTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjb25zdCBDbGFz
c0luZm8gUmVnRXhwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaQogKi8KIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmVnRXhwQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24o
dm0sIHN0cnVjdHVyZSwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoUmVnRXhw
Q29uc3RydWN0b3IpCkBAIC0xMDAsNTAgKzEwMCw0MyBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBl
LAogdGVtcGxhdGU8aW50IE4+CiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxh
cihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9i
amVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldEJhY2tyZWYoZXhlYywgZ2xvYmFsT2JqZWN0LCBO
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9y
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuaW5wdXQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3Ry
dWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rv
cio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxE
YXRhKCkubXVsdGlsaW5lKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JMYXN0TWF0Y2goRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgMCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQ
YXJlbihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2Jh
bE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldExhc3RQYXJlbihleGVjLCBnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
LT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVj
dC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldExlZnRDb250ZXh0KGV4ZWMsIGdsb2JhbE9iamVjdCkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5n
bG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+
cmVnRXhwR2xvYmFsRGF0YSgpLmdldFJpZ2h0Q29udGV4dChleGVjLCBnbG9iYWxPYmplY3QpKTsK
IH0KIApAQCAtMTU1LDcgKzE0OCw3IEBAIGJvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlCiAgICAgICAg
IGF1dG8qIHN0cmluZyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9TdHJpbmcoZXhlYyk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBnbG9iYWxPYmplY3Qt
PnJlZ0V4cEdsb2JhbERhdGEoKS5zZXRJbnB1dChleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZyk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3MCw3ICsxNjMsNyBAQCBib29sIHNl
dFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbgogICAgICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuc2V0TXVsdGls
aW5lKG11bHRpbGluZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI3NywyNCAr
MjcwLDIzIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCByZWdFeHBDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIHBhdHRl
cm5BcmcsIGZsYWdzQXJnKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNT
cGVjUmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZXNTcGVjUmVnRXhwQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNWYWx1ZSBwYXR0ZXJuQXJnID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBmbGFnc0FyZyA9IGV4ZWMtPmFyZ3VtZW50
KDEpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwQ3JlYXRlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwganNVbmRlZmluZWQoKSwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsKKyAgICBKU1Zh
bHVlIHBhdHRlcm5BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZmxh
Z3NBcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVnRXhwQ3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgpLCBw
YXR0ZXJuQXJnLCBmbGFnc0FyZykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdFJlZ0V4cChleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIGV4ZWMtPmpzQ2Fs
bGVlKCksIGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIGFyZ3MsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVj
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChleGVjLCBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhl
Yy0+dm0oKSksIGFyZ3MsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2Fs
bEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChjYWxs
RnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggMmViMmM2OTM0ODU4YzE2ZmZmMjIzOTUyYzU4Zjcy
OTdmNTI3ZTY1Ni4uOTc2ZTdiNmFmODNjMTUzMGM1MjAzNDI3YTgzOWQ1M2UwYWNkMWM3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CkBAIC03NSw2ICs3NSw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1JlZ0V4cChWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gb2JqZWN0LT5pbmhlcml0
czxSZWdFeHBPYmplY3Q+KHZtKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
c1NwZWNSZWdFeHBDcmVhdGUoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDhkMGU1YTlmMGQ1NzA1OWEyZjRiZjE2NTMzN2ViYTBj
ZWIzZjExYzkuLjRiOGFmMDViZTc0NTA2M2Y3MDM3ZDU3NDM4ZTdlZjM2NTJkNWFjYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApA
QCAtNDIsMTcgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlclVuaWNvZGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVj
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0
aWxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclN0aWNreShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJjZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJG
bGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gUmVn
RXhwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKIApAQCAt
ODYsODMgKzg2LDgzIEBAIHZvaWQgUmVnRXhwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNU
ZXN0RmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5
bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghcmVnZXhwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVs
bChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJp
bmdPck51bGwoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIXN0cmluZyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+dGVzdChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+dGVzdChjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgc3RyaW5nKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAgICBKU1N0cmluZyogc3RyaW5n
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChjYWxsRnJhbWUpOwogICAg
IEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhc3RyaW5nKTsKICAgICBp
ZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWdleHAt
PmV4ZWMoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnZXhwLT5leGVjKGNh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFJl
Z0V4cE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPihleGVjLT50aGlz
VmFsdWUoKSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNTdHJp
bmcqIHN0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIGlmICghdGhpc09iamVjdC0+cmVnRXhwKCktPmdsb2JhbCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmV4ZWMoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNPYmplY3QtPm1hdGNoR2xvYmFsKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc3RyaW5nKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+
ZXhlYyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgc3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aGlzT2JqZWN0LT5tYXRjaEdsb2JhbChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgc3RyaW5nKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogdGhpc1JlZ0V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzUmVnRXhwKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwotICAgIEpTVmFs
dWUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYXJnMSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOworICAgIEpTVmFsdWUgYXJnMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSBhcmcxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICAKICAgICBpZiAo
YXV0byogcmVnRXhwT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgYXJn
MCkpIHsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hl
biBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIl9zKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc3VwcGx5
IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiJfcyk7CiAg
ICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygp
IDogYXJnMC50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcw
LmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhjYWxsRnJh
bWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgpID8gbWFrZU9wdGlv
bmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50
b1dURlN0cmluZyhleGVjKSk7CisgICAgICAgIGF1dG8gZmxhZ3MgPSBhcmcxLmlzVW5kZWZpbmVk
KCkgPyBtYWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiB7IH0pIDogWWFycjo6cGFy
c2VGbGFncyhhcmcxLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFmbGFncykK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rv
ci4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0
byBSZWdFeHAgY29uc3RydWN0b3IuIl9zKSk7CiAKICAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpj
cmVhdGUodm0sIHBhdHRlcm4sIGZsYWdzLnZhbHVlKCkpOwogICAgIH0KIAogICAgIGlmICghcmVn
RXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUs
IHJlZ0V4cC0+ZXJyb3JUb1Rocm93KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCByZWdFeHAtPmVycm9yVG9UaHJvdyhjYWxsRnJhbWUpKTsKIAog
ICAgIHRoaXNSZWdFeHAtPnNldFJlZ0V4cCh2bSwgcmVnRXhwKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgdGhpc1JlZ0V4cC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOworICAgIHRoaXNSZWdF
eHAtPnNldExhc3RJbmRleChjYWxsRnJhbWUsIDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhpc1JlZ0V4cCk7CiB9CiAKQEAgLTIwNywxNDEgKzIwNywxNDEgQEAgc3RhdGljIGlubGlu
ZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiByZWdl
eHApCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFz
T2JqZWN0KHRoaXNWYWx1ZSk7CiAKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIo
ZXhlYywgdGhpc09iamVjdCk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNh
bGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVh
cmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIEpTVmFsdWUgc291
cmNlVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c291cmNl
KTsKKyAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwg
dm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgc291cmNlID0gc291cmNlVmFsdWUudG9X
VEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGZsYWdzVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOworICAgIEpTVmFsdWUgZmxhZ3NWYWx1ZSA9IHRo
aXNPYmplY3QtPmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcg
ZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmbGFncyA9
IGZsYWdzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgJy8nLCBz
b3VyY2UsICcvJywgZmxhZ3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICcvJywgc291cmNl
LCAnLycsIGZsYWdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvR2V0dGVyR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNW
YWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
Lmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7
CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5y
ZWdFeHAoKS0+Z2xvYmFsKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmpl
Y3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdu
b3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUg
UmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24g
YSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5pZ25vcmVDYXNlKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpz
RHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJv
dG90eXBlPih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRo
ZSBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPm11bHRpbGlu
ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJEb3RBbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlckRvdEFsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmRvdEFs
bCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVn
RXhwKCktPmRvdEFsbCgpKSk7CiB9CiAgICAgCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJv
dG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCJfcyk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlZ2V4cC0+cmVnRXhwKCktPnN0aWNreSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhw
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAg
ICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
LnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhl
IFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPnVuaWNvZGUoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
IlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24g
YW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYW4gb2JqZWN0Il9zKTsKIAotICAgIGF1dG8gZmxhZ3MgPSBmbGFnc1N0cmluZyhl
eGVjLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmco
Y2FsbEZyYW1lLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGZsYWdzLmRhdGEoKSkpOwpAQCAtNDU0LDM3ICs0NTQsMzYgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHIKICAgICByZXR1cm4ganNTdHJpbmcodm0sIHJlc3VsdC50b1N0cmlu
ZygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
clNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyU291cmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8q
IHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJp
dHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCAiKD86KSJfcykpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0ZXIgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwog
ICAgIH0KIAogICAgIFN0cmluZyBwYXR0ZXJuID0gcmVnZXhwLT5yZWdFeHAoKS0+cGF0dGVybigp
OwogICAgIGlmIChwYXR0ZXJuLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoZXhlYywgcGF0dGVybiwgcGF0dGVy
bi5jaGFyYWN0ZXJzOCgpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGV4ZWMsIHBhdHRlcm4sIHBh
dHRlcm4uY2hhcmFjdGVyczE2KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGNhbGxGcmFt
ZSwgcGF0dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJzOCgpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFs
KGNhbGxGcmFtZSwgcGF0dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJzMTYoKSwgcGF0dGVybi5sZW5n
dGgoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y1NlYXJjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBS
ZWdFeHAqIHJlZ0V4cCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPih0aGlzVmFsdWUpLT5yZWdFeHAo
KTsKIAotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKTsKLSAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJp
bmcoY2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxE
YXRhKCkucGVyZm9ybU1hdGNoKHZtLCBnbG9iYWxPYmplY3QsIHJlZ0V4cCwgc3RyaW5nLCBzLCAw
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkg
OiBqc051bWJlcigtMSkpOwpAQCAtNTc4LDE5ICs1NzcsMTkgQEAgdm9pZCBnZW5lcmljU3BsaXQo
CiB9CiAKIC8vIEVTIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywg
bGltaXQpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0
RmFzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhl
IHRoaXMgdmFsdWUuCiAgICAgLy8gMi4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShy
eCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIFJlZ0V4cCogcmVnZXhwID0ganNDYXN0PFJl
Z0V4cE9iamVjdCo+KHRoaXNWYWx1ZSktPnJlZ0V4cCgpOwogCiAgICAgLy8gMy4gW2hhbmRsZWQg
YnkgSlMgYnVpbHRpbl0gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcpLgotICAgIEpTU3RyaW5n
KiBpbnB1dFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIFN0
cmluZyBpbnB1dCA9IGlucHV0U3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBKU1N0cmluZyogaW5w
dXRTdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7Cisg
ICAgU3RyaW5nIGlucHV0ID0gaW5wdXRTdHJpbmctPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNTRVJUKCFp
bnB1dC5pc051bGwoKSk7CiAKQEAgLTYwNCwxMyArNjAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KICAgICAvLyAxMi4gTGV0IGxlbmd0
aEEgYmUgMC4KLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IDApOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1l
LCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSAwOwogCiAgICAgLy8gMTMuIElmIGxpbWl0IGlz
IHVuZGVmaW5lZCwgbGV0IGxpbSBiZSAyXjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWludDMy
KGxpbWl0KS4KLSAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAg
ICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1
IDogbGltaXRWYWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5p
c1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICAvLyAxNC4gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgpAQCAt
NjMwLDcgKzYyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgLy8gYy4gUGVyZm9ybSAhIENy
ZWF0ZURhdGFQcm9wZXJ0eShBLCAiMCIsIFMpLgogICAgICAgICAvLyBkLiBSZXR1cm4gQS4KICAg
ICAgICAgaWYgKCFyZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgMCkpIHsKLSAgICAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwgaW5wdXRTdHJpbmcpOworICAgICAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIDAsIGlucHV0U3RyaW5nKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTY1Miw3
ICs2NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTcGxp
dDsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChib29sIGlzRGVmaW5lZCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCkgLT4gU3BsaXRDb250cm9sIHsKLSAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vi
c3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRl
ZmluZWQoKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwg
cmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5w
dXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBBYm9ydFNwbGl0KTsKICAgICAgICAgICAgIGlmIChy
ZXN1bHRMZW5ndGggPj0gbGltaXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFib3J0U3BsaXQ7
CkBAIC02NjYsNyArNjY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyAyMC4gTGV0IFQg
YmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcg
b2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4
Y2x1c2l2ZSkuCiAgICAgICAgIC8vIDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEs
ICEgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRp
b24pKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIHJlc3VsdExl
bmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgcG9zaXRpb24sIGlu
cHV0U2l6ZSAtIHBvc2l0aW9uKSk7CiAgICAgICAgIAogICAgICAgICAvLyAyMi4gUmV0dXJuIEEu
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTY5MSw3ICs2OTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5n
dGggKyBkcnlSdW5Db3VudCA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpIHsKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKICAgICB9CiAgICAgCkBAIC03MDUsNyArNzA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICAgICAgcmV0dXJuIENvbnRpbnVlU3BsaXQ7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAo
Ym9vbCBpc0RlZmluZWQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIC0+IFNwbGl0
Q29udHJvbCB7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3Vs
dExlbmd0aCsrLCBpc0RlZmluZWQgPyBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3Ry
aW5nLCBzdGFydCwgbGVuZ3RoKSA6IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCsrLCBpc0RlZmluZWQgPyBq
c1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBzdGFydCwgbGVuZ3RoKSA6IGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgQWJv
cnRTcGxpdCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID49IGxpbWl0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBBYm9ydFNwbGl0OwpAQCAtNzE5LDcgKzcxOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAvLyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1
YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5j
bHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2ZSkuCiAgICAgLy8gMjEuIFBlcmZvcm0gISBD
cmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3Ro
LCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRT
aXplIC0gcG9zaXRpb24pKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwg
cmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3Np
dGlvbiwgaW5wdXRTaXplIC0gcG9zaXRpb24pKTsKICAgICAvLyAyMi4gUmV0dXJuIEEuCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAppbmRleCA1YjY1OTg2NmMwMGU4OWE4ZjE3
YTAxNWNiYzUxNDVjMjU5OWNhZjBkLi40NjBlMmE0NWFkZDcxMzkyNDg5ZjAxZDJiZDA3ZTJmOGVk
MTZjNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuaApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBSZWdFeHBQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY01hdGNoRmFzdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChFeGVj
U3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0
Y2hGYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3Bs
aXRGYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmJlZDllNWE1N2UxOGZiZTgyYmU1
ZDc4NWY5M2FkNGY0MDI4MDkuLmIwZGIxNTZmNDg4ZDY0MmU2ZmU3MGQ4YTU4MjNhNzExYTFkYWU5
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTQ3LDc0ICs0Nyw3MyBAQCB2b2lkIFNldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNldFByb3RvdHlwZSogc2V0UHJvdG90eXBlLCBHZXR0ZXJTZQogICAgIHB1
dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFj
Y2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFNldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFNldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBTZXRDb25zdHJ1Y3Rvcjo6U2V0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFNldCwgY29uc3Ry
dWN0U2V0KQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
U2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIlNldCIpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIlNldCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9i
YWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1Zh
bHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU1NldDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKSk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0OjpjcmVhdGUoY2FsbEZy
YW1lLCB2bSwgc2V0U3RydWN0dXJlKSkpOwogCiAgICAgaWYgKGF1dG8qIGl0ZXJhYmxlU2V0ID0g
anNEeW5hbWljQ2FzdDxKU1NldCo+KHZtLCBpdGVyYWJsZSkpIHsKICAgICAgICAgaWYgKGl0ZXJh
YmxlU2V0LT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVyZSkpIAotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFi
bGVTZXQtPmNsb25lKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUo
Y2FsbEZyYW1lLCB2bSwgc2V0U3RydWN0dXJlKSkpOwogICAgIH0KIAotICAgIEpTU2V0KiBzZXQg
PSBKU1NldDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpOworICAgIEpTU2V0KiBzZXQg
PSBKU1NldDo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGFk
ZGVyRnVuY3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+
YWRkKTsKKyAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoY2Fs
bEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRh
KHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChVTkxJ
S0VMWShhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMs
IGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7
CisgICAgZm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhl
Y1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChuZXh0VmFs
dWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAg
ICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhLCBzZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoY2FsbEZyYW1l
LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxs
RGF0YSwgc2V0LCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzZXQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVG
dW5jU2V0QnVja2V0SGVhZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2Fz
dDxKU1NldCo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgSlNTZXQqIHNl
dCA9IGpzQ2FzdDxKU1NldCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU1NldCo+KGdsb2JhbE9iamVj
dC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIEpTU2V0KiBzZXQgPSBqc0Nh
c3Q8SlNTZXQqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBhdXRvKiBo
ZWFkID0gc2V0LT5oZWFkKCk7CiAgICAgQVNTRVJUKGhlYWQpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoaGVhZCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJp
dmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFt
aWNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkp
KTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1
Y2tldFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsK
KyAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICBidWNrZXQg
PSBidWNrZXQtPm5leHQoKTsKICAgICB3aGlsZSAoYnVja2V0KSB7CkBAIC0xMjIsMTMgKzEyMSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0
TmV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGJ1Y2tldCk7CiAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc2VudGluZWxTZXRCdWNrZXQoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnZtKCkuc2VudGluZWxTZXRC
dWNrZXQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1
bmNTZXRCdWNrZXRLZXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxK
U1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAg
YXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWND
YXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBl
Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQtPmtleSgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCmluZGV4IDNmNmU4Yjky
N2JjOTI1N2Q1NGZiYWQxZDEyYzEzYjc1NmU5Y2MzN2MuLjcxYWI2OTUwZmY1Nzk0N2ZlOTZjMTMy
OWExNWFiMTg2YTVlNTBiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBjbGFzcyBTZXRDb25zdHJ1Y3RvciBm
aW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgU2V0UHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsKIH07CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFk
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVu
Y1NldEJ1Y2tldE5leHQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1
bmNTZXRCdWNrZXROZXh0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggNDZmNGJjZDMzOWMxZDc2
ZDcxNGY3ODgyZGQ0NDU0OTY4NTAyMTRmMS4uYzY2ZDk1ZjY1OTExZDFjODI2MDc0MzU1ZWYxYjg5
ODNhZjc5YTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFNldFByb3RvdHlw
ZTo6c19pbmZvID0geyAiU2V0IiwgJkJhc2U6OnNfaW5mbywgJnNldFByb3RvdHlwZVRhYmwKIEBl
bmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0FkZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNl
dFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNzYs
OSArNzYsOSBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNTaXplLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwog
fQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTU2V0KiBnZXRT
ZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdGhpc1ZhbHVlKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNDZWxsKCkpKSB7
CkBAIC05Miw0NCArOTIsNDQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKENh
bGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCB0aGlzVmFsdWUpOworICAgIEpTU2V0
KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgc2V0LT5hZGQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQg
PSBnZXRTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCog
c2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBzZXQtPmNsZWFyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1NldCogc2V0ID0gZ2V0
U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNTZXQqIHNldCA9
IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc2V0LT5yZW1vdmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQg
PSBnZXRTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCog
c2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzZXQtPmhh
cyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1NldCog
c2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNT
ZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzZXQt
PnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCmluZGV4IDYyYzQyMmMxNGM2MTJjNmQzYjA3NDI3NTI5ZGE0MDBlOTM0
YjM2NjIuLjMzMWQ0YjAwNzIzNDVhNDg2YTlhZDk0YzcxNDk0YmZkZWE5NTFlMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAK
QEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hh
ckNvZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogfQogCkBAIC01Myw4ICs1Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU3RyaW5nQ29uc3RydWN0
b3IpOwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBjYWxsU3RyaW5nQ29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcikK
QEAgLTcwLDE1ICs3MCwxNSBAQCB2b2lkIFN0cmluZ0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwog
ICAgIGlmIChMSUtFTFkobGVuZ3RoID09IDEpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgdW5zaWduZWQgY29kZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUlu
dDMyKGV4ZWMpOworICAgICAgICB1bnNpZ25lZCBjb2RlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihjYWxsRnJhbWUpOwogICAgICAgICAvLyBOb3QgY2hlY2tpbmcg
Zm9yIGFuIGV4Y2VwdGlvbiBoZXJlIGlzIG9rIGJlY2F1c2UganNTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcgd2lsbCBqdXN0IGZldGNoIGFuIHVudXNlZCBzdHJpbmcgaWYgdGhlcmUncyBhbiBleGNlcHRp
b24uCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcodm0sIGNvZGUpKTsKICAgICB9CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgTENoYXIqIGJ1ZjhCaXQ7CiAgICAgYXV0byBpbXBsOEJpdCA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWY4Qml0KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gc3RhdGljX2Nh
c3Q8VUNoYXI+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMyKGV4ZWMpKTsKKyAg
ICAgICAgVUNoYXIgY2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoaSkudG9VSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIWlzTGF0aW4xKGNoYXJhY3RlcikpKSB7CiAgICAgICAgICAgICBVQ2hhciogYnVmMTZCaXQ7
CkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBidWYxNkJpdFtp
XSA9IGNoYXJhY3RlcjsKICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIGZvciAoOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBidWYxNkJpdFtpXSA9IHN0YXRpY19jYXN0
PFVDaGFyPihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1VJbnQzMihleGVjKSk7CisgICAg
ICAgICAgICAgICAgYnVmMTZCaXRbaV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4oY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudChpKS50b1VJbnQzMihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCBXVEZNb3ZlKGltcGwxNkJpdCkpKSk7CkBAIC0xMTAsMjMgKzExMCwy
MyBAQCBKU1N0cmluZyogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRl
KiBleGVjLCBpbnQzMl90IGFyZykKICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
ZXhlYy0+dm0oKSwgYXJnKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBkb3VibGUgY29kZVBvaW50QXNEb3VibGUgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIGNvZGVQb2lu
dEFzRG91YmxlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxs
RnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgICAgICB1aW50MzJfdCBjb2RlUG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oY29kZVBvaW50QXNEb3VibGUpOwogCiAgICAgICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBv
aW50QXNEb3VibGUgfHwgY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAi
QXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBv
aW50cyJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIkFyZ3VtZW50cyBjb250YWluIGEgdmFs
dWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiX3MpKTsKIAogICAgICAgICBp
ZiAoVV9JU19CTVAoY29kZVBvaW50KSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PFVDaGFyPihjb2RlUG9pbnQpKTsKQEAgLTEzOSwxOCArMTM5LDE3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRl
KiBleGVjKQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCBidWlsZGVyLnRvU3RyaW5nKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RX
aXRoU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwg
c3RydWN0dXJlKSk7Ci0gICAgSlNTdHJpbmcqIHN0ciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBzdHIpKTsKIH0KQEAgLTE2Mywx
MiArMTYyLDEyIEBAIEpTU3RyaW5nKiBzdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYXJndW1lbnQpCiAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKGV4ZWMpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0NvbnN0cnVjdG9yKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCmluZGV4IDVmYTk1MWEwYzFmM2MxNjUwZDI0Y2FhYTE2MDA0NjVhNWZjYThjMWMuLmM3
NWRmYzBiODBmYWE1MTcwMjc1ZDUzZjUxNTYyNjFkMWRkOWJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNjEsMzAgKzYx
LDMwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoU3RyaW5nUHJvdG90eXBlKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRB
dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5n
U3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1Vw
cGVyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJD
YXNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUcmltKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNUcmltU3RhcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNs
dWRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hh
ckF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBv
aW50QXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jUmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVG9Mb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2Vy
Q2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUcmltKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmlt
RW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dp
dGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXpl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0KIApAQCAtODQ2LDM4ICs4NDYsMzggQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rl
cihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1JlcGVhdENoYXJhY3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICAvLyBGb3IgYSBzdHJpbmcgd2hpY2ggbGVuZ3RoIGlzIHNpbmdsZSwg
aW5zdGVhZCBvZiBjcmVhdGluZyByb3BlcywKICAgICAvLyBhbGxvY2F0aW5nIGEgc2VxdWVudGlh
bCBidWZmZXIgYW5kIGZpbGwgd2l0aCB0aGUgcmVwZWF0ZWQgc3RyaW5nIGZvciBlZmZpY2llbmN5
LgotICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CisgICAgQVNTRVJUKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDIpOwogCi0gICAgQVNTRVJUKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzU3RyaW5nKCkpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0
cmluZyhleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNTdHJpbmcoKSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9
IGFzU3RyaW5nKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChz
dHJpbmctPmxlbmd0aCgpID09IDEpOwogCi0gICAgSlNWYWx1ZSByZXBlYXRDb3VudFZhbHVlID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSByZXBlYXRDb3VudFZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXBlYXRDb3VudFZhbHVlLmlzTnVtYmVyKCkpOwogICAgIGludDMyX3QgcmVwZWF0Q291bnQ7CiAg
ICAgZG91YmxlIHZhbHVlID0gcmVwZWF0Q291bnRWYWx1ZS5hc051bWJlcigpOwogICAgIGlmICh2
YWx1ZSA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsK
ICAgICByZXBlYXRDb3VudCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICBBU1NF
UlQocmVwZWF0Q291bnQgPj0gMCk7CiAgICAgQVNTRVJUKCFyZXBlYXRDb3VudFZhbHVlLmlzRG91
YmxlKCkgfHwgcmVwZWF0Q291bnRWYWx1ZS5hc0RvdWJsZSgpID09IHJlcGVhdENvdW50KTsKIAot
ICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBzdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVy
bHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0
cmluZy52aWV3OwogICAgIEFTU0VSVCh2aWV3Lmxlbmd0aCgpID09IDEpOwogICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CiAgICAgVUNoYXIgY2hhcmFjdGVyID0gdmlld1swXTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKGlzTGF0aW4xKGNoYXJhY3RlcikpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVjLCBzdGF0aWNfY2FzdDxM
Q2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291bnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlcGVhdENoYXJhY3RlcigqZXhlYywgY2hhcmFjdGVyLCByZXBlYXRDb3VudCkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqY2FsbEZyYW1lLCBz
dGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291bnQpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqY2FsbEZyYW1lLCBjaGFyYWN0ZXIsIHJl
cGVhdENvdW50KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2UoCkBAIC05
MDIsMzAgKzkwMiwzMCBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlKAogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZSh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hW
YWx1ZSwgcmVwbGFjZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhw
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTU3Ry
aW5nKiBzdHJpbmcgPSBleGVjLT50aGlzVmFsdWUoKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0
cmluZyogc3RyaW5nID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1N0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgSlNWYWx1ZSBzZWFyY2hWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUg
c2VhcmNoVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghc2VhcmNoVmFs
dWUuaW5oZXJpdHM8UmVnRXhwT2JqZWN0Pih2bSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywg
c2VhcmNoVmFsdWUsIGV4ZWMtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgY2Fs
bEZyYW1lLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VV
c2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1N0cmluZyogc3RyaW5n
ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIHN0cmlu
ZyA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJj
aCh2bSwgZXhlYywgc3RyaW5nLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKHZtLCBjYWxsRnJhbWUsIHN0cmluZywgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKApAQCAtOTQwLDEy
ICs5NDAsMTIgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VHZW5lcmljKAogICAgICAgICBKU1ZhbHVlOjpkZWNvZGUocmVwbGFjZVZhbHVlKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICAvLyBBbHNvIHVz
ZWQgZm9yIHZhbHVlT2YuCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzU3RyaW5nKCkpCkBAIC05NTUs
NTQgKzk1NSw1NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc3RyaW5nT2JqZWN0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsK
IAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgYXV0
byB2aWV3V2l0aFN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGNhbGxGcmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmlu
Z1ZpZXcgdmlldyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
IChhMC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBhMC5hc1VJbnQzMigpOwog
ICAgICAgICBpZiAoaSA8IHZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHZtLCB2aWV3W2ldKSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwogICAgIH0KLSAgICBk
b3VibGUgZHBvcyA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGEwLnRv
SW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IHZpZXcubGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
dm0sIHZpZXdbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRwb3MpXSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAg
IGF1dG8gdmlld1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRo
VW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBT
dHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwotICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gYTAuYXNV
SW50MzIoKTsKICAgICAgICAgaWYgKGkgPCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3W2ldKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgfQotICAgIGRvdWJsZSBkcG9zID0gYTAudG9J
bnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
aWYgKGRwb3MgPj0gMCAmJiBkcG9zIDwgdmlldy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3W3N0YXRpY19jYXN0PGludD4oZHBvcyldKSk7CkBA
IC0xMDE5LDIwICsxMDE5LDIwIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2RlUG9pbnRBdChj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnCiAgICAgcmV0dXJu
IGNoYXJhY3RlcjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmcgPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
IAotICAgIEpTVmFsdWUgYXJndW1lbnQwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChhcmd1bWVudDAu
aXNVSW50MzIoKSkgewogICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGFyZ3VtZW50MC5hc1VJ
bnQzMigpOwogICAgICAgICBpZiAocG9zaXRpb24gPCBsZW5ndGgpCkBAIC0xMDQyLDI4ICsxMDQy
LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBv
aW50QXQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBkb3VibGUgZG91YmxlUG9zaXRpb24gPSBhcmd1bWVu
dDAudG9JbnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBkb3VibGVQb3NpdGlvbiA9IGFyZ3VtZW50
MC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZG91YmxlUG9zaXRpb24gPj0gMCAmJiBkb3VibGVQ
b3NpdGlvbiA8IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihjb2RlUG9pbnRBdChzdHJpbmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVQb3NpdGlv
biksIGxlbmd0aCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4
T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tP
YmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBK
U1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
CiAKLSAgICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
OworICAgIEpTU3RyaW5nKiB0aGlzSlNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBKU1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpOworICAgIEpT
U3RyaW5nKiBvdGhlckpTU3RyaW5nID0gYTAudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVuc2lnbmVk
IHBvcyA9IDA7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAo
YTEuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHBvcyA9IHN0ZDo6bWluPHVpbnQzMl90PihhMS5h
c1VJbnQzMigpLCBsZW4pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRvdWJsZSBkcG9z
ID0gYTEudG9JbnRlZ2VyKGV4ZWMpOworICAgICAgICAgICAgZG91YmxlIGRwb3MgPSBhMS50b0lu
dGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGRwb3MgPCAwKQogICAgICAgICAg
ICAgICAgIGRwb3MgPSAwOwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
ZiAodGhpc0pTU3RyaW5nLT5sZW5ndGgoKSA8IG90aGVySlNTdHJpbmctPmxlbmd0aCgpICsgcG9z
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKLSAgICBh
dXRvIHRoaXNWaWV3V2l0aFN0cmluZyA9IHRoaXNKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdGhpc1ZpZXdXaXRoU3RyaW5nID0gdGhpc0pTU3RyaW5n
LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIG90aGVyVmlld1dpdGhT
dHJpbmcgPSBvdGhlckpTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7Cisg
ICAgYXV0byBvdGhlclZpZXdXaXRoU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2l6ZV90IHJlc3VsdCA9IHRoaXNWaWV3V2l0aFN0cmlu
Zy52aWV3LmZpbmQob3RoZXJWaWV3V2l0aFN0cmluZy52aWV3LCBwb3MpOwogICAgIGlmIChyZXN1
bHQgPT0gbm90Rm91bmQpCkBAIC0xMDk2LDI1ICsxMDk2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJ
bmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIGEx
ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAgICBK
U1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgIEpT
U3RyaW5nKiB0aGlzSlNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBsZW4gPSB0aGlzSlNTdHJpbmctPmxlbmd0aCgpOwotICAgIEpTU3RyaW5nKiBvdGhlckpT
U3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcg
PSBhMC50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXJQcmVz
ZXJ2ZU5hTihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFO
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbjsKICAgICBpZiAoZHBvcyA8IDApCkBA
IC0xMTI3LDkgKzExMjcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobGVuIDwgb3RoZXJK
U1N0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoLTEpKTsKIAotICAgIFN0cmluZyB0aGlzU3RyaW5nID0gdGhpc0pTU3RyaW5nLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgdGhpc1N0cmluZyA9IHRoaXNKU1N0cmluZy0+dmFsdWUoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBTdHJpbmcgb3RoZXJTdHJpbmcgPSBvdGhlckpTU3RyaW5nLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgb3RoZXJTdHJpbmcgPSBvdGhlckpTU3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNp
emVfdCByZXN1bHQ7CiAgICAgaWYgKCFzdGFydFBvc2l0aW9uKQpAQCAtMTE0MSwyOSArMTE0MSwy
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRl
eE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFj
aGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEg
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIGlu
dCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA+
PSAwKTsKIAogICAgIC8vIFRoZSBhcmcgcHJvY2Vzc2luZyBpcyB2ZXJ5IG11Y2ggbGlrZSBBcnJh
eVByb3RvRnVuYzo6U2xpY2UKLSAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoZXhlYyk7
CisgICAgZG91YmxlIHN0YXJ0ID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIGVuZCA9
IGExLmlzVW5kZWZpbmVkKCkgPyBsZW5ndGggOiBhMS50b0ludGVnZXIoZXhlYyk7CisgICAgZG91
YmxlIGVuZCA9IGExLmlzVW5kZWZpbmVkKCkgPyBsZW5ndGggOiBhMS50b0ludGVnZXIoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdHJpbmdTbGlj
ZShleGVjLCB2bSwgc3RyaW5nLCBsZW5ndGgsIHN0YXJ0LCBlbmQpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nU2xpY2UoY2FsbEZyYW1lLCB2
bSwgc3RyaW5nLCBsZW5ndGgsIHN0YXJ0LCBlbmQpKSk7CiB9CiAKIC8vIFJldHVybiB0cnVlIGlu
IGNhc2Ugb2YgZWFybHkgcmV0dXJuIChyZXN1bHRMZW5ndGggZ290IHRvIGxpbWl0TGVuZ3RoKS4K
QEAgLTEyMDIsMzAgKzEyMDIsMzAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxpdFN0
cmluZ0J5T25lQ2hhcmFjdGVySW1wbChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkKIH0KIAogLy8g
RVMgMjEuMS4zLjE3IFN0cmluZy5wcm90b3R5cGUuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3BsaXRGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBBU1NFUlQoY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSk7CiAKICAgICAvLyAzLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1l
bnQuCiAgICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCi0g
ICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmlu
ZyBpbnB1dCA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEFTU0VSVCghaW5wdXQu
aXNOdWxsKCkpOwogCiAgICAgLy8gNC4gTGV0IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBp
ZiBieSB0aGUgZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQogICAgIC8vICAgIHdoZXJlIEFycmF5IGlz
IHRoZSBzdGFuZGFyZCBidWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRoIHRoYXQgbmFtZS4KLSAgICBK
U0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIEpTQXJy
YXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCAwKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDUuIExl
dCBsZW5ndGhBIGJlIDAuCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAogICAgIC8v
IDYuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGlt
ID0gVG9VaW50MzIobGltaXQpLgotICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpOwotICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVm
aW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4ZWMpOworICAgIEpT
VmFsdWUgbGltaXRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAg
dW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6
IGxpbWl0VmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDguIExldCBwID0gMC4KQEAgLTEy
MzMsOCArMTIzMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDkuIElmIHNlcGFyYXRvciBp
cyBhIFJlZ0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIpLCBsZXQgUiA9IHNl
cGFyYXRvcjsKICAgICAvLyAgICBvdGhlcndpc2UgbGV0IFIgPSBUb1N0cmluZyhzZXBhcmF0b3Ip
LgotICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKLSAgICBTdHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CisgICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CisgICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICAvLyAxMC4gSWYgbGltID09IDAsIHJldHVybiBBLgpAQCAtMTI0NSw3
ICsxMjQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
cGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CiAgICAgICAgIC8vIGEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCiAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmlu
Z1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7CisgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShjYWxsRnJhbWUsIHRo
aXNWYWx1ZSwgaW5wdXQpKTsKICAgICAgICAgLy8gYi4gUmV0dXJuIEEuCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIGQuIFJldHVybiBBLgogICAgICAgICBpZiAoIXNlcGFy
YXRvci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhl
YywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChjYWxsRnJhbWUsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBp
bnB1dCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIEFT
U0VSVChsaW1pdCk7CiAKICAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChleGVjLCBwb3NpdGlvbiwganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIGlucHV0
W3Bvc2l0aW9uXSkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJh
bWUsIHBvc2l0aW9uLCBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgaW5wdXRbcG9zaXRpb25d
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgfSB3aGlsZSAoKytwb3NpdGlvbiA8IGxpbWl0KTsKIApAQCAtMTI5Mywx
MCArMTI5MywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBzZXBhcmF0b3JDaGFyYWN0
ZXIgPSBzZXBhcmF0b3JJbXBsLT5jaGFyYWN0ZXJzMTYoKVswXTsKIAogICAgICAgICBpZiAoc3Ry
aW5nSW1wbC0+aXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGlmIChzcGxpdFN0cmluZ0J5T25lQ2hh
cmFjdGVySW1wbDxMQ2hhcj4oZXhlYywgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJ
bXBsLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgsIGxpbWl0KSkg
CisgICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8TENoYXI+KGNh
bGxGcmFtZSwgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JD
aGFyYWN0ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgsIGxpbWl0KSkgCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3Rl
ckltcGw8VUNoYXI+KGV4ZWMsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwg
c2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIAorICAg
ICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPFVDaGFyPihjYWxsRnJh
bWUsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIAogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOwogICAgICAg
ICB9CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwpAQCAtMTMxMSw5ICsxMzExLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgLy8gMS4g
TGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNp
c3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKICAgICAg
ICAgICAgIC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KICAgICAgICAgICAgIC8vIDIuIENh
bGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KLSAgICAgICAg
ICAgIGF1dG8qIHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQs
IHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pOworICAgICAgICAgICAgYXV0byog
c3Vic3RyaW5nID0ganNTdWJzdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0LCBwb3Np
dGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIHJlc3VsdExlbmd0aCwgc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgsIHN1YnN0cmluZyk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgLy8gMy4g
SW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0g
bGltLCByZXR1cm4gQS4KQEAgLTEzMjksMjMgKzEzMjksMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAg
IC8vIDE1LiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9m
IFMgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZl
KQogICAgIC8vICAgICB0aHJvdWdoIHMgKGV4Y2x1c2l2ZSkuCiAgICAgLy8gMTYuIENhbGwgQ3Jl
YXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KLSAgICBhdXRvKiBzdWJz
dHJpbmcgPSBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5w
dXQubGVuZ3RoKCkgLSBwb3NpdGlvbik7CisgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJp
bmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXQubGVuZ3RoKCkg
LSBwb3NpdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRM
ZW5ndGgrKywgc3Vic3RyaW5nKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFt
ZSwgcmVzdWx0TGVuZ3RoKyssIHN1YnN0cmluZyk7CiAKICAgICAvLyAxNy4gUmV0dXJuIEEuCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgdW5zaWduZWQgbGVu
OwogICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CiAgICAgU3RyaW5nIHVTdHJpbmc7CkBAIC0x
MzUzLDE3ICsxMzUzLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAganNTdHJpbmcgPSBhc1N0cmlu
Zyh0aGlzVmFsdWUpOwogICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAg
ICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
bGVuID0gdVN0cmluZy5sZW5ndGgoKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
VmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwogCi0gICAgZG91YmxlIHN0YXJ0ID0gYTAudG9JbnRlZ2VyKGV4
ZWMpOworICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGRvdWJsZSBs
ZW5ndGggPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuIDogYTEudG9JbnRlZ2VyKGV4ZWMpOworICAg
IGRvdWJsZSBsZW5ndGggPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuIDogYTEudG9JbnRlZ2VyKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKHN0YXJ0ID49IGxlbiB8fCBsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKHZtKSk7CkBAIC0xMzc4LDExICsxMzc4LDE2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4
ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGVuZ3RoKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKGpzU3Ry
aW5nKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIGpz
U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoY2FsbEZyYW1lLCBqc1N0cmluZywgc3Vic3Ry
aW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdWJzdHJpbmcodm0sIHVTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3Ry
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNTdWJzdHIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0ckltcGwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBAc3Vic3RySW50ZXJuYWwgc2hv
dWxkIG5vdCBoYXZlIGFueSBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0cyAoZS5nLiBpdCBzaG91bGQg
bm90IGNhbGwKICAgICAvLyBHZXRNZXRob2QoLi4uLCBAQHRvUHJpbWl0aXZlKSBvbiB0aGUgdGhp
c1ZhbHVlKS4KQEAgLTEzOTIsMjggKzEzOTcsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIC8v
IGd1YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBhIHN0cmluZyB0aGlzVmFsdWUuIEFzIGEg
cmVzdWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIKICAgICAvLyB3aWxsIG5vdCBuZWVkIHRvIGNh
bGwgdG9TdHJpbmcoKSBvbiB0aGUgdGhpc1ZhbHVlLCBhbmQgdGhlcmUgd2lsbCBiZSBubyBvYnNl
cnZhYmxlCiAgICAgLy8gc2lkZS1lZmZlY3RzLgotICAgIEFTU0VSVChleGVjLT50aGlzVmFsdWUo
KS5pc1N0cmluZygpKTsKLSAgICByZXR1cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RyKGV4ZWMpOwor
ICAgIEFTU0VSVChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmlzU3RyaW5nKCkpOworICAgIHJldHVy
biBzdHJpbmdQcm90b0Z1bmNTdWJzdHJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmco
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTdWJzdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpOworICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEg
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpbnQg
bGVuID0ganNTdHJpbmctPmxlbmd0aCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxlbiA+PSAwKTsK
IAotICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBzdGFy
dCA9IGEwLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZG91YmxlIGVuZDsKICAgICBpZiAoIShzdGFydCA+
PSAwKSkgLy8gY2hlY2sgZm9yIG5lZ2F0aXZlIHZhbHVlcyBvciBOYU4KQEAgLTE0MjMsNyArMTQy
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYTEuaXNVbmRlZmluZWQoKSkKICAgICAgICAg
ZW5kID0gbGVuOwogICAgIGVsc2UgeyAKLSAgICAgICAgZW5kID0gYTEudG9OdW1iZXIoZXhlYyk7
CisgICAgICAgIGVuZCA9IGExLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIShlbmQg
Pj0gMCkpIC8vIGNoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb3IgTmFOCiAgICAgICAgICAgICBl
bmQgPSAwOwpAQCAtMTQzNywyMCArMTQ0MiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogICAg
IHVuc2lnbmVkIHN1YnN0cmluZ1N0YXJ0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsK
ICAgICB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5k
KSAtIHN1YnN0cmluZ1N0YXJ0OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vi
c3RyaW5nTGVuZ3RoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwganNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBz
dWJzdHJpbmdMZW5ndGgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyog
c1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFs
dWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmlu
ZyA9IHMuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmIChsb3dlcmNh
c2VkU3RyaW5nLmltcGwoKSA9PSBzLmltcGwoKSkKQEAgLTE0NTgsMTcgKzE0NjMsMTcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcodm0sIGxvd2VyY2FzZWRTdHJpbmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKLSAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJp
bmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgcyA9IHNWYWwt
PnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBTdHJp
bmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgp
OwogICAgIGlmICh1cHBlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBzLmltcGwoKSkKQEAgLTE0NzYs
NDQgKzE0ODEsNDMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHVwcGVyY2FzZWRTdHJpbmcpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29t
cGFyZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTMuMS4xIFN0cmluZy5wcm90b3R5cGUubG9j
YWxlQ29tcGFyZSAodGhhdCBbLCBsb2NhbGVzIFssIG9wdGlvbnMgXV0pIChFQ01BLTQwMiAyLjAp
CiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5k
YXJkcy9FY21hLTQwMi5odG0KIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhp
cyB2YWx1ZSkuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFj
aGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiU3RyaW5nLnByb3RvdHlw
ZS5sb2NhbGVDb21wYXJlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCJfcyk7CiAKICAgICAvLyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICAvLyAzLiBS
ZXR1cm5JZkFicnVwdChTKS4KLSAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3Ry
aW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIC8vIDQuIExldCBUaGF0IGJlIFRvU3RyaW5nKHRoYXQpLgogICAgIC8vIDUuIFJl
dHVybklmQWJydXB0KFRoYXQpLgotICAgIEpTVmFsdWUgdGhhdFZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgU3RyaW5nIHRoYXQgPSB0aGF0VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgSlNWYWx1ZSB0aGF0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cmlu
ZyB0aGF0ID0gdGhhdFZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICNpZiBFTkFCTEUoSU5UTCkK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwotICAgIEpTVmFsdWUgbG9jYWxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIEpT
VmFsdWUgb3B0aW9ucyA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIEpTVmFsdWUgbG9jYWxlcyA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgyKTsKICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gbnVsbHB0cjsKICAg
ICBpZiAobG9jYWxlcy5pc1VuZGVmaW5lZCgpICYmIG9wdGlvbnMuaXNVbmRlZmluZWQoKSkgewot
ICAgICAgICBjb2xsYXRvciA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvbGxhdG9yKGV4ZWMpOwor
ICAgICAgICBjb2xsYXRvciA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvbGxhdG9yKGNhbGxGcmFt
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIGNvbGxhdG9y
LT5pbml0aWFsaXplQ29sbGF0b3IoKmV4ZWMsIGxvY2FsZXMsIG9wdGlvbnMpOworICAgICAgICBj
b2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGxvY2FsZXMsIG9wdGlvbnMp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB9Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29s
bGF0b3ItPmNvbXBhcmVTdHJpbmdzKCpleGVjLCBzdHJpbmcsIHRoYXQpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJp
bmdzKCpjYWxsRnJhbWUsIHN0cmluZywgdGhhdCkpKTsKICNlbHNlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihDb2xsYXRvcigpLmNvbGxhdGUoc3RyaW5nLCB0aGF0KSkpOwog
I2VuZGlmCkBAIC0xNTI1LDkgKzE1MjksOSBAQCBlbnVtIGNsYXNzIENhc2VDb252ZXJzaW9uTW9k
ZSB7CiAgICAgTG93ZXIsCiB9OwogdGVtcGxhdGU8Q2FzZUNvbnZlcnNpb25Nb2RlIG1vZGU+Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gY29udmVydENhc2UgPSBbJl0gKGF1dG8mJi4uLiBh
cmdzKSB7CkBAIC0xNjE1LDE5ICsxNjE5LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xv
Y2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgbG93ZXIpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VG9Mb2NhbGVMb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTMuMS4yIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVM
b3dlckNhc2UgKFtsb2NhbGVzXSkKICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9wdWJsaWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0bQotICAgIHJldHVybiB0b0xvY2Fs
ZUNhc2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpMb3dlcj4oc3RhdGUpOworICAgIHJldHVybiB0b0xv
Y2FsZUNhc2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpMb3dlcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Rv
TG9jYWxlVXBwZXJDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMyBTdHJp
bmcucHJvdG90eXBlLnRvTG9jYWxlVXBwZXJDYXNlIChbbG9jYWxlc10pCiAgICAgLy8gaHR0cDov
L2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5kYXJkcy9FY21hLTQwMi5o
dG0KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGludGVycHJldHMgYSBzdHJpbmcgdmFsdWUgYXMgYSBz
ZXF1ZW5jZSBvZiBjb2RlIHBvaW50cywgYXMgZGVzY3JpYmVkIGluIEVTMjAxNSwgNi4xLjQuIFRo
aXMgZnVuY3Rpb24gYmVoYXZlcyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBTdHJpbmcucHJv
dG90eXBlLnRvTG9jYWxlTG93ZXJDYXNlLCBleGNlcHQgdGhhdCBjaGFyYWN0ZXJzIGFyZSBtYXBw
ZWQgdG8gdGhlaXIgdXBwZXJjYXNlIGVxdWl2YWxlbnRzIGFzIHNwZWNpZmllZCBpbiB0aGUgVW5p
Y29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29u
dmVyc2lvbk1vZGU6OlVwcGVyPihzdGF0ZSk7CisgICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNl
Q29udmVyc2lvbk1vZGU6OlVwcGVyPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCiAKQEAgLTE2NjQsMjIgKzE2NjgsMjIgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
aW50IHRyaW1LaW4KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKHZtLCBz
dHIuc3Vic3RyaW5nU2hhcmluZ0ltcGwobGVmdCwgcmlnaHQgLSBsZWZ0KSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRy
aW1TdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBUcmltU3RhcnQgfCBUcmltRW5kKSk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodHJpbVN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgVHJpbVN0YXJ0IHwg
VHJpbUVuZCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1RyaW1TdGFydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwg
VHJpbVN0YXJ0KSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhjYWxsRnJhbWUsIHRo
aXNWYWx1ZSwgVHJpbVN0YXJ0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jVHJpbUVuZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhleGVjLCB0aGlz
VmFsdWUsIFRyaW1FbmQpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGNhbGxGcmFt
ZSwgdGhpc1ZhbHVlLCBUcmltRW5kKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xh
bXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQoZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBtaW4sIHVuc2ln
bmVkIG1heCkKQEAgLTE2OTEsNzYgKzE2OTUsNzYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBj
bGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbiwgdW4K
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRz
V2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhl
eGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGJvb2wg
aXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CisgICAgSlNWYWx1
ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNz
aW9uID0gaXNSZWdFeHAodm0sIGNhbGxGcmFtZSwgYTApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9u
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50
IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50
IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAot
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJp
bmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcG9z
aXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IDA7CiAgICAgaWYg
KHBvc2l0aW9uQXJnLmlzSW50MzIoKSkKICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3Np
dGlvbkFyZy5hc0ludDMyKCkpOwogICAgIGVsc2UgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0aCgpOwotICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1
bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsK
KyAgICAgICAgc3RhcnQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50
b0ludGVnZXIoY2FsbEZyYW1lKSwgMCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5oYXNJbmZpeFN0YXJ0aW5nQXQo
c2VhcmNoU3RyaW5nLCBzdGFydCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdU
b1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJp
bmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0g
aXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgY2Fs
bEZyYW1lLCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5l
bmRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5k
c1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0g
YTAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RG
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxl
bmd0aCgpOwogCi0gICAgSlNWYWx1ZSBlbmRQb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
OworICAgIEpTVmFsdWUgZW5kUG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwog
ICAgIHVuc2lnbmVkIGVuZCA9IGxlbmd0aDsKICAgICBpZiAoZW5kUG9zaXRpb25BcmcuaXNJbnQz
MigpKQogICAgICAgICBlbmQgPSBzdGQ6Om1heCgwLCBlbmRQb3NpdGlvbkFyZy5hc0ludDMyKCkp
OwogICAgIGVsc2UgaWYgKCFlbmRQb3NpdGlvbkFyZy5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IGVuZCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGVuZFBvc2l0aW9uQXJnLnRvSW50ZWdl
cihleGVjKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgZW5kID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5z
aWduZWQoZW5kUG9zaXRpb25BcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNo
SW4uaGFzSW5maXhFbmRpbmdBdChzZWFyY2hTdHJpbmcsIHN0ZDo6bWluKGVuZCwgbGVuZ3RoKSkp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nSW5jbHVk
ZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiwg
U3RyaW5nIHNlYXJjaFN0cmluZywgSlNWYWx1ZSBwb3NpdGlvbkFyZykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0
ZSogY2FsbEZyYW1lLCBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiwgU3RyaW5nIHNlYXJjaFN0cmlu
ZywgSlNWYWx1ZSBwb3NpdGlvbkFyZykKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpAQCAtMTc2OCw3MCArMTc3Miw3
MCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0lt
cGwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHN0YXJ0ID0gc3RkOjptYXgoMCwg
cG9zaXRpb25BcmcuYXNJbnQzMigpKTsKICAgICBlbHNlIHsKICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKLSAgICAgICAgc3RhcnQgPSBjbGFtcEFu
ZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoZXhlYyksIDAsIGxlbmd0
aCk7CisgICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25B
cmcudG9JbnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uZmluZChzZWFyY2hTdHJp
bmcsIHN0YXJ0KSAhPSBub3RGb3VuZCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmlu
Z1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0
cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24g
PSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBj
YWxsRnJhbWUsIGEwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBl
LmluY2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5p
bmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcg
PSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVu
dCgxKTsKKyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBl
eGVjLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGNhbGxGcmFt
ZSwgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0
cmluZ0luY2x1ZGVzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgQVNTRVJU
KGNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCi0gICAgU3RyaW5nIHN0cmluZ1Rv
U2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmlu
Z1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUg
YTAgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5n
ID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7
CisgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgZXhlYywg
c3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBjYWxsRnJhbWUsIHN0
cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJh
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5qc0NhbGxl
ZSgpLT5nbG9iYWxPYmplY3Qodm0pLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5n
KSk7CiB9CiAKIGVudW0gY2xhc3MgTm9ybWFsaXphdGlvbkZvcm0geyBORkMsIE5GRCwgTkZLQywg
TkZLRCB9OwpAQCAtMTkxNSwyMSArMTkxOSwyMSBAQCBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBOb3JtYWxpemF0aW9uRm9ybSBmbwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcodm0sIFdURk1vdmUocmVzdWx0
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05v
cm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGF1
dG8gZm9ybSA9IE5vcm1hbGl6YXRpb25Gb3JtOjpORkM7Ci0gICAgSlNWYWx1ZSBmb3JtVmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZvcm1WYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFmb3JtVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICBTdHJpbmcgZm9ybVN0cmluZyA9IGZvcm1WYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAg
ICAgU3RyaW5nIGZvcm1TdHJpbmcgPSBmb3JtVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAo
Zm9ybVN0cmluZyA9PSAiTkZDIikKQEAgLTE5NDEsMTAgKzE5NDUsMTAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBlbHNlIGlmIChmb3JtU3RyaW5nID09ICJORktEIikKICAgICAgICAgICAgIGZv
cm0gPSBOb3JtYWxpemF0aW9uRm9ybTo6TkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiYXJndW1lbnQgZG9lcyBub3Qg
bWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImFyZ3VtZW50IGRvZXMgbm90IG1hdGNo
IGFueSBub3JtYWxpemF0aW9uIGZvcm0iX3MpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCBzdHJpbmcsIGZvcm0p
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobm9ybWFs
aXplKGNhbGxGcmFtZSwgc3RyaW5nLCBmb3JtKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKaW5k
ZXggN2Q1NTBkN2QxNjRmMWNlZDY1YzQ2M2VhYTM3NGZmZDc4YTRkMjA5Mi4uNWMyNjhhYzFhMWQ5
ZDliNmQ5ZjU1YTA2YTAwNGVjMWExN2VlOTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmlu
ZygKIAogdm9pZCBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50
KiBvdmVjdG9yLCBSZWdFeHAqKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5h
bChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z0luY2x1ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVj
dG9yLmNwcAppbmRleCBlZDlmYTgwZGM3ZmY1NTYxNjY3NGU5MTUyNDMwZjEzNjc0NjY1Y2JiLi5m
Mzc5MDc3MmYyMGEyZTlkOGY0NjIyNDI0Yjk2MjA2YjExMWEyOTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNiw4
ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0
b3JGb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNTYsNyArNTYsNyBAQCBjb25zdCBDbGFzc0luZm8gU3lt
Ym9sQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnN5
bWJvbAogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFN5bWJvbChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxTeW1ib2woSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU3ltYm9sQ29uc3Ry
dWN0b3I6OlN5bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTeW1ib2wsIG51bGxwdHIp
CkBAIC03Nyw0MyArNzcsNDMgQEAgdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9s
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgZGVzY3JpcHRpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGRlc2NyaXB0
aW9uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoZGVzY3JpcHRpb24uaXNVbmRl
ZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2
bSkpOwogCi0gICAgU3RyaW5nIHN0cmluZyA9IGRlc2NyaXB0aW9uLnRvV1RGU3RyaW5nKGV4ZWMp
OworICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi50b1dURlN0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbih2bSwgc3RyaW5nKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1
Y3RvckZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1N0cmluZyogc3RyaW5nS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7
CisgICAgSlNTdHJpbmcqIHN0cmluZ0tleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gc3RyaW5nS2V5LT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgc3RyaW5nID0gc3RyaW5nS2V5LT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT52bSgpLnN5bWJv
bFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktl
eShzdHJpbmcpKSk7CiB9CiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBTeW1ib2xLZXlGb3JUeXBlRXJy
b3IgeyAiU3ltYm9sLmtleUZvciByZXF1aXJlcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBiZSBh
IHN5bWJvbCJfcyB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0
cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBzeW1ib2xWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghc3ltYm9sVmFsdWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sS2V5Rm9yVHlwZUVycm9y
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7CiAKICAgICBQcml2YXRlTmFtZSBw
cml2YXRlTmFtZSA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKTsKICAgICBT
eW1ib2xJbXBsJiB1aWQgPSBwcml2YXRlTmFtZS51aWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCmluZGV4IDQyYTA3YzZhNDNhNDdj
ZDY0MjkyMzllOWFiZWE5OTZiYWQ4MDE3ZjYuLjIzNGViMTg5MTliOWE5OTQ5MzE0ZjQ0NjA2MWU4
YzljZjAwZDZhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3Jp
cHRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAt
ODgsMzggKzg4LDM4IEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1cm4gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVj
dCo+KHRoaXNPYmplY3QpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5
bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5cGVFcnJvcik7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9u
VHlwZUVycm9yKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgY29uc3QgYXV0byBkZXNjcmlw
dGlvbiA9IHN5bWJvbC0+ZGVzY3JpcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRlc2NyaXB0aW9uLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBkZXNj
cmlwdGlvbikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZt
LCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3lt
Ym9sKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlw
ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3ltYm9sLT5kZXNjcmlw
dGl2ZVN0cmluZygpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJv
bCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFj
dFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xWYWx1ZU9m
VHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShzeW1ib2wpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Rocm93U2NvcGUuaAppbmRleCA1NTM1NWQ2OTYxZWQ4YzQ0MjRiMGViN2RlODVi
YzU5MGQ2MmVlYTZiLi5iYzc4YjNhMzEyNmJlNzJlNzJlMzliNDNhNmFjZWY4OWZjYmM3NDYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCkBAIC0yOSw4ICsy
OSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBKU09iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAog
I2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuaAppbmRleCA2
NGQzZjU1MDRlNTUwMTkwOWRiYTZmZDEwYWVkOTg5YzE5ODg3N2U4Li5jMjFhY2FlMjE4YzcyNmEw
YWU3ZWUxZWU1ODg4YWE0MWVhMWFiZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTMwLDkgKzMwLDEwIEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0FycmF5QnVmZmVyOwogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFR5cGVkQXJyYXlDb250
cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VHlwZWRBcnJheUNvbnRyb2xsZXI+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDY3NmQ5YzJjMTYyNjk3OTZiNTgy
NjgyZWZmNDFiODllYjU3ZjU5OTMuLjRlMjE2MjFjNjQ0NmQzM2ZjY2RhZDJjZDM2Njk2YmFjYzA1
OTU0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTAyLDEzICsxMDIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNzIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxv
Y2s7CiBjbGFzcyBDb2RlQ2FjaGU7CiBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKIGNsYXNzIENv
bXBhY3RWYXJpYWJsZU1hcDsKIGNsYXNzIEN1c3RvbUdldHRlclNldHRlcjsKIGNsYXNzIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIEV4Y2VwdGlvblNjb3BlOwogY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I7CkBAIC0xODAsNyArMTgwLDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBJbnN0
cnVjdGlvbjsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxG
cmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogc3RydWN0IExvY2FsVGltZU9m
ZnNldENhY2hlIHsKICAgICBMb2NhbFRpbWVPZmZzZXRDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmgKaW5kZXggYzE2ZDNhMmUwZTY1OTQ0OTdkOTQ3MmQwYWNjNWRh
ODA2ZTY3OTc3MS4uMGVmYjYwYzM3NGVmMWExNzkwM2Y1YzMzZTBhN2FjZTNmYTgyM2E3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaApAQCAtMzYsOCArMzYsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFZNVHJhcHMg
ewogICAgIHR5cGVkZWYgdWludDhfdCBCaXRGaWVsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XYXRjaGRvZy5oCmluZGV4IGQzNTYzYWY4M2U3YjZmZTk3N2EwNDQzNTcxYWViMmYxYTE3
MWFlZDYuLmQyYWUwNTM2YzIwMWMxNWNhZmQ5ODJlZGVlMDQzMGZiYzM0ZjdiMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaApAQCAtMzMsOCArMzMsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFdhdGNoZG9nIDog
cHVibGljIFdURjo6VGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hkb2c+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDM5YTIwNzYwYTAxOTkwZTYwYjdhZGEyY2Fi
ZDY2OWRiNzA1ZWFmOGUuLmU0ZWE5NTk0Mjc2ZDY4OTg3ZjEzZTMxN2QyNDc1MjZjM2ViMjk3NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0
cnVjdG9yLmNwcApAQCAtNDUsNTQgKzQ1LDUzIEBAIHZvaWQgV2Vha01hcENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYWtNYXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogV2Vha01hcENvbnN0cnVjdG9yOjpXZWFrTWFw
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSwgY2FsbFdlYWtNYXAsIGNvbnN0cnVjdFdlYWtNYXApCiB7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJXZWFrTWFwIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiV2Vha01hcCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9i
YWxPYmplY3Qodm0pOwotICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBnbG9iYWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiB3ZWFr
TWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgSlNXZWFrTWFwKiB3ZWFrTWFwID0gSlNXZWFrTWFwOjpjcmVhdGUodm0sIHdl
YWtNYXBTdHJ1Y3R1cmUpOwotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh3ZWFrTWFwKTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtNYXAt
PkpTT2JqZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAgICBKU1ZhbHVl
IGFkZGVyRnVuY3Rpb24gPSB3ZWFrTWFwLT5KU09iamVjdDo6Z2V0KGNhbGxGcmFtZSwgdm0ucHJv
cGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBD
YWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5j
dGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKKyAgICBmb3JFYWNoSW5JdGVyYWJs
ZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgICAgIGlmICghbmV4dEl0ZW0uaXNPYmplY3QoKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChleGVjLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCkpOworICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChjYWxsRnJhbWUs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5leHRJdGVtLmdldChl
eGVjLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
bmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0xMDAsNyArOTksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
Y2FsbChleGVjLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJh
bWUsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhLCB3ZWFrTWFwLCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh3ZWFrTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcFByb3RvdHlwZS5jcHAKaW5kZXggYzczZmQzZWM3MDI1OTExMmRkNWQxNWMyYTA2
NWUxOTIxMGNkYWVmNy4uY2Q0YzU5YWI5MmJmZGU2NDYxZDY1YjE2ZDJlNWJhMDZmOWY3Y2NjMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5jcHAKQEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIFdlYWtNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtNYXAiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYWtNYXBQcm90b3R5cGUp
IH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBEZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrTWFwR2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFw
RGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNX
ZWFrTWFwSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNTEsOSArNTEsOSBAQCB2
b2lkIFdlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiV2Vha01hcCIp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtNYXAqIGdldFdlYWtNYXAoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBK
U1dlYWtNYXAqIGdldFdlYWtNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1l
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlz
T2JqZWN0KCkpKSB7CkBAIC02OSwxOCArNjksMTggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNX
ZWFrTWFwKiBnZXRXZWFrTWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
b3RvRnVuY1dlYWtNYXBEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogbWFwID0gZ2V0
V2Vha01hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG1h
cCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBt
YXAtPnJlbW92ZShhc09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3RvRnVuY1dlYWtNYXBHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBHZXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogbWFwID0g
Z2V0V2Vha01hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8q
IG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKQEAgLTg5LDIxICs4OSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtNYXBHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShtYXAtPmdldChhc09iamVjdChrZXkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBt
YXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
YXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGtleS5pc09iamVj
dCgpICYmIG1hcC0+aGFzKGFzT2JqZWN0KGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIG1hcCA9
IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRv
KiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IW1hcCk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAppbmRleCBkNDZmMmU3ZTg4OWQ0ODQ3ZTU2
OWViMjBmYTZjODc4ODk2NTI0ZjUxLi5lOGIyNTM4MGNkYmQxYzYwZGZhMjdmOTA0MmQ0Y2NjZjFi
YmQxNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2Jq
ZWN0UmVmQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDMzICs0NSwzMiBAQCB2b2lkIFdl
YWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrT2JqZWN0
UmVmUHJvdG90eXBlKiBwcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1JlZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1JlZihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2Vha1JlZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBXZWFr
T2JqZWN0UmVmQ29uc3RydWN0b3I6OldlYWtPYmplY3RSZWZDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha1Jl
ZiwgY29uc3RydWN0V2Vha1JlZikKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFdlYWtSZWYoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtS
ZWYiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFrUmVmIikp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
UmVmKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFdl
YWtSZWYgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmpl
Y3QiX3MpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAg
U3RydWN0dXJlKiBXZWFrT2JqZWN0UmVmU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVj
dC0+d2Vha09iamVjdFJlZlN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIFdlYWtPYmplY3RS
ZWZTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha09iamVj
dFJlZlN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU1dlYWtPYmplY3RSZWY6OmNyZWF0ZSh2bSwgV2Vha09iamVjdFJlZlN0cnVjdHVyZSwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWFrT2JqZWN0UmVmOjpjcmVhdGUodm0s
IFdlYWtPYmplY3RSZWZTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
Z2V0T2JqZWN0KCkpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKaW5kZXggNTJmOWVhY2RhMDEz
MWQzNTExMTAyNGVhZjEzNzVmNGMwM2UzYWQ5NS4uODk5Y2QzYTg1YTFlMjY1MzU3YjkyZjA2MjQ5
ZWVmZDIyMmE5ZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJXZWFrUmVmIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVy
ZWYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrT2JqZWN0UmVmUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgV2Vha09iamVjdFJlZlByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc1N0cmluZyh2bSwgIldlYWtSZWYiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRX
ZWFrUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgewpA
QCAtNjUsMTAgKzY1LDEwIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJlZiog
Z2V0V2Vha1JlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1Jl
ZkRlcmVmKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwotICAg
IGF1dG8qIHJlZiA9IGdldFdlYWtSZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byogcmVmID0gZ2V0
V2Vha1JlZihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFyZWYpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
Q29uc3RydWN0b3IuY3BwCmluZGV4IDY1MjQ5ZDViYzBhMTU0YTZjZDEzYjJlZDNlNDc1ZjVkZmJi
MWU4YjguLjE3ZGViODg1NTdjMmEzNmU4NTljZGU0ZTA4M2E1MGM3ZTlkYzIwYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNw
cApAQCAtNDUsNDggKzQ1LDQ3IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtT
ZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RXZWFrU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogV2Vha1NldENvbnN0cnVjdG9yOjpXZWFrU2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSwgY2FsbFdlYWtTZXQsIGNvbnN0cnVjdFdlYWtTZXQpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJXZWFrU2V0IikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiV2Vha1NldCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
dm0pOwotICAgIFN0cnVjdHVyZSogd2Vha1NldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPndlYWtTZXRTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtTZXRTdHJ1Y3R1cmUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgSlNXZWFrU2V0KiB3ZWFrU2V0ID0gSlNXZWFrU2V0OjpjcmVhdGUodm0sIHdlYWtTZXRTdHJ1
Y3R1cmUpOwotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoaXRlcmFi
bGUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3
ZWFrU2V0KTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtTZXQtPkpTT2JqZWN0
OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKKyAgICBKU1ZhbHVlIGFkZGVyRnVu
Y3Rpb24gPSB3ZWFrU2V0LT5KU09iamVjdDo6Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1l
cy0+YWRkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBh
ZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1l
LCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dFZh
bHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAg
YXJndW1lbnRzLmFwcGVuZChuZXh0VmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5o
YXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVy
RnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrU2V0LCBhcmd1bWVu
dHMpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CiAg
ICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAppbmRleCBm
NWUwNzgwMWZjODAxMTI4MGZiZTc3ZWVkMmE5N2E2ZWVkZmM3ODEzLi4wZjczNWRiMGZkNjE3M2Y0
MjdkYWM1Y2FjMDVjMmIyMDFhYmIyNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYWtTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IldlYWtTZXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFdlYWtTZXRQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEFk
ZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtTZXREZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9p
ZCBXZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7CkBAIC00OSw5ICs0OSw5IEBAIHZvaWQgV2Vha1NldFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0
cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJXZWFrU2V0IiksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgc3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1Nl
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKQEAgLTY3
LDMwICs2NywzMCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERlbGV0
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jV2Vha1NldERlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChjYWxs
RnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFz
ZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
SlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIHNldC0+cmVtb3ZlKGFzT2JqZWN0
KGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a1NldEhhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcHJvdG9GdW5jV2Vha1NldEhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIHNldC0+aGFzKGFzT2JqZWN0
KGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a1NldEFkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcHJvdG9GdW5jV2Vha1NldEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXNldCk7CiAgICAgaWYgKCFzZXQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggMzU1OTJhNDAwYjc5MTZjMGNh
NDkzMDQ1MjVjMTc4OTJmNzdhMzA3ZC4uMjU3YjI5NTUzY2FhMmY3ZDE0YThhNWRjNjcwZDE0OTE2
YzZlOGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApA
QCAtODg1LDExICs4ODUsMTEgQEAgY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1YmxpYyBE
T01KSVROb2RlIHsKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkVuYWJsZUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgICAgICBhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRl
ckNvbXBsZXgqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9N
SklUR2V0dGVyQ29tcGxleCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKG9iamVjdCkKICAgICAgICAgICAgIG9iamVjdC0+bV9lbmFibGVFeGNlcHRpb24gPSB0cnVl
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtOTQ5
LDE2ICs5NDksMTYgQEAgY2xhc3MgRE9NSklURnVuY3Rpb25PYmplY3QgOiBwdWJsaWMgRE9NSklU
Tm9kZSB7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEV4ZWNTdGF0ZSog
ZXhlYykKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldp
dGhUeXBlQ2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwot
ICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAg
RE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PERPTUpJVE5vZGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
ICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRo
aXNPYmplY3QtPnZhbHVlKCkpKTsKICAgICB9CiAKQEAgLTEwMjgsMTUgKzEwMjgsMTUgQEAgY2xh
c3MgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbldpdGhUeXBlQ2hlY2soRXhlY1N0YXRlKiBleGVjKQorICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVDaGVjayhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7
CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qq
Pih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMjk0LDgg
KzEyOTQsOCBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUm9vdCogcm9v
dCkKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJl
YW1pbmdQYXJzZXJGaW5hbGl6ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBjbGFzcyBXYXNtU3RyZWFtaW5nUGFyc2VyIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzNjAsMjYgKzEzNjAsMjYgQEAgY2xhc3MgV2Fz
bVN0cmVhbWluZ1BhcnNlciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKIGNvbnN0
IENsYXNzSW5mbyBXYXNtU3RyZWFtaW5nUGFyc2VyOjpzX2luZm8gPSB7ICJXYXNtU3RyZWFtaW5n
UGFyc2VyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShXYXNtU3RyZWFtaW5nUGFyc2VyKSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2Vy
QWRkQnl0ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMt
PnZtKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVhbWluZ1BhcnNlcio+KHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2Fz
bVN0cmVhbWluZ1BhcnNlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKTsKIAotICAgIGF1dG8gZGF0YSA9IGdldFdhc21CdWZm
ZXJGcm9tVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gZGF0YSA9IGdl
dFdhc21CdWZmZXJGcm9tVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90Pih0aGlzT2JqZWN0LT5zdHJlYW1pbmdQYXJzZXIoKS5hZGRCeXRlcyhiaXR3
aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZmlyc3QpLCBkYXRhLnNlY29uZCkpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1Bh
cnNlckZpbmFsaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2VyKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRoaXNPYmplY3QtPnN0cmVh
bWluZ1BhcnNlcigpLmZpbmFsaXplKCkpKSk7CkBAIC0xMzk1LDcgKzEzOTUsNyBAQCBjb25zdCBD
bGFzc0luZm8gSlNEb2xsYXJWTTo6c19pbmZvID0geyAiRG9sbGFyVk0iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscAogCiAvLyBUcmlnZ2VycyBhIGNyYXNoIGltbWVkaWF0ZWx5LgogLy8g
VXNhZ2U6ICR2bS5jcmFzaCgpCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jhc2goRXhlY1N0YXRlKikKK3N0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmFzaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBDUkFTSCgpOwpAQCAtMTQwMywxNCArMTQwMywxNCBA
QCBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3Jhc2goRXhlY1N0YQogCiAvLyBFeGVjdXRlcyBhIGJyZWFrcG9pbnQgaW5z
dHJ1Y3Rpb24gaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRydXRoeSBvciBpcyB1bnNldC4KIC8v
IFVzYWdlOiAkdm0uYnJlYWtwb2ludCg8Y29uZGl0aW9uPikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQnJlYWtwb2ludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJyZWFrcG9pbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAvLyBOb3RoaW5nIHNob3VsZCB0aHJv
dyBoZXJlIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGRvdWJsZSBjaGVjay4uLgotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUp
OwotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDApLnRv
Qm9vbGVhbihleGVjKSkKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIHx8IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpCiAgICAgICAgIFdURkJy
ZWFrcG9pbnRUcmFwKCk7CiAKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBAIC0x
NDE4LDcgKzE0MTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkJyZWFrcG9pbnQoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGN1cnJlbnQgZnJhbWUgaXMgYSBERkcgZnJhbWUuCiAvLyBVc2FnZTogaXNERkcgPSAkdm0uZGZn
VHJ1ZSgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRGR1Ry
dWUoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uREZHVHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwpAQCAtMTQyNiwxMyArMTQyNiwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRGR1RydWUoRXhlY1N0YXRlKikKIAogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgRlRMIGZyYW1lLgogLy8gVXNhZ2U6IGlz
RlRMID0gJHZtLmZ0bFRydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25GVExUcnVlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkZUTFRydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1TWZlbmNlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lm
IENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoRXhlY1N0YXRl
KikKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNjKEV4ZWNTdGF0
ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNj
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ1NCw3
ICsxNDU0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cHVSZHRzYyhFeGVjU3RhdGUqKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q3B1aWQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q3B1aWQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYg
Q1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEV4ZWNTdGF0ZSop
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVQYXVzZShFeGVjU3RhdGUq
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVQYXVzZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAgLTE0ODEsMTMg
KzE0ODEsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cHVQYXVzZShFeGVjU3RhdGUqKQogLy8KIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3Qg
YSBKU0FycmF5QnVmZmVyLCB3ZSBsb2FkIHRoZSBidXR0ZXJmbHkKIC8vIGFuZCBjbGZsdXNoIGF0
IHRoZSBhZGRyZXNzIG9mIHRoZSBidXR0ZXJmbHkuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNsZmx1c2goRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1Mp
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzSW50MzIoKSkKKyAgICBpZiAoIWNh
bGxGcmFtZS0+YXJndW1lbnQoMSkuaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCiAgICAgYXV0byBjbGZsdXNoID0gW10gKHZvaWQq
IHB0cikgewpAQCAtMTQ5OCwxMSArMTQ5OCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNsZmx1c2goRXhlY1N0YXRlKiBleGVjKQogCiAgICAgVmVj
dG9yPHZvaWQqPiB0b0ZsdXNoOwogCi0gICAgdWludDMyX3Qgb2Zmc2V0ID0gZXhlYy0+YXJndW1l
bnQoMSkuYXNVSW50MzIoKTsKKyAgICB1aW50MzJfdCBvZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpLmFzVUludDMyKCk7CiAKLSAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkK
KyAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKQogICAgICAgICB0b0ZsdXNo
LmFwcGVuZChiaXR3aXNlX2Nhc3Q8Y2hhcio+KHZpZXctPnZlY3RvcigpKSArIG9mZnNldCk7Ci0g
ICAgZWxzZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgZXhlYy0+YXJndW1lbnQoMCkpKSB7CisgICAgZWxzZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpIHsK
ICAgICAgICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOgpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgY2xmbHVzaChwdHIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRy
dWUpKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiAjZW5kaWYKIH0KQEAgLTE1NjgsMjUgKzE1NjgsMjUgQEAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9uKEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSkK
IAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgTExJbnQgZnJhbWUu
CiAvLyBVc2FnZTogaXNMTEludCA9ICR2bS5sbGludFRydWUoKQotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25MTGludFRydWUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25MTGludFRydWUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIGlmICghZXhlYykKKyAgICBpZiAoIWNhbGxGcmFtZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBDYWxsZXJG
cmFtZUpJVFR5cGVGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsK
KyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZnVuY3Rvci5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaykpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgYSBi
YXNlbGluZSBKSVQgZnJhbWUuCiAvLyBVc2FnZTogaXNCYXNlbGluZUpJVCA9ICR2bS5qaXRUcnVl
KCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSklUVHJ1ZShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkpJVFRydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIGlmICghZXhlYykKKyAgICBp
ZiAoIWNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBDYWxsZXJGcmFtZUpJVFR5cGVGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgZXhlYy0+
aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rvci5qaXRUeXBlKCkgPT0gSklU
VHlwZTo6QmFzZWxpbmVKSVQpKTsKIH0KIApAQCAtMTU5NCwxMyArMTU5NCwxMyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpJVFRydWUoRXhlY1N0YXRlKiBl
eGVjKQogLy8gVXNhZ2U6CiAvLyBmdW5jdGlvbiBmKCkgeyB9OwogLy8gJHZtLm5vSW5saW5lKGYp
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0lubGluZShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk5vSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAotICAg
IEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAKICAgICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhl
Y3V0YWJsZUZvckZ1bmN0aW9uKHRoZUZ1bmN0aW9uVmFsdWUpKQogICAgICAgICBleGVjdXRhYmxl
LT5zZXROZXZlcklubGluZSh0cnVlKTsKQEAgLTE2MTAsMjggKzE2MTAsMjggQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0lubGluZShFeGVjU3RhdGUqIGV4
ZWMpCiAKIC8vIFJ1bnMgYSBmdWxsIEdDIHN5bmNocm9ub3VzbHkuCiAvLyBVc2FnZTogJHZtLmdj
KCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25H
QyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk1JbnNwZWN0b3I6OmdjKGV4ZWMpOworICAg
IFZNSW5zcGVjdG9yOjpnYyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKIC8vIFJ1bnMgdGhlIGVkZW5HQyBzeW5jaHJvbm91c2x5Lgog
Ly8gVXNhZ2U6ICR2bS5lZGVuR0MoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IFZNSW5zcGVjdG9yOjplZGVuR0MoZXhlYyk7CisgICAgVk1JbnNwZWN0b3I6OmVkZW5HQyhjYWxs
RnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
IC8vIER1bXBzIHRoZSBoYXNoZXMgb2YgYWxsIHN1YnNwYWNlcyBjdXJyZW50bHkgcmVnaXN0ZXJl
ZCB3aXRoIHRoZSBWTS4KIC8vIFVzYWdlOiAkdm0uZHVtcFN1YnNwYWNlSGFzaGVzKCkKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVz
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBWTUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFzaGVzKCZ2bSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTE2NTAsMTIgKzE2NTAsMTIgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNo
ZXMoRXhlY1N0YXRlKiBleGVjKQogLy8gTm90ZTogeW91IGNhbm5vdCB0b1N0cmluZygpIGEgY29k
ZUJsb2NrLCB1bmxpbmtlZENvZGVCbG9jaywgb3IgZXhlY3V0YWJsZSBiZWNhdXNlCiAvLyB0aGVy
ZSBhcmUgaW50ZXJuYWwgb2JqZWN0cyBhbmQgbm90IGEgSlMgb2JqZWN0LiBIZW5jZSwgeW91IGNh
bm5vdCBkbyBzdHJpbmcKIC8vIGNvbmNhdGVuYXRpb24gd2l0aCB0aGVtLgotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsRnJhbWUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHVuc2lnbmVkIGZyYW1lTnVtYmVyID0gMTsKLSAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIXZhbHVlLmlzVUludDMyKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNjY1
LDE4ICsxNjY1LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZnJhbWVOdW1iZXIgPSB2YWx1
ZS5hc1VJbnQzMigpICsgMTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
RG9sbGFyVk1DYWxsRnJhbWU6OmNyZWF0ZShleGVjLCBmcmFtZU51bWJlcikpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNEb2xsYXJWTUNhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZSwg
ZnJhbWVOdW1iZXIpKTsKIH0KIAogLy8gR2V0cyBhIHRva2VuIGZvciB0aGUgQ29kZUJsb2NrIGZv
ciBhIHNwZWNpZmllZCBmcmFtZSBpbmRleC4KIC8vIFVzYWdlOiBjb2RlQmxvY2tUb2tlbiA9ICR2
bS5jb2RlQmxvY2tGb3JGcmFtZSgwKSAvLyBmcmFtZSAwIGlzIHRoZSB0b3AgZnJhbWUuCiAvLyBV
c2FnZTogY29kZUJsb2NrVG9rZW4gPSAkdm0uY29kZUJsb2NrRm9yRnJhbWUoKSAvLyBpbXBsaWVz
IGZyYW1lIDAgaS5lLiBjdXJyZW50IGZyYW1lLgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1l
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICB1bnNpZ25lZCBmcmFtZU51bWJlciA9IDE7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1VJbnQzMigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTY4
NiwyMCArMTY4NiwyMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNvZGVCbG9ja0ZvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZnJhbWVOdW1i
ZXIgPSB2YWx1ZS5hc1VJbnQzMigpICsgMTsKICAgICB9CiAKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IFZNSW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JGcmFtZShleGVjLCBmcmFtZU51bWJlcik7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yRnJh
bWUoY2FsbEZyYW1lLCBmcmFtZU51bWJlcik7CiAgICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2RlQmxvY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zy
b21BcmcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFy
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIENvZGVCbG9jayogY2FuZGlkYXRlQ29kZUJsb2NrID0g
bnVsbHB0cjsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiog
ZnVuYyA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB2YWx1ZS5hc0NlbGwoKSk7CkBA
IC0xNzEyLDcgKzE3MTIsNyBAQCBzdGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IHN0YXRpY19j
YXN0PENvZGVCbG9jayo+KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICBpZiAoY2FuZGlk
YXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRp
ZGF0ZUNvZGVCbG9jaykpCisgICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rv
cjo6aXNWYWxpZENvZGVCbG9jayhjYWxsRnJhbWUsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCiAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGVDb2RlQmxvY2s7CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJs
b2NrKQpAQCAtMTcyNiwyNCArMTcyNiwyNCBAQCBzdGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tG
cm9tQXJnKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVzYWdlOiAkdm0ucHJpbnQoImNvZGVibG9jayA9
ICIsICR2bS5jb2RlQmxvY2tGb3IoY29kZUJsb2NrVG9rZW4pKQogLy8gTm90ZTogeW91IGNhbm5v
dCB0b1N0cmluZygpIGEgY29kZUJsb2NrIGJlY2F1c2UgaXQncyBhbiBpbnRlcm5hbCBvYmplY3Qg
YW5kIG5vdAogLy8gYSBKUyBvYmplY3QuIEhlbmNlLCB5b3UgY2Fubm90IGRvIHN0cmluZyBjb25j
YXRlbmF0aW9uIHdpdGggaXQuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNvZGVCbG9ja0ZvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJv
bUFyZyhleGVjKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21Bcmco
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogICAgIFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3Ry
ZWFtOwogICAgIGlmIChjb2RlQmxvY2spIHsKICAgICAgICAgc3RyZWFtLnByaW50KCpjb2RlQmxv
Y2spOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCks
IHN0cmVhbS50b1N0cmluZygpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAvLyBVc2FnZTog
JHZtLmR1bXBTb3VyY2VGb3IoZnVuY3Rpb25PYmopCiAvLyBVc2FnZTogJHZtLmR1bXBTb3VyY2VG
b3IoY29kZUJsb2NrVG9rZW4pCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkR1bXBTb3VyY2VGb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU291cmNlRm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tG
cm9tQXJnKGV4ZWMpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFy
ZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAgICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAg
Y29kZUJsb2NrLT5kdW1wU291cmNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE3NTEsMjEgKzE3NTEsMjEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU291cmNlRm9yKEV4ZWNTdGF0ZSogZXhlYykKIAog
Ly8gVXNhZ2U6ICR2bS5kdW1wQnl0ZWNvZGVGb3IoZnVuY3Rpb25PYmopCiAvLyBVc2FnZTogJHZt
LmR1bXBCeXRlY29kZUZvcihjb2RlQmxvY2spCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkR1bXBCeXRlY29kZUZvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBCeXRlY29kZUZvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY29kZUJsb2NrRnJvbUFyZyhleGVjKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNv
ZGVCbG9ja0Zyb21BcmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogICAgIGlmIChjb2RlQmxv
Y2spCiAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRv
UHJpbnQoRXhlY1N0YXRlKiBleGVjLCBib29sIGFkZExpbmVGZWVkKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGRvUHJpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGJvb2wgYWRkTGluZUZlZWQpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgp
OyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSBhcmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChp
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZt
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CisgICAgICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChpKTsKICAgICAgICAgaWYgKGFyZy5pc0NlbGwoKQogICAgICAgICAgICAgJiYgIWFy
Zy5pc09iamVjdCgpCiAgICAgICAgICAgICAmJiAhYXJnLmlzU3RyaW5nKCkKQEAgLTE3NzMsNyAr
MTc3Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50KEV4ZWNTdGF0ZSogZXhlYywg
Ym9vbCBhZGRMaW5lRmVlZCkKICAgICAgICAgICAgIGRhdGFMb2coYXJnKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudChpKS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgU3RyaW5nIGFyZ1N0
ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGRhdGFMb2coYXJnU3RyKTsKICAgICB9CkBAIC0xNzg0LDQxICsxNzg0LDQxIEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBhZGRM
aW5lRmVlZCkKIAogLy8gUHJpbnRzIGEgc2VyaWVzIG9mIGNvbW1hIHNlcGFyYXRlIHN0cmluZ3Mg
d2l0aG91dCBhcHBlbmRpbmcgYSBuZXdsaW5lLgogLy8gVXNhZ2U6ICR2bS5kYXRhTG9nKHN0cjEs
IHN0cjIsIHN0cjMpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRhdGFMb2coRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EYXRhTG9nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CiAgICAgY29uc3QgYm9vbCBhZGRMaW5lRmVlZCA9IGZhbHNlOwotICAgIHJldHVybiBkb1ByaW50
KGV4ZWMsIGFkZExpbmVGZWVkKTsKKyAgICByZXR1cm4gZG9QcmludChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYWRkTGluZUZlZWQpOwogfQogCiAvLyBQcmludHMgYSBzZXJpZXMgb2YgY29tbWEg
c2VwYXJhdGUgc3RyaW5ncyBhbmQgYXBwZW5kcyBhIG5ld2xpbmUuCiAvLyBVc2FnZTogJHZtLnBy
aW50KHN0cjEsIHN0cjIsIHN0cjMpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICAgICBjb25zdCBib29sIGFkZExpbmVGZWVkID0gdHJ1ZTsKLSAgICByZXR1cm4gZG9Q
cmludChleGVjLCBhZGRMaW5lRmVlZCk7CisgICAgcmV0dXJuIGRvUHJpbnQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIGFkZExpbmVGZWVkKTsKIH0KIAogLy8gRHVtcHMgdGhlIGN1cnJlbnQgQ2Fs
bEZyYW1lLgogLy8gVXNhZ2U6ICR2bS5kdW1wQ2FsbEZyYW1lKCkKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBDYWxsRnJh
bWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIC8vIFdoZW4gdGhlIGNhbGxlcnMgY2FsbCB0
aGlzIGZ1bmN0aW9uLCB0aGV5IGFyZSBleHBlY3RpbmcgdG8gZHVtcCB0aGVpcgogICAgIC8vIG93
biBmcmFtZS4gU28gc2tpcCAxIGZvciB0aGlzIGZyYW1lLgotICAgIFZNSW5zcGVjdG9yOjpkdW1w
Q2FsbEZyYW1lKGV4ZWMsIDEpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wQ2FsbEZyYW1lKGNhbGxG
cmFtZSwgMSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAogLy8gRHVtcHMgdGhlIEpTIHN0YWNrLgogLy8gVXNhZ2U6ICR2bS5wcmludFN0YWNrKCkKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN0YWNrKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RHVtcFN0YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAvLyBXaGVuIHRoZSBjYWxsZXJz
IGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhleSBhcmUgZXhwZWN0aW5nIHRvIGR1bXAgdGhlCiAgICAg
Ly8gc3RhY2sgc3RhcnRpbmcgdGhlaXIgb3duIGZyYW1lLiBTbyBza2lwIDEgZm9yIHRoaXMgZnJh
bWUuCi0gICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFjayhleGVjLCAxKTsKKyAgICBWTUluc3BlY3Rv
cjo6ZHVtcFN0YWNrKGNhbGxGcmFtZSwgMSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTgyNywxMiArMTgyNywxMiBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdGFjayhFeGVjU3RhdGUqIGV4ZWMp
CiAvLyBVc2FnZTogJHZtLmR1bXBSZWdpc3RlcnMoKSAvLyBkdW1wIHRoZSByZWdpc3RlcnMgb2Yg
dGhlIGN1cnJlbnQgQ2FsbEZyYW1lLgogLy8gRklYTUU6IEN1cnJlbnRseSwgdGhpcyBmdW5jdGlv
biBkdW1wcyB0aGUgcGh5c2ljYWwgZnJhbWUuIFdlIHNob3VsZCBtYWtlCiAvLyBpdCBkdW1wIHRo
ZSBsb2dpY2FsIGZyYW1lIChpLmUuIGJlIGFibGUgdG8gZHVtcCBpbmxpbmVkIGZyYW1lcyBhcyB3
ZWxsKS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJl
Z2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHVu
c2lnbmVkIHJlcXVlc3RlZEZyYW1lSW5kZXggPSAxOwotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPj0gMSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgICAgIGlmICghdmFsdWUuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTE4NDMsNyArMTg0Myw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJlZ2lzdGVycyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgfQogCiAgICAgdW5zaWduZWQgZnJhbWVJbmRleCA9IDA7Ci0gICAgZXhl
Yy0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgeworICAgIGNhbGxGcmFtZS0+
aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgewogICAgICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBpZiAoZnJhbWVJbmRleCsrICE9IHJlcXVl
c3RlZEZyYW1lSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKQEAgLTE4NTYsMTAgKzE4NTYsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gRHVtcHMg
dGhlIGludGVybmFsIG1lbW9yeSBsYXlvdXQgb2YgYSBKU0NlbGwuCiAvLyBVc2FnZTogJHZtLmR1
bXBDZWxsKGNlbGwpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBDZWxsKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRHVtcENlbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiAgICAgCkBAIC0xODY5LDIyICsxODY5LDIyIEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENlbGwoRXhlY1N0
YXRlKiBleGVjKQogCiAvLyBHZXRzIHRoZSBkYXRhTG9nIGR1bXAgb2YgdGhlIGluZGV4aW5nTW9k
ZSBvZiB0aGUgcGFzc2VkIHZhbHVlLgogLy8gVXNhZ2U6ICR2bS5wcmludCgiaW5kZXhpbmdNb2Rl
ID0gIiArICR2bS5pbmRleGluZ01vZGUoanNWYWx1ZSkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkluZGV4aW5nTW9kZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkluZGV4aW5nTW9kZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQo
MCkuaXNPYmplY3QoKSkKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogCiAgICAgV1RGOjpTdHJp
bmdQcmludFN0cmVhbSBzdHJlYW07Ci0gICAgc3RyZWFtLnByaW50KEluZGV4aW5nVHlwZUR1bXAo
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCktPmluZGV4aW5nTW9kZSgpKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCBzdHJlYW0u
dG9TdHJpbmcoKSkpOworICAgIHN0cmVhbS5wcmludChJbmRleGluZ1R5cGVEdW1wKGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCktPmluZGV4aW5nTW9kZSgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHN0
cmVhbS50b1N0cmluZygpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmxpbmVDYXBhY2l0eShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
aWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhlYy0+YXJn
dW1lbnQoMCkpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoYXV0
byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihvYmplY3Qt
PnN0cnVjdHVyZSh2bSktPmlubGluZUNhcGFjaXR5KCkpKTsKIAogICAgIHJldHVybiBlbmNvZGVk
SlNVbmRlZmluZWQoKTsKQEAgLTE4OTIsMjIgKzE4OTIsMjIgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmxpbmVDYXBhY2l0eShFeGVjU3RhdGUqIGV4ZWMp
CiAKIC8vIEdldHMgdGhlIGRhdGFMb2cgZHVtcCBvZiBhIGdpdmVuIEpTIHZhbHVlIGFzIGEgc3Ry
aW5nLgogLy8gVXNhZ2U6ICR2bS5wcmludCgidmFsdWUgPSAiICsgJHZtLnZhbHVlKGpzVmFsdWUp
KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WYWx1ZShFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgV1RGOjpTdHJp
bmdQcmludFN0cmVhbSBzdHJlYW07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAg
ICAgICBzdHJlYW0ucHJpbnQoIiwgIik7Ci0gICAgICAgIHN0cmVhbS5wcmludChleGVjLT51bmNo
ZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIHN0cmVhbS5wcmludChjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyhleGVjLT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJlYW0udG9TdHJp
bmcoKSkpOwogfQogCiAvLyBHZXRzIHRoZSBwaWQgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KIC8v
IFVzYWdlOiAkdm0ucHJpbnQoInBpZCA9ICIgKyAkdm0uZ2V0cGlkKCkpCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFBJRChFeGVjU3RhdGUqKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQSUQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKQEAgLTE5MTUsMzQyICsxOTE1LDM0MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkdldFBJRChFeGVjU3RhdGUqKQogCiAvLyBNYWtlIHRoZSBnbG9i
YWxPYmplY3QgaGF2ZSBhIGJhZCB0aW1lLiBEb2VzIG5vdGhpbmcgaWYgdGhlIG9iamVjdCBpcyBu
b3QgYSBKU0dsb2JhbE9iamVjdC4KIC8vIFVzYWdlOiAkdm0uaGF2ZUFCYWRUaW1lKGdsb2JhbE9i
amVjdCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGF2ZUFC
YWRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSGF2ZUFCYWRUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIEpTVmFsdWUgb2JqVmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9ialZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIW9ialZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBKU09iamVjdCogb2Jq
ID0gYXNPYmplY3Qob2JqVmFsdWUuYXNDZWxsKCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odm0sIG9iaik7Ci0gICAg
aWYgKCFnbG9iYWxPYmplY3QpCisgICAgSlNHbG9iYWxPYmplY3QqIHRhcmdldCA9IGpzRHluYW1p
Y0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2bSwgb2JqKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgZ2xvYmFsT2JqZWN0
LT5oYXZlQUJhZFRpbWUodm0pOworICAgIHRhcmdldC0+aGF2ZUFCYWRUaW1lKHZtKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiB9CiAKIC8vIENoZWNrcyBp
ZiB0aGUgb2JqZWN0IChvciBpdHMgZ2xvYmFsIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgZ2xvYmFs
KSBpcyBoYXZpbmcgYSBiYWQgdGltZS4KIC8vIFVzYWdlOiAkdm0uaXNIYXZpbmdBQmFkVGltZShv
YmopCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzSGF2aW5n
QUJhZFRpbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIEpTVmFsdWUgb2Jq
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9ialZhbHVlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9ialZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU09iamVjdCog
b2JqID0gYXNPYmplY3Qob2JqVmFsdWUuYXNDZWxsKCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odm0sIG9iaik7Ci0g
ICAgaWYgKGdsb2JhbE9iamVjdCkKLSAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihn
bG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpOworICAgIEpTR2xvYmFsT2JqZWN0KiB0
YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odm0sIG9iaik7CisgICAgaWYg
KHRhcmdldCkKKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmlzSGF2
aW5nQUJhZFRpbWUoKSkpOwogCi0gICAgZ2xvYmFsT2JqZWN0ID0gb2JqLT5nbG9iYWxPYmplY3Qo
KTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICB0YXJnZXQ9IG9iai0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihnbG9i
YWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRhcmdldC0+aXNIYXZpbmdBQmFkVGltZSgpKSk7CiB9CiAKIC8vIENyZWF0
ZXMgYSBuZXcgZ2xvYmFsIG9iamVjdC4KIC8vIFVzYWdlOiAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0
KCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xv
YmFsT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSh2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxs
KCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlUHJveHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTT2JqZWN0KiBqc1RhcmdldCA9
IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBK
U1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
anNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCh2bSksIEltcHVyZVByb3h5VHlwZSk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCh2bSksIEltcHVyZVByb3h5VHlw
ZSk7CiAgICAgSlNQcm94eSogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwg
anNUYXJnZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJveHkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJh
eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUnVudGltZUFycmF5KiBhcnJheSA9IFJ1bnRpbWVB
cnJheTo6Y3JlYXRlKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGNhbGxGcmFtZSk7Cisg
ICAgUnVudGltZUFycmF5KiBhcnJheSA9IFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJheSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTnVsbFJvcGVTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVOdWxsUm9wZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNSb3BlU3Ry
aW5nOjpjcmVhdGVOdWxsRm9yVGVzdGluZyh2bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUlt
cHVyZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBK
U09iamVjdCogZGVsZWdhdGUgPSBudWxscHRyOwogICAgIGlmICh0YXJnZXQuaXNPYmplY3QoKSkK
ICAgICAgICAgZGVsZWdhdGUgPSBhc09iamVjdCh0YXJnZXQuYXNDZWxsKCkpOwotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSW1wdXJlR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSW1wdXJlR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNO
dWxsKCkpOwogICAgIEltcHVyZUdldHRlciogcmVzdWx0ID0gSW1wdXJlR2V0dGVyOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgZGVsZWdhdGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEN1c3RvbUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEN1c3RvbUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGpzTnVsbCgpKTsKICAgICBDdXN0b21HZXR0ZXIqIHJlc3VsdCA9IEN1c3RvbUdldHRlcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gRE9NSklUTm9kZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIERPTUpJVEdldHRlcjo6Y3JlYXRlKHZtLCBET01KSVRHZXR0
ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051
bGwoKSkpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVE5vZGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2bSwgRE9NSklU
R2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKSk7CiAg
ICAgRE9NSklUTm9kZSogcmVzdWx0ID0gRE9NSklUTm9kZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3Qo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBET01K
SVRHZXR0ZXIqIHJlc3VsdCA9IERPTUpJVEdldHRlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKLSAgICBET01KSVRHZXR0ZXJDb21w
bGV4KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBq
c051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyQ29tcGxleCogcmVzdWx0ID0gRE9NSklUR2V0dGVy
Q29tcGxleDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEZ1bmN0aW9uT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRl
RE9NSklURnVuY3Rpb25PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEZ1
bmN0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwganNOdWxsKCkpOwotICAgIERPTUpJVEZ1bmN0aW9uT2JqZWN0KiByZXN1bHQgPSBET01K
SVRGdW5jdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRGdW5jdGlvbk9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBE
T01KSVRGdW5jdGlvbk9iamVjdCogcmVzdWx0ID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hl
Y2tTdWJDbGFzc09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGpzTnVsbCgpKTsKLSAgICBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0KiByZXN1bHQg
PSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBq
c051bGwoKSk7CisgICAgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCogcmVzdWx0ID0gRE9NSklU
Q2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgIERPTUpJVEdldHRlckJhc2VKU09iamVjdCog
cmVzdWx0ID0gRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ1BhcnNlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2FzbVN0cmVhbWluZ1BhcnNlcjo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFdhc21TdHJlYW1pbmdQYXJzZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAj
ZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVTdGF0aWNDdXN0b21BY2Nlc3NvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdGF0aWNDdXN0b21BY2Nlc3Nvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0YXRpY0N1c3RvbUFjY2Vzc29yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgIGF1dG8qIHJlc3VsdCA9IFN0YXRp
Y0N1c3RvbUFjY2Vzc29yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVy
RGVsZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSBiYXNlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBiYXNlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWJhc2UuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBK
U1ZhbHVlIGRlbGVnYXRlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBkZWxlZ2F0
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFkZWxlZ2F0ZS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIElt
cHVyZUdldHRlciogaW1wdXJlR2V0dGVyID0ganNEeW5hbWljQ2FzdDxJbXB1cmVHZXR0ZXIqPih2
bSwgYXNPYmplY3QoYmFzZS5hc0NlbGwoKSkpOwogICAgIGlmIChVTkxJS0VMWSghaW1wdXJlR2V0
dGVyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgImFyZ3VtZW50IGlz
IG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIEltcHVyZUdldHRlciJfcyk7CiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KICAgICBpbXB1cmVHZXR0ZXItPnNldERl
bGVnYXRlKHZtLCBhc09iamVjdChkZWxlZ2F0ZS5hc0NlbGwoKSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNTdHJpbmcoKSkKKyAgICBpZiAoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPCAxIHx8ICFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBT
dHJpbmcgZnVuY3Rpb25UZXh0ID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgZnVuY3Rpb25UZXh0ID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3Vy
Y2UoZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBudWxscHRyLCBzb3VyY2UpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb28iKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBudWxscHRyLCBzb3Vy
Y2UpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQcml2
YXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZXRQcml2YXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMiB8fCAhZXhlYy0+YXJndW1l
bnQoMSkuaXNTdHJpbmcoKSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAy
IHx8ICFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBl
bmNvZGVkSlNVbmRlZmluZWQoKTsKIAotICAgIFN0cmluZyBzdHIgPSBhc1N0cmluZyhleGVjLT5h
cmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSBhc1N0cmluZyhjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2FsbEZyYW1lKTsKIAogICAgIFN5bWJvbEltcGwq
IHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHN0cikpOwogICAgIGlmICghc3ltYm9sKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5rbm93biBwcml2YXRlIG5hbWUuIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlVua25vd24gcHJpdmF0
ZSBuYW1lLiIpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoZXhlYy0+YXJndW1lbnQoMCkuZ2V0KGV4ZWMsIHN5bWJvbCkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdl
dChjYWxsRnJhbWUsIHN5bWJvbCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoUm9vdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJvb3Q6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlRWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgUm9vdCogcm9vdCA9IGpzRHlu
YW1pY0Nhc3Q8Um9vdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgUm9vdCogcm9vdCA9
IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0
aG91dCBhIFJvb3QuIl9zKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHJvb3QpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVFcnJvcihjYWxsRnJhbWUsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJv
b3QuIl9zKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHJvb3QpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZXRFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVudChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAg
ICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBFbGVtZW50KiByZXN1bHQgPSByb290LT5lbGVtZW50
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyByZXN1bHQgOiBqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVTaW1wbGVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVTaW1wbGVPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFNpbXBsZU9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFNpbXBsZU9iamVjdDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEhpZGRlblZhbHVlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3Qq
Pih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFzaW1wbGVPYmplY3QpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0SGlkZGVuVmFsdWUgdGVzdCBm
dW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2ltcGxlT2JqZWN0LT5oaWRkZW5WYWx1ZSgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRIaWRkZW5WYWx1ZShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEhpZGRlblZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVP
YmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFNpbXBsZU9iamVjdCogc2ltcGxl
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzaW1wbGVPYmplY3QpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUg
dGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJJbnZhbGlkIHVzZSBvZiBzZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQotICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKICAgICBzaW1wbGVPYmplY3QtPnNldEhpZGRlblZhbHVlKHZtLCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rpb25z
T25TdGFjayhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChhdXRvKiBzaGFkb3dDaGlja2VuID0gdm0uc2hhZG93Q2hpY2tl
bigpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzaGFkb3dDaGlja2VuLT5mdW5jdGlvbnNPblN0YWNrKGV4ZWMpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaGFkb3dDaGlja2VuLT5mdW5jdGlvbnNPblN0YWNrKGNh
bGxGcmFtZSkpOwogICAgIH0KIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgU3RhY2tWaXNpdG9yOjp2aXNpdChleGVjLCAmdm0sIFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNp
dG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CisgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChj
YWxsRnJhbWUsICZ2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRv
cjo6U3RhdHVzIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAg
ICAgICAgaWYgKHZpc2l0b3ItPmlzSW5saW5lZEZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4g
U3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgaWYgKHZpc2l0b3ItPmlzV2FzbUZyYW1l
KCkpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLSAgICAgICAg
cmVzdWx0LT5wdXNoKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFz
Q2VsbCgpKSk7CisgICAgICAgIHJlc3VsdC0+cHVzaChjYWxsRnJhbWUsIGpzQ2FzdDxKU09iamVj
dCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2VB
c3NlcnROb0V4Y2VwdGlvbigpOyAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20g
dGVzdHMuCiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgIH0pOwpA
QCAtMjI1OCw4MSArMjI1Nyw4MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKEV4ZWNTdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RU
aHJvdyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5zZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRp
b25TaG91bGRUaHJvdyhmYWxzZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25GaW5kVHlwZUZvckV4cHJlc3Npb24oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS50
eXBlUHJvZmlsZXIoKSk7CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRy
aWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbiJf
cyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJF
TEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwg
ZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAK
LSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBT
dHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVj
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkp
OworICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
KS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRh
YmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhl
Y3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKSk7CiAgICAgCiAgICAgU3RyaW5nIGpzb25T
dHJpbmcgPSB2bS50eXBlUHJvZmlsZXIoKS0+dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0
T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0
YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBh
cnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05Q
YXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXR1cm5UeXBlRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmV0dXJuVHlwZUZvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJU
KHZtLnR5cGVQcm9maWxlcigpKTsKICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xv
Z0VudHJpZXModm0sICJqc2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfcyk7
CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVB
U0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVu
Y3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQo
dm0pOwogICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0udHlwZVByb2ZpbGVyKCktPnR5cGVJbmZv
cm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldChUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9y
RnVuY3Rpb25SZXR1cm4sIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGF0
dGVuRGljdGlvbmFyeU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkgJiYgdmFsdWUuZ2V0T2JqZWN0
KCktPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgdmFsdWUuZ2V0T2JqZWN0KCkt
PmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZp
bmVkKCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlv
blJhbmdlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
dm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKICAgICB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkt
PmR1bXBEYXRhKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNp
Y0Jsb2NrRXhlY3V0ZWQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxv
d1Byb2ZpbGVyKCkpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0
YWJsZSgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmco
KSk7Ci0gICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+
dmFsdWUoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5p
c1N0cmluZygpKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMoc3Vic3RyaW5nKSk7CiAgICAgaW50IG9mZnNl
dCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnN0YXJ0T2Zmc2V0KCk7CkBAIC0yMzQxLDE4ICsyMzQwLDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0
ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaGFzRXhlY3V0ZWQp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNp
Y0Jsb2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5j
b250cm9sRmxvd1Byb2ZpbGVyKCkpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24o
dm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSkt
PmpzRXhlY3V0YWJsZSgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSku
aXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1
bWVudCgxKS5pc1N0cmluZygpKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgU3RyaW5nIHNvdXJj
ZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMoc3Vic3RyaW5nKSk7CiAgICAg
aW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUt
PnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CkBAIC0yMzYxLDcgKzIzNjAsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3Vu
dChFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGV4ZWN1dGlv
bkNvdW50KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRW5hYmxlRXhjZXB0aW9uRnV6eihFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwog
ICAgIE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSA9IHRydWU7CkBAIC0yNDEyLDIyICsyNDEx
LDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShF
eGVjU3RhdGUqIGV4ZWMsIE9wdGlvblNldDxDb2RlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZURlYnVnZ2Vy
TW9kZVdoZW5JZGxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICByZXR1cm4gY2hhbmdlRGVi
dWdnZXJNb2RlV2hlbklkbGUoZXhlYywgeyBDb2RlR2VuZXJhdGlvbk1vZGU6OkRlYnVnZ2VyIH0p
OworICAgIHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShjYWxsRnJhbWUsIHsgQ29k
ZUdlbmVyYXRpb25Nb2RlOjpEZWJ1Z2dlciB9KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
aXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIHJl
dHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShleGVjLCB7IH0pOworICAgIHJldHVybiBj
aGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShjYWxsRnJhbWUsIHsgfSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxl
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBWTSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIHZtLT53aGVuSWRsZShbPV0gKCkgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwogICAgICAgICB2bS0+ZGVsZXRlQWxsQ29kZShQcmV2ZW50Q29sbGVjdGlv
bkFuZERlbGV0ZUFsbENvZGUpOwpAQCAtMjQzNSw0MSArMjQzNCw0MSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbGV0ZUFsbENvZGVXaGVuSWRsZShFeGVj
U3RhdGUqIGV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2xvYmFsT2Jq
ZWN0Q291bnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLT52bSgpLmhlYXAuZ2xv
YmFsT2JqZWN0Q291bnQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKSkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdEZvck9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdsb2JhbE9iamVjdEZvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VS
VCh2YWx1ZS5pc09iamVjdCgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbE9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIHJlc3VsdCA9IGpzQ2FzdDxKU09i
amVjdCo+KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0
dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEpT
VmFsdWUgcHJvcGVydHkgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3BlcnR5LmlzU3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGV4ZWMp
OworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZp
ZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgUHJvcGVydHlTbG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwpAQCAtMjQ4MSwxNSArMjQ4MCwxNSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEdldHRlclNldHRlcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVy
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGpzRHluYW1pY0Nhc3Q8
R2V0dGVyU2V0dGVyKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBHZXR0ZXJTZXR0ZXIq
IGdldHRlclNldHRlciA9IGpzRHluYW1pY0Nhc3Q8R2V0dGVyU2V0dGVyKj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghZ2V0dGVyU2V0dGVyKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0
ZXJGcm9tR2V0dGVyU2V0dGVyIHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRl
clNldHRlciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBh
cmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOwogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTI0OTgsMjAgKzI0OTcsMTkgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRl
cihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldHRlcik7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVz
dEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbHRhQmV0
d2VlbkJ1dHRlcmZsaWVzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsdGFCZXR3ZWVuQnV0dGVyZmxpZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpT
T2JqZWN0KiBhID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgw
KSk7Ci0gICAgSlNPYmplY3QqIGIgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMt
PmFyZ3VtZW50KDEpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNP
YmplY3QqIGEgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOworICAgIEpTT2JqZWN0KiBiID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWEgfHwgIWIpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoUE5hTikpOwogCkBAIC0yNTIzLDIwICsyNTIxLDIw
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsdGFCZXR3
ZWVuQnV0dGVyZmxpZXMoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihkZWx0YSkpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ub3RhbEdDVGltZShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsR0NU
aW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHZtLmhlYXAudG90YWxHQ1RpbWUoKS5zZWNvbmRzKCkpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QYXJzZUNvdW50KEV4ZWNT
dGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBhcnNl
Q291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihn
bG9iYWxQYXJzZUNvdW50LmxvYWQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzV2FzbVN1cHBvcnRlZChFeGVjU3RhdGUqKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1dhc21TdXBwb3J0ZWQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRW1iZWRkZXIuaAppbmRleCBhMjM3OWZkNTg5Yzg5ZGY2MzU3ZTZlNDQxYmVkMmE1MTg3
MzljYTNlLi45N2JiMTBjOThlOGNmOTNlYTczZDE5ODU5ZWE3OGE2NDlkODY2OGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1iZWRkZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1iZWRkZXIuaApAQCAtMzYsNyArMzYsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5kZXggZDFi
MzhhMTQ4YTJiNDk0MWZjZTY5MjcyNzE5M2VhY2YxN2EwZmQyMS4uMzk0NjRhOGFjMDMzODEzZjI3
NzIwNDFlNjhkYTdkMDAzOTc0YzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgRk9SX0VBQ0hfV0VCQVNT
RU1CTFlfQ09OU1RSVUNUT1JfVFlQRShERUZJTkVfQ0FMTEJBQ0tfRk9SX0NPTlNUUlVDVE9SKQog
CiAjdW5kZWYgREVGSU5FX0NBTExCQUNLX0ZPUl9DT05TVFJVQ1RPUgogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50
aWF0ZUZ1bmMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5SW5zdGFudGlhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTE1OCwyMyArMTU4LDIyIEBA
IHN0YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYywgSlNQcm9taXNlRGVmCiAgICAgfSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGls
ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogCi0g
ICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Ug
PSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgewogICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZy
b21WYWx1ZSh2bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShjYXRjaFNj
b3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgIHJlamVjdChleGVjLCBjYXRjaFNjb3BlLCBw
cm9taXNlKTsKKyAgICAgICAgICAgIHJlamVjdChjYWxsRnJhbWUsIGNhdGNoU2NvcGUsIHByb21p
c2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRl
QXN5bmNJbnRlcm5hbChleGVjLCBwcm9taXNlLCBXVEZNb3ZlKHNvdXJjZSkpOworICAgICAgICAg
ICAgd2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoY2FsbEZyYW1lLCBwcm9t
aXNlLCBXVEZNb3ZlKHNvdXJjZSkpOwogCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cHJvbWlzZS0+cHJvbWlzZSgpKTsKICAgICB9CkBAIC0zMDQsNDIgKzMwMyw0MSBAQCB2b2lkIEpT
V2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmMoRXhlY1N0YXRl
KiBleGVjLCBKU1Byb21pcwogICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNo
U2NvcGUsIHZvaWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIAotICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNl
RGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHsKICAg
ICAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICAg
ICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgICAgICBK
U1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICAgICAg
SlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIWltcG9ydEFyZ3VtZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9y
dE9iamVjdCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChjYWxsRnJhbWUsIGNyZWF0
ZVR5cGVFcnJvcihjYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCB0
byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3Qi
X3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0
QXJndW1lbnQpKSk7CiAgICAgICAgICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihj
YXRjaFNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICAgICAgICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgICAgICAgICBpZiAoYXV0byogbW9kdWxlID0ganNEeW5hbWljQ2Fz
dDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGZpcnN0QXJndW1lbnQpKQotICAgICAgICAgICAg
ICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIFJlc29sdmU6
OldpdGhJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOworICAgICAgICAgICAg
ICAgIGluc3RhbnRpYXRlKHZtLCBjYWxsRnJhbWUsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2Jq
ZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgUmVz
b2x2ZTo6V2l0aEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29tcGlsZUFuZEluc3RhbnRpYXRlKHZtLCBleGVj
LCBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXko
KSwgZmlyc3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5z
dGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICAgICAgICAgICAgICBjb21w
aWxlQW5kSW5zdGFudGlhdGUodm0sIGNhbGxGcmFtZSwgcHJvbWlzZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQsIGltcG9ydE9i
amVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6
OkZyb21KUyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b21pc2UtPnByb21pc2UoKSk7CiAgICAgfQogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIFti
YXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZh
bHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQkJRUGxhbiBwbGFuKCZ2bS53
YXNtQ29udGV4dCwgQkJRUGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6ZG9udEZpbmFsaXplKCkpOwog
ICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVy
ZSBpZiB3ZSBkZXRlY3QgdGhhdCBzb21ldGhpbmcgd2lsbCBPT00uCkBAIC0zNDcsMjAgKzM0NSwx
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlk
YXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocGxhbi5wYXJzZUFuZFZhbGlkYXRlTW9kdWxlKGJhc2UsIGJ5dGVTaXplKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWlu
Z0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gY2F0Y2hTY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21p
c2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3Jl
YXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxs
Pj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4o
dm0sIGdsb2JhbE9iamVjdCkpOwogICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5k
aW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIGlm
IChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1p
bmcpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29t
cGlsZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIGV4ZWMsIHByb21pc2UsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5j
b21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBwcm9taXNlLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ29tcGlsZVN0cmVhbWlu
ZyBpcyBub3Qgc3VwcG9ydGVkIGluIGpzYywgb25seSBpbiBicm93c2VyIGVudmlyb25tZW50CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzcxLDIxICszNjgsMjAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5h
bChFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnBy
b21pc2UoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIAotICAgIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQ
cm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB7
CiAgICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0g
ICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAg
ICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAg
ICAgIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5lZCgpICYmICFp
bXBvcnRPYmplY3QpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsCisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoY2FsbEZyYW1lLCBj
cmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgICJzZWNvbmQgYXJndW1l
bnQgdG8gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgbXVzdCBiZSB1bmRlZmluZWQg
b3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFs
dWUodm0sIGltcG9ydEFyZ3VtZW50KSkpOwogICAgICAgICAgICAgQ0xFQVJfQU5EX1JFVFVSTl9J
Rl9FWENFUFRJT04oY2F0Y2hTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2Uo
KSkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzk2LDcgKzM5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEV4
ZWNTdGF0ZSoKICAgICAgICAgICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVu
ZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTg0ODg4PiBpZiB0aGVy
ZSdzIGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29udGFpbnMgYSBNZW1vcnksIHRoZW4gd2UgY2Fu
IGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSByaWdodCBtZW1vcnkgdHlwZSAoZmFzdCBvciBu
b3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdzIHR5cGUuCi0gICAgICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWlu
ZyhnbG9iYWxPYmplY3QsIGV4ZWMsIHByb21pc2UsIGV4ZWMtPmFyZ3VtZW50KDApLCBpbXBvcnRP
YmplY3QpOworICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHBy
b21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGltcG9ydE9iamVjdCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEluc3RhbnRpYXRlU3RyZWFtaW5nIGlzIG5v
dCBzdXBwb3J0ZWQgaW4ganNjLCBvbmx5IGluIGJyb3dzZXIgZW52aXJvbm1lbnQuCiAgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKaW5kZXggMDE3MWMxNGFiNDczNDQwMDkwMjNhM2U0MWFh
NGQ2Y2JjMGU0NjNiNS4uNzFlNDFkYzVkOGYwMDY2NzIzMjFiNTk4NWUxMTk5NmM1ODdhNzg0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaApAQCAt
NTMsOCArNTMsOCBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5IGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIEpTV2ViQXNzZW1ibHkoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50
ZXJuYWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDdmMmQxN2RmMjcyYjk3ZGJjMDYzOGYxZGY3NzBjMDkw
ZWE5YjJlY2IuLmM3MzY4NWNkZjNlMGFlNTUwODZlM2ZjOTdhYTZiNjM3ZTEwNWU5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00NCwyMSArNDQsMjEgQEAg
Y29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2UKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQo
MCk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPndlYkFzc2VtYmx5Q29t
cGlsZUVycm9yU3RydWN0dXJlKCkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3I6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+
dm0oKSktPndlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUs
IG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJh
bWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2Up
KTsKIH0KIAogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAppbmRleCBkZGU0MmM1NmY3ZTU1NWNkNzYwNDRmYTFjODMxN2VmMWIyMzBmYjk2Li5iMWU2
NDlmN2JiNjczZDg4YTE2OWZmYTQwOTUzNjA1YWQ4NTAxOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtNTgs
MTEgKzU4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlGdW5jdGlvbjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5j
dGlvbikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFz
c2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5j
dGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7Cisg
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5
RnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIFdhc206OlNpZ25hdHVyZUlu
ZGV4IHNpZ25hdHVyZUluZGV4ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwogICAg
IGNvbnN0IFdhc206OlNpZ25hdHVyZSYgc2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3Jt
YXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAKQEAgLTc4LDE0ICs3OCwxNCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgV2FzbTo6SW5zdGFuY2UqIHdhc21JbnN0YW5jZSA9ICZpbnN0YW5j
ZS0+aW5zdGFuY2UoKTsKIAogICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRl
eCA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7ICsrYXJnSW5kZXgpIHsKLSAgICAgICAgSlNW
YWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CisgICAgICAgIEpTVmFsdWUgYXJn
ID0gY2FsbEZyYW1lLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0
dXJlLmFyZ3VtZW50KGFyZ0luZGV4KSkgewogICAgICAgICBjYXNlIFdhc206OkkzMjoKLSAgICAg
ICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShhcmcudG9JbnQzMihleGVjKSk7CisgICAgICAg
ICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJnLnRvSW50MzIoY2FsbEZyYW1lKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpGdW5jcmVmOiB7CiAgICAgICAgICAg
ICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZykgJiYgIWFyZy5pc051bGwo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGV4ZWMsIHZtLCAi
RnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iKSkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihjYWxsRnJhbWUsIHZtLCAiRnVu
Y3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpBbnlyZWY6CkBAIC05NCwxMCAr
OTQsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2Vt
Ymx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYXJnID0gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6RjMyOgotICAgICAgICAg
ICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYXJnLnRvRmxv
YXQoZXhlYykpKTsKKyAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nh
c3Q8dWludDMyX3Q+KGFyZy50b0Zsb2F0KGNhbGxGcmFtZSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdhc206OkY2NDoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRl
Y29kZShiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGFyZy50b051bWJlcihleGVjKSkpOworICAgICAg
ICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYXJnLnRv
TnVtYmVyKGNhbGxGcmFtZSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdh
c206OlZvaWQ6CiAgICAgICAgIGNhc2UgV2FzbTo6RnVuYzoKQEAgLTExNyw3ICsxMTcsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGNh
bGxpbmcgaW50byB0aGUgbGxpbnQgbWF5IHN0YWNrIG92ZXJmbG93LCBhbmQgdGhlIHN0YWNrIG92
ZXJmbG93CiAgICAgLy8gaGFuZGxlciBtaWdodCByZWFkIHRoZSBnbG9iYWwgb2JqZWN0IGZyb20g
dGhlIGNhbGxlZS4KICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgY29udGV4dCwgYXJnQ291bnQs
IGFyZ3MpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCB3
YXNtRnVuY3Rpb24sIGNvbnRleHQsIGFyZ0NvdW50LCBhcmdzKTsKIAogICAgIC8vIEZJWE1FIERv
IGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSBlbnRyeXBv
aW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjQ4NgogICAgIFdhc206Okluc3RhbmNlKiBwcmV2V2FzbUluc3RhbmNlID0gdm0ud2Fz
bUNvbnRleHQubG9hZCgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgY29uc3QgaW50cHRyX3QgZnJhbWVTaXplID0gKGJveGVkQXJncy5zaXplKCkgKyBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgKiBzaXplb2YoUmVnaXN0ZXIpOwogICAg
ICAgICBjb25zdCBpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7IC8vIFdl
J3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0byB0aGUg
YWN0dWFsIHdhc20gY29kZS4KICAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNrU3BhY2VV
c2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2
bS5zb2Z0U3RhY2tMaW1pdCgpKSkpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKSk7
CiAgICAgfQogICAgIHZtLndhc21Db250ZXh0LnN0b3JlKHdhc21JbnN0YW5jZSwgdm0uc29mdFN0
YWNrTGltaXQoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAppbmRleCA2ODQyZjk1OGJkOThhODNhZDUzOTFiZGJh
ZjgyMmNhMzI1NjFjZTEzLi4wOGY0NGE5NzQxNGY0YjA1Y2Y4ZjEyODUxMGZlNzg0NGIwN2Y2ODcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDM4ICs1OCwzOCBAQCBj
b25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzXwogCiB1c2luZyBXYXNtOjpQbGFuOwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIG1vZHVsZU9iamVjdCBpcyBub3QgYSBXZWJBc3Nl
bWJseS5Nb2R1bGUgaW5zdGFuY2UsIGEgVHlwZUVycm9yIGlzIHRocm93bi4KLSAgICBKU1dlYkFz
c2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUq
Pih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVs
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJm
aXJzdCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIGEgV2ViQXNzZW1i
bHkuTW9kdWxlIl9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUo
dm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZy
YW1lLCAiZmlyc3QgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSBhIFdl
YkFzc2VtYmx5Lk1vZHVsZSJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZv
clZhbHVlKHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKIAogICAgIC8vIElmIHRoZSBp
bXBvcnRPYmplY3QgcGFyYW1ldGVyIGlzIG5vdCB1bmRlZmluZWQgYW5kIFR5cGUoaW1wb3J0T2Jq
ZWN0KSBpcyBub3QgT2JqZWN0LCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCi0gICAgSlNWYWx1ZSBp
bXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgaW1wb3J0QXJn
dW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIEpTT2JqZWN0KiBpbXBvcnRPYmpl
Y3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsKICAgICBpZiAoIWltcG9ydEFyZ3VtZW50
LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJzZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSB1bmRlZmlu
ZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9y
VmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2Fs
bEZyYW1lLCAic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUg
dW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1l
VHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1bWVudCkpKSk7CiAgICAgCi0gICAgU3RydWN0dXJl
KiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPndlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBpbnN0
YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseUluc3RhbmNlU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3Jl
YXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1
Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCBXYXNtOjpDcmVhdGlv
bk1vZGU6OkZyb21KUyk7CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCBX
YXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBtb2R1
bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9y
eU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhj
ZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CisgICAg
aW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGNhbGxGcmFtZSwgbW9kdWxlLT5tb2R1bGUo
KS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZX
YXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGlt
cG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5j
ZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFz
c2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJXZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKIH0KIAogV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
KiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAppbmRleCBmODFiMmEx
ZDYxMzExYzQxZDllYTY5YTZkMTIwZTU4MjFiZmE4NWViLi5jYTZmOTQyNTVhMWY5MzQ5ZjFiN2Jm
NTVmYzBlNjAyMjcxMDgxOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUubHV0LmgiCkBAIC02MSwxMiArNjEsMTIgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBnZXRJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2Ug
PSBnZXRJbnN0YW5jZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoY2FsbEZyYW1lLCB2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVOYW1l
c3BhY2VPYmplY3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4
IDQ3M2MyNjNkZGZkM2NkOGRjYjUwODkyOWVlZjExOWYwNmJkYzA1MTAuLjM0MTA4YTA5YzM0OTU3
OGNjZWQyNDUzMGY3N2NkOGQzM2I0OWQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuY3BwCkBAIC00NCwyMSArNDQsMjEgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnMKICBAZW5k
CiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNz
YWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dCh2bSktPndlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkpOworICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0
dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3I6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgbWVzc2FnZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhl
Yy0+dm0oKSktPndlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUs
IG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUs
IGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsK
IH0KIAogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlMaW5rRXJy
b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcAppbmRleCAyMzcxMjY3YjVlMzY4N2NhYjNjYmFkZjcxNzFhMjhkNDc0ZDA5NmI1
Li5hN2MxYzYxY2EzNzliZDNjZjhmNmZlOGQ1MTUzZWZmOWE3MzgxMjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yLmNwcApAQCAtNDgsMzIgKzQ4LDMyIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpICE9IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJX
ZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKKyAg
ICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0
ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5
IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpTT2JqZWN0KiBtZW1vcnlEZXNjcmlwdG9yOwog
ICAgIHsKLSAgICAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAg
aWYgKCFhcmd1bWVudC5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBh
biBvYmplY3QiX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFt
ZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBh
biBvYmplY3QiX3MpKSk7CiAgICAgICAgIG1lbW9yeURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihhcmd1bWVudCk7CiAgICAgfQogCiAgICAgV2FzbTo6UGFnZUNvdW50IGluaXRpYWxQYWdl
Q291bnQ7CiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGluaXRpYWwgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwotICAgICAgICBKU1ZhbHVlIG1pblNpemVWYWx1ZSA9
IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBpbml0aWFsKTsKKyAgICAgICAgSlNWYWx1ZSBt
aW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBpbml0aWFsKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgbWlu
U2l6ZVZhbHVlKTsKKyAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIo
Y2FsbEZyYW1lLCBtaW5TaXplVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIVdhc206OlBhZ2VDb3Vu
dDo6aXNWYWxpZChzaXplKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2Vi
QXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSJfcykpKTsK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5
Lk1lbW9yeSAnaW5pdGlhbCcgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiX3MpKSk7CiAgICAgICAg
IGlmIChXYXNtOjpQYWdlQ291bnQoc2l6ZSkuYnl0ZXMoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSkpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lKSkpOwogICAgICAgICBpbml0
aWFsUGFnZUNvdW50ID0gV2FzbTo6UGFnZUNvdW50KHNpemUpOwogICAgIH0KIApAQCAtODIsMjMg
KzgyLDIzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIC8vIEluIFdlYklETCwg
InByZXNlbnQiIG1lYW5zIHRoYXQgW1tHZXRdXSByZXN1bHQgaXMgdW5kZWZpbmVkLCBub3QgW1tI
YXNQcm9wZXJ0eV1dIHJlc3VsdC4KICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcwogICAgICAgICBJZGVudGlmaWVyIG1heGltdW0gPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSIpOwotICAgICAgICBKU1ZhbHVlIG1h
eFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBtYXhpbXVtKTsKKyAgICAg
ICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1l
LCBtYXhpbXVtKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFtYXhTaXplVmFsdWUuaXNVbmRlZmluZWQoKSkg
ewotICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywg
bWF4U2l6ZVZhbHVlKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNpemUgPSB0b05vbldyYXBwaW5n
VWludDMyKGNhbGxGcmFtZSwgbWF4U2l6ZVZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAo
IVdhc206OlBhZ2VDb3VudDo6aXNWYWxpZChzaXplKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSAnbWF4aW11bScgcGFnZSBjb3VudCBp
cyB0b28gbGFyZ2UiX3MpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Y2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhpbXVtJyBwYWdlIGNvdW50IGlzIHRv
byBsYXJnZSJfcykpKTsKICAgICAgICAgICAgIG1heGltdW1QYWdlQ291bnQgPSBXYXNtOjpQYWdl
Q291bnQoc2l6ZSk7CiAKICAgICAgICAgICAgIGlmIChpbml0aWFsUGFnZUNvdW50ID4gbWF4aW11
bVBhZ2VDb3VudCkgewotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiJ21heGltdW0nIHBhZ2UgY291bnQgbXVzdCBiZSB0aGFuIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRpYWwnIHBhZ2UgY291bnQiX3MpKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUsCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2Fs
bEZyYW1lLCAiJ21heGltdW0nIHBhZ2UgY291bnQgbXVzdCBiZSB0aGFuIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byB0aGUgJ2luaXRpYWwnIHBhZ2UgY291bnQiX3MpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlN
ZW1vcnk6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWJB
c3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKKyAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNz
ZW1ibHlNZW1vcnk6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkg
PSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNv
dW50LApAQCAtMTA2LDE4ICsxMDYsMTggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMKICAgICAg
ICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxl
Y3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCiAgICAgICAgIFsmdm0sIGpzTWVtb3J5
XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3Vu
dCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkgeyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3ND
YWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQpOyB9KTsKICAgICBpZiAoIW1l
bW9yeSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3Bl
LCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSkpKTsKIAogICAgIGpzTWVtb3J5LT5h
ZG9wdChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01lbW9yeSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCB0aHJvd1Njb3BlLCAiV2ViQXNzZW1ibHkuTWVtb3J5IikpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5NZW1vcnkiKSk7
CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcApp
bmRleCAxNDQxYTliNGY1YTQyMjliNjliZTViNjY0MGE5NzA0NDcwYzJjMDg0Li5jMTQyMTE3NTQw
ZWE0ZjgxMzhmOTQ0NTUyOTNhM2ZhMjdjMDQ1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3Bw
CkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
TWVtb3J5UHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNC
dWZmZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIgpAQCAtNjYsMzEgKzY2LDMxIEBAIEFMV0FZU19J
TkxJTkUgSlNXZWJBc3NlbWJseU1lbW9yeSogZ2V0TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYywgVk0m
IHZtLCBKU1ZhbHVlIHZhCiAgICAgcmV0dXJuIG1lbW9yeTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3Rv
RnVuY0dyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZXhlYywgdm0s
IGV4ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0g
Z2V0TWVtb3J5KGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgCi0gICAgdWludDMyX3Qg
ZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAKLSAgICBXYXNtOjpQYWdlQ291bnQgcmVzdWx0ID0gbWVtb3J5LT5ncm93KHZtLCBleGVj
LCBkZWx0YSk7CisgICAgV2FzbTo6UGFnZUNvdW50IHJlc3VsdCA9IG1lbW9yeS0+Z3Jvdyh2bSwg
Y2FsbEZyYW1lLCBkZWx0YSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQucGFnZUNv
dW50KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1l
bW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7IAor
ICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShjYWxsRnJhbWUsIHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9i
amVjdCkpOwogfQogCiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDZiYWI5NGVjOTlkYzBm
ZjMxNzgwNmQ4YzVkOWNlMjQzMzdkZjJiOTUuLmViZmU3YTc3MjgxYjM5YWNmYTY0NDI1MjM5NmMy
YmQ0MmYxMTA2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC00Niw5ICs0Niw5
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9t
U2VjdGlvbnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1
c3RvbVNlY3Rpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
fQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCIKQEAgLTY1
LDIzICs2NSwyMiBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbgogIEBlbmQKICAqLwogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eU1vZHVsZUN1c3RvbVNlY3Rpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSkpOworICAgIGlm
IChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoY2FsbEZyYW1lKSkpOwogCi0gICAgSlNXZWJB
c3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxl
Kj4odm0sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGUpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMg
Y2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuY3Vz
dG9tU2VjdGlvbnMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJf
cykpKTsKIAotICAgIGNvbnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgc2VjdGlv
bk5hbWVTdHJpbmcgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAot
ICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwg
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGNhbGxGcmFtZSwgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICBjb25zdCBhdXRvJiBjdXN0b21TZWN0aW9ucyA9
IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5jdXN0b21TZWN0aW9uczsKQEAgLTg5LDkgKzg4
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3Rv
bVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKFN0cmluZzo6ZnJvbVVURjgo
c2VjdGlvbi5uYW1lKSA9PSBzZWN0aW9uTmFtZVN0cmluZykgewogICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNlY3Rpb24ucGF5bG9hZC5kYXRhKCksIHNl
Y3Rpb24ucGF5bG9hZC5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lKSkpOwogCi0gICAgICAgICAgICBy
ZXN1bHQtPnB1c2goZXhlYywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBX
VEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChjYWxsRnJhbWUsIEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVy
ZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgV1RGTW92ZShidWZmZXIpKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC05OSwxNyArOTgsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZt
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0g
anNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1v
ZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJh
bWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1i
bHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOwogCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAg
IGNvbnN0IGF1dG8mIGltcG9ydHMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0
czsKQEAgLTExOCwxMiArMTE2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgSWRlbnRpZmll
ciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiKTsKICAgICAgICAgSWRl
bnRpZmllciBraW5kID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtpbmQiKTsKICAgICAg
ICAgZm9yIChjb25zdCBXYXNtOjpJbXBvcnQmIGltcCA6IGltcG9ydHMpIHsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICAgICAg
b2JqLT5wdXREaXJlY3Qodm0sIG1vZHVsZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgo
aW1wLm1vZHVsZSkpKTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0
cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXAuZmllbGQpKSk7CiAgICAgICAgICAgICBvYmot
PnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmcodm0sIFN0cmluZyhtYWtlU3RyaW5nKGltcC5r
aW5kKSkpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBvYmopOworICAgICAgICAg
ICAgcmVzdWx0LT5wdXNoKGNhbGxGcmFtZSwgb2JqKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEzMSwxNyAr
MTI5LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJ
bXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVF
eHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNb2R1bGVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5
TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHMg
Y2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuZXhw
b3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOwog
Ci0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRy
LCBnbG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoY2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAgIGNvbnN0IGF1dG8mIGV4cG9ydHMgPSBtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0czsKQEAgLTE0OSwxMSArMTQ2LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm5hbWUiKTsKICAgICAgICAgSWRlbnRpZmllciBraW5kID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImtpbmQiKTsKICAgICAgICAgZm9yIChjb25zdCBXYXNtOjpFeHBvcnQm
IGV4cCA6IGV4cG9ydHMpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChjYWxsRnJhbWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIG5hbWUsIGpz
U3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCkpKTsKICAgICAgICAgICAgIG9i
ai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyh2bSwgU3RyaW5nKG1ha2VTdHJpbmcoZXhw
LmtpbmQpKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAg
ICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBvYmopOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxLDIy
ICsxNTgsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVs
ZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAgICBWZWN0b3I8dWludDhf
dD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1
ZmZlckZyb21WYWx1ZSh2bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6
Y3JlYXRlTW9kdWxlKGV4ZWMsIFdURk1vdmUoc291cmNlKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
OjpjcmVhdGVNb2R1bGUoY2FsbEZyYW1lLCBXVEZNb3ZlKHNvdXJjZSkpKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxK
U1dlYkFzc2VtYmx5TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseS5Nb2R1
bGUiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJs
eS5Nb2R1bGUiKSk7CiB9CiAKIEpTV2ViQXNzZW1ibHlNb2R1bGUqIFdlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OGRlOWQyZGQwODI4MDZhMWNjOGYzMjQ3MjM4MmJiZjIyMzhhYTZkNS4uYTJmNDg5ZTRmNzQyMTc4
ODE5ZWQwM2FhODVlZjk3NmY4NjEwM2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQ0LDIzICs0NCwyMyBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZQog
IEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgYXV0byYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgbWVzc2FnZVN0
cmluZyA9IG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0
cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3Ry
aW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byogc3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3
VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdCh2bSktPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCkpOworICAg
IGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBXVEZN
b3ZlKG1lc3NhZ2VTdHJpbmcpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgc3RydWN0dXJlLCBXVEZN
b3ZlKG1lc3NhZ2VTdHJpbmcpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPndlYkFzc2VtYmx5UnVudGltZUVy
cm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNl
OjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3Ro
aW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdl
LCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NDVjOGViMTFjOGE2OWI4OWViMmY5Y2Q4YzFlZTM1ZTQwYWMyNjJkMS4uNDlmZTVlMmI2NmVlMmU4
MGY1NTU4MDdiODMyNjllZjAzZTc4ZWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCkBA
IC00NSw3MCArNDUsNzAgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmYKICBAZW5kCiAgKi8KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJs
eVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBtZW1vcnlEZXNjcmlwdG9y
OwogICAgIHsKLSAgICAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAg
ICAgaWYgKCFhcmd1bWVudC5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJl
IGFuIG9iamVjdCJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZy
YW1lLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUg
YW4gb2JqZWN0Il9zKSkpOwogICAgICAgICBtZW1vcnlEZXNjcmlwdG9yID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oYXJndW1lbnQpOwogICAgIH0KIAogICAgIFdhc206OlRhYmxlRWxlbWVudFR5cGUgdHlw
ZTsKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgZWxlbWVudElkZW50ID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImVsZW1lbnQiKTsKLSAgICAgICAgSlNWYWx1ZSBlbGVtZW50VmFsdWUg
PSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgZWxlbWVudElkZW50KTsKKyAgICAgICAgSlNW
YWx1ZSBlbGVtZW50VmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBlbGVt
ZW50SWRlbnQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgICAgICBTdHJpbmcgZWxlbWVudFN0cmluZyA9IGVsZW1lbnRWYWx1
ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgU3RyaW5nIGVsZW1lbnRTdHJpbmcgPSBlbGVt
ZW50VmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGVsZW1lbnRT
dHJpbmcgPT0gImZ1bmNyZWYiIHx8IGVsZW1lbnRTdHJpbmcgPT0gImFueWZ1bmMiKQogICAgICAg
ICAgICAgdHlwZSA9IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWY7CiAgICAgICAgIGVs
c2UgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImFueXJlZiIpCiAgICAgICAgICAgICB0eXBlID0gV2Fz
bTo6VGFibGVFbGVtZW50VHlwZTo6QW55cmVmOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMgJ2VsZW1l
bnQnIGZpZWxkIHRvIGJlIHRoZSBzdHJpbmcgJ2Z1bmNyZWYnIG9yICdhbnlyZWYnIl9zKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5U
YWJsZSBleHBlY3RzIGl0cyAnZWxlbWVudCcgZmllbGQgdG8gYmUgdGhlIHN0cmluZyAnZnVuY3Jl
Zicgb3IgJ2FueXJlZiciX3MpKSk7CiAgICAgfQogCiAgICAgSWRlbnRpZmllciBpbml0aWFsSWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwotICAgIEpTVmFsdWUg
aW5pdGlhbFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBpbml0aWFsSWRl
bnQpOworICAgIEpTVmFsdWUgaW5pdGlhbFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdl
dChjYWxsRnJhbWUsIGluaXRpYWxJZGVudCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB1aW50MzJfdCBpbml0aWFsID0gdG9Ob25X
cmFwcGluZ1VpbnQzMihleGVjLCBpbml0aWFsU2l6ZVZhbHVlKTsKKyAgICB1aW50MzJfdCBpbml0
aWFsID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIGluaXRpYWxTaXplVmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlz
IHVuZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1bHQuCiAgICAgLy8gaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcwogICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBtYXhpbXVtOwogICAgIElkZW50aWZpZXIgbWF4aW11bUlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iKTsKLSAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9
IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBtYXhpbXVtSWRlbnQpOworICAgIEpTVmFsdWUg
bWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgbWF4aW11bUlk
ZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGlmICghbWF4U2l6ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgbWF4
aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgbWF4U2l6ZVZhbHVlKTsKKyAgICAgICAg
bWF4aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBtYXhTaXplVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgICAgIGlmIChpbml0aWFsID4gKm1heGltdW0pIHsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAg
ICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICInbWF4aW11bScgcHJvcGVydHkgbXVz
dCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcykp
KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCB0aHJvd1Njb3BlLAorICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2Fs
bEZyYW1lLCAiJ21heGltdW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIHRoZSAnaW5pdGlhbCcgcHJvcGVydHkiX3MpKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUo
aW5pdGlhbCwgbWF4aW11bSwgdHlwZSk7CiAgICAgaWYgKCF3YXNtVGFibGUpIHsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLAot
ICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxl
Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgdGhyb3dTY29wZSwKKyAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZy
YW1lLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIl9zKSkpOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVRhYmxl
OjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2ViQXNzZW1i
bHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1i
bHlUYWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlU
YWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSkpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJsZShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SlNXZWJBc3NlbWJseVRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseS5UYWJs
ZSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5
LlRhYmxlIikpOwogfQogCiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
Y3BwCmluZGV4IGUxYzFmYmFjMTU2ODRiYTQxOWU4NmI1NGEwYzlhNzRjMzkyOTAwMWMuLjA5OWM0
MGY5NTBiN2U5ZmYxYTYxOTg1MDhjOGM1MmE5YTA1OTk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
Y3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRl
ICJXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oIgpAQCAtNjcsNzIgKzY3LDcyIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlUYWJsZSogZ2V0VGFibGUoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIEpTVmFsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0
aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9
IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJs
eVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0YWJsZS0+bGVuZ3Ro
KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2Vt
Ymx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgZGVsdGEg
PSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIHVpbnQzMl90IG9sZExlbmd0aCA9IHRhYmxlLT5sZW5ndGgoKTsKIAogICAgIGlmICgh
dGFibGUtPmdyb3coZGVsdGEpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFz
c2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93IGNvdWxkIG5vdCBncm93IHRoZSB0YWJsZSJfcykp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHku
VGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhlIHRhYmxlIl9zKSkpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihvbGRMZW5ndGgpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVu
Y0dldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9
IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJs
eVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKLSAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25XcmFwcGluZ1Vp
bnQzMihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGluZGV4ID49
IHRhYmxlLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3Nl
bWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhl
IGxlbmd0aCBvZiB0aGUgdGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBp
bnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGFibGUtPmdldChpbmRleCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFi
bGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUq
IHRhYmxlID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIHVpbnQzMl90IGluZGV4ID0gdG9O
b25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWludDMyX3Qg
aW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGlmIChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3Rz
IGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhy
b3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZS5w
cm90b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0
aGUgdGFibGUiX3MpKSk7CiAKICAgICBpZiAodGFibGUtPnRhYmxlKCktPmFzRnVuY3JlZlRhYmxl
KCkpIHsKICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAg
ICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKICAgICAg
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwg
dmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBl
Y3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJB
c3NlbWJseS5GdW5jdGlvbiJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3Io
Y2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBz
ZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5G
dW5jdGlvbiJfcykpKTsKIAogICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICB0YWJsZS0+Y2xlYXIoaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4IGNkZTRm
M2NmMjYwNGFkZDc2Y2MwNGZiMjI0ZjlhNTJiZDJkYTAzNzYuLmIxZDJlNGVlYTE1Y2MxZTNlY2Mw
MzhkMTk4ZWY1NTlkYzNiNGE1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAgLTM4LDE2
ICszOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSB3YXNtRnVuY3Rpb24tPmZ1bmN0aW9uKCk7
CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBl
ICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5k
ZWZpbmVkKCksIEFyZ0xpc3QoZXhlYykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKIH0KIAogV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206
Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaW1wb3J0YWJsZUZ1bmN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oCmluZGV4IDNmMDZhNmJmZjExNjhh
MjU3NjlkZGE2Y2M2YmIzZjcyYzQyYjNhOWUuLjQ0YjY4YjJmMmNjYjYyMzZkNjlkZWNkNGI5OGJh
NGE2NDlmMDA4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJF
cnJvckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2Rl
LmgKQEAgLTI3LDggKzI3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgWWFyciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmluZGV4IGI2OGFkOTA5NzViOGY5ZDFm
MjVkMDJiNmJhZmM0ZWQ3ZWQ2MjY4ZTQuLjNhOTI1MDdjZmU3ZWIzN2YyMzNjYTA2NjJmODFkNDk3
MzRhODFmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uaApAQCAtMzYsOCArMzYsOSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAppbmRleCAwYzRmYTI0NzA5ZTJiNzAzMmVk
NDhmNDIzYjgwMWMxYWIwZjI1MTgwLi5iNDMwZDYzNjUzMTBhODlhN2Y5NTQ0M2UwZTY4MjQ2OTdj
ZWVmNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRNZXJjaGFudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaApAQCAtMzEsOCArMzEsOSBAQAogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogfQogCiBPQkpDX0NMQVNTIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNWM4M2EzN2ExYjgzN2Nl
MzE3NWY3NDljMGUxNzUzYjU5NGI1MmQyNi4uMjA2YzFkNTlmM2I3ZWRmZmFmZjQxOGFiNmUwYTY1
YThiYjljN2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKQEAgLTM2LDggKzM2LDkgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
VmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgK
aW5kZXggYTQ0NzEzMjQwM2I1N2VlYjI4NmQ0ZDJmYWE0MWJlMGI5YzA0YzY0ZC4uNGUyMDUzNWM1
NmFmMmU3ZGFkYWMwMDllNzZhZjAyYzM5MGExYzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMzQsOCArMzQsOSBAQAogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IDU1M2E0Mjk3MTUwMjgxZmYwN2Yz
NDRhOGZmYmY3NDUwNzYwZDZmYzYuLjg4MWVmNjQ0OWFjMzNmYjEzMGNlZGQxOWZmMGQ1YjQ1NDVm
NDU1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApA
QCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKIAogbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCmluZGV4IDc3YWEzNzFmZWUzNzhhMTIx
MjY1ZTRiMmE0YTUwNjI2MDBlYjZiMGQuLmE0OWViNDFhZGFmMGFhNDU1MTk0Yjk2MDlkOTNmZGQ4
ZGZlZjY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaApAQCAtMzMsOCArMzMsOSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBK
U1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaAppbmRleCAyOWY5NTkxZjNkZTNjODQ5ZmM2NGRkNjVhMTYyMmMwYjM5OGM3MDIwLi42
MWE5NTBlMTRlYzMzZjMxODhkYWZiYzMzMzE5MWVkZWZjNWM5ZGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTM0LDkgKzM0
LDEwIEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKIGNs
YXNzIFNsb3RWaXNpdG9yOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCmluZGV4IGUx
YTFhYWEyNWZhNWQ3ZmEzYTMyOTEwNmI0MDZkZWQzZDRjMjNiY2YuLjZhMmFhMjQxZWYxODQ0ZDNi
ZGU3NGQyMzI3ZWMxM2RiZmI3MzhlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5oCkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZN
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
aW5kZXggZjA2N2NiMGE4MzhmZTQxMGE1ZWYzMzE0ZDJiMGQ5NDRiNmU1MDU1Zi4uMmZiYTMyNjk0
ZWM5NTkwODM1MzE5NDlmNTdhZDI4ZTA1MTQ3ZWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzIsOSArMzIsMTAgQEAKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNWYWx1
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2Vj
dXJpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5
LmgKaW5kZXggZWJkYjhhOTAwZDE3NWM2ODAzZDFiYWFlOWI5YzM2MWZiMzJkMTM1MS4uN2YyZmUx
N2NmMDljYjU0ZWZkMTg4YzUzMDRjM2MxNzkyY2QzZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oCkBAIC0yNyw3ICsyNyw4IEBA
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IDRjYjViZjBhMGRiM2M4Mzk1NGI4
MjNkNjM5OWU2YjM0Mzk4MGJkYzYuLmU0ZWI0NzMyMzA5NGY5M2NmNjZlZWUyZDllOGI0OGFmZWFk
MDQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWls
dGluQ29uc3RydWN0b3IuaApAQCAtNDUsNyArNDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Ns
YXNzPiBjbGFzcyBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTUJ1aWx0aW5D
bwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpK
U0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBj
YWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Jik7CiAgICAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
T2JqZWN0Kik7CkBAIC0xMTEsMTEgKzExMSwxMSBAQCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxK
U0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNDb21wbGV4V3JhcHBlciwgSlNDOjpKUwog
ICAgIHJldHVybiBjb250ZXh0ID8gY3JlYXRlV3JhcHBlcjx0eXBlbmFtZSBKU0NsYXNzOjpET01X
cmFwcGVkPihjb25zdHJ1Y3Rvci5nbG9iYWxPYmplY3QoKSwgSlNDbGFzczo6RE9NV3JhcHBlZDo6
Y3JlYXRlKCpjb250ZXh0KSkgOiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0Ns
YXNzPiBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yPEpTQ2xhc3M+Ojpjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQor
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFT
U0VSVChzdGF0ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IEpTQzo6anNDYXN0PEpTRE9NQnVp
bHRpbkNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwotICAgIHJldHVybiBjYXN0ZWRU
aGlzLT5jYWxsQ29uc3RydWN0b3IoKnN0YXRlLCBjcmVhdGVKU09iamVjdCgqY2FzdGVkVGhpcykp
OworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBKU0M6Ompz
Q2FzdDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Cisg
ICAgcmV0dXJuIGNhc3RlZFRoaXMtPmNhbGxDb25zdHJ1Y3RvcigqY2FsbEZyYW1lLCBjcmVhdGVK
U09iamVjdCgqY2FzdGVkVGhpcykpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBp
bmxpbmUgSlNDOjpDb25zdHJ1Y3RUeXBlIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rv
ci5oCmluZGV4IDAxNzY3YTk0MGIwYzVhMWQ5ZWFiMTA1NzEyNDJjZGI0ZjY1YzgzNjIuLjk2NTYz
NmFkOTQ2MWM3MGMwODM3NGJjYWQ0OTIzMDBmNTBkOGY3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01Db25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RP
TUNvbnN0cnVjdG9yQmFzZQogICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFs
aXphdGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpIHsgfQogICAgIC8vIE11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBz
cGVjaWFsaXphdGlvbiBjbGFzcy4KLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5s
aW5lIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46
OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcAppbmRleCA5NmJhZDI0NTY3MWRkOTAyZWZlNGMz
ZTJiZmRjMTM0MGRhZjVjYTQ0Li4yNjM0MjIxOGNlNjg4YWEyNjRmY2QwMGI1NWRkZGU2MzQ3OTg1
MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3RvckJhc2UuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTRE9NQ29uc3RydWN0b3JC
YXNlKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJDb25zdHJ1Y3RvciBy
ZXF1aXJlcyAnbmV3JyBvcGVyYXRvciJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIl9zKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgKaW5kZXggZjBiMTAzZjBjNTlhNWExZDg0YjFiZmE3MTc3NGJjNWFhOTkzN2JkMC4uYjkw
MTFkZWQyOWE2MDY0ODQ2ZWZkZjk4ZGYxNjg3MGNmYTRmYzM2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oCkBAIC00NiwxMSArNDYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4g
Y2xhc3MgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUgOiBwdWJsaWMgSlNET00KICAg
ICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCiAgICAg
dm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7
IH0KIAotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRo
cm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQorICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7Ci0g
ICAgICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIklsbGVn
YWwgY29uc3RydWN0b3IiX3MpOworICAgICAgICBKU0M6OnRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJJbGxlZ2FsIGNvbnN0cnVjdG9yIl9zKTsKICAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDgwMzBkMzU0MGY1
YjE0NjQ5NGM1MDZiYmJjZmI4ZTI0MzJhZjE3ZWIuLmY5NzAxNzQ5MWVjYjRkOGMzYWYyNjc0ZTZl
YzNiNzZiY2UwYjczNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKQEAgLTU0LDkgKzU0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFr
ZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJs
ZWQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlw
ZUVycm9yRm9yQnVpbHRpbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlz
UmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBjb25zdCBDbGFzc0luZm8gSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkRPTUds
b2JhbE9iamVjdCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NR2xvYmFsT2JqZWN0KSB9OwogCkBAIC03NSwzOSArNzUs
MzkgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjZWxsKS0+SlNET01HbG9iYWxPYmplY3Q6
On5KU0RPTUdsb2JhbE9iamVjdCgpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMoRXhlY1N0YXRlKiBleGVjU3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
QVNTRVJUKGV4ZWNTdGF0ZSk7Ci0gICAgQVNTRVJUKGV4ZWNTdGF0ZS0+YXJndW1lbnRDb3VudCgp
ID09IDIpOwotICAgIFZNJiB2bSA9IGV4ZWNTdGF0ZS0+dm0oKTsKKyAgICBBU1NFUlQoY2FsbEZy
YW1lKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMik7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGV4ZWNTdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkuZ2V0U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBpbnRlcmZh
Y2VOYW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRTdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIGF1dG8gZnVuY3Rpb25O
YW1lID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlY1N0YXRl
KTsKKyAgICBhdXRvIGZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MSkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVR5cGVFcnJvcihleGVjU3RhdGUsIG1h
a2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLnV0ZjgoKS5kYXRhKCksIGZ1bmN0
aW9uTmFtZS51dGY4KCkuZGF0YSgpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3Jl
YXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFj
ZU5hbWUudXRmOCgpLmRhdGEoKSwgZnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0
aW5zKEV4ZWNTdGF0ZSogZXhlY1N0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4ZWNTdGF0ZSk7Ci0gICAg
QVNTRVJUKGV4ZWNTdGF0ZS0+YXJndW1lbnRDb3VudCgpID09IDIpOwotICAgIFZNJiB2bSA9IGV4
ZWNTdGF0ZS0+dm0oKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICBBU1NFUlQoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPT0gMik7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8gaW50ZXJmYWNlTmFtZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0U3Ry
aW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBzY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOwotICAgIGF1dG8gYXR0cmlidXRlTmFtZSA9IGV4ZWNTdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBhdHRyaWJ1dGVO
YW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCi0gICAgYXV0byBlcnJvciA9IHN0
YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihjcmVhdGVUeXBlRXJyb3IoZXhlY1N0YXRlLCBtYWtl
R2V0dGVyVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLnV0ZjgoKS5kYXRhKCksIGF0dHJp
YnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpKTsKKyAgICBhdXRvIGVycm9yID0gc3RhdGljX2Nhc3Q8
RXJyb3JJbnN0YW5jZSo+KGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VHZXR0ZXJUeXBl
RXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRmOCgpLmRhdGEoKSwgYXR0cmlidXRlTmFtZS51
dGY4KCkuZGF0YSgpKSkpOwogICAgIGVycm9yLT5zZXROYXRpdmVHZXR0ZXJUeXBlRXJyb3IoKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVycm9yKTsKIH0KIAogI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNSZWFkYWJsZUJ5dGVTdHJl
YW1BUElFbmFibGVkKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlz
UmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKCkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAppbmRleCAy
NzA5YjFmYjk4MGYxNzAzOGRjYjljN2E4NDc1Njc5OWNlMmE0ZWJkLi5hZDlmYTg1MTc0N2IzNmJm
Mjk0YTQyYjBlNjQ2ZDk5NWZmMWJmYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01JdGVyYXRvci5oCkBAIC02NCw3ICs2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+IGNsYXNzIEpTRE9NSXRlcmF0b3JQcm90b3R5
CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG5leHQoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG5leHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAKIHByaXZhdGU6CiAgICAgSlNET01JdGVyYXRvclByb3RvdHlwZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpIHsg
fQpAQCAtMjQ2LDE2ICsyNDYsMTYgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NSXRlcmF0b3I8SlNXcmFw
cGVyLCBJdGVyYXRvclRyYWl0cz46Om5leHQoSlNDOjpFeGVjU3RhdGUmIHN0YXQKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyLCB0eXBlbmFtZSBJdGVyYXRvclRyYWl0cz4KLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3Jh
cHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3Jh
cHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0M6OlZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaXRlcmF0b3Ig
PSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJh
aXRzPio+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8gaXRlcmF0b3IgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPio+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAg
ICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAiQ2Fubm90IGNhbGwgbmV4dCgpIG9uIGEgbm9uLUl0ZXJhdG9yIG9iamVjdCJfcykpOworICAg
ICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiX3Mp
KTsKIAotICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShpdGVyYXRvci0+bmV4dCgqc3Rh
dGUpKTsKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3ItPm5leHQoKmNh
bGxGcmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0
ZXJhdG9yVHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01OYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5h
bWVkQ29uc3RydWN0b3IuaAppbmRleCAyNjVlNmQzZTM0Y2MwNDEzMGEyMGU2NjBhN2I1Y2M1ZTgx
N2RhMDU0Li5kM2M4N2FiNjhlYzExYzI0MjI2YTYyMzUzZGM0MTIxNTY4NTY3Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaApA
QCAtNDgsNyArNDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTU5h
bWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvcgogICAgIC8vIFVzdWFsbHkg
ZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxp
emVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsgfQogICAgIC8vIE11
c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KLSAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0
ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNz
PiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAppbmRleCAyMjZi
ZWY5OGEzNDQyYTZkMGY0MzcxODI3OWQyYzkwNTdmNTAwYzhiLi5lMWVlNmU3MzM5NTFiNWVmNGI3
NWIwOTkyZTgxOTZmOTQ3NjQ5NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBET01Qcm9taXNlOjp3aGVuUHJv
bWlzZUlzU2V0dGxlZChKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2IK
ICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBhdXRv
JiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8q
IGhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAxLCBTdHJpbmcgeyB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEV4ZWNT
dGF0ZSopIG11dGFibGUgeworICAgIGF1dG8qIGhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgbXV0YWJs
ZSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVu
Y29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGNkMWVkYmEwOWE3ZjI3YmQy
ZDRmZjViOGQxYmRiYmY3ZDBhZWU0N2UuLmUzY2MyZjljNDExMTBjZGFlOGE1NDcwMTE0NTM1NGYx
ZDA0ZjY0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTY0LDggKzY0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uU2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJh
c2UoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvblNob3dNb2RhbERpYWxvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25PcGVuRGF0YWJhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBK
U0RPTVdpbmRvdzo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7CkBAIC02MzEsOSArNjMxLDkgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElE
TE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1
cm4gdG9KU0RPTVdpbmRvdyhzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKS50b1RoaXMoJnN0
YXRlLCBOb3RTdHJpY3RNb2RlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlv
bk9wZW5EYXRhYmFzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYWxsPGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHk+KCpzdGF0ZSwgIm9wZW5EYXRhYmFzZSIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYWxsPGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHk+KCpjYWxsRnJhbWUsICJvcGVuRGF0YWJhc2Ui
KTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDRiOWNlMGEzNTBj
ZDU3Y2VmODg5MGU2ODZjZGJlYmVhODgzZjUwYmIuLjM0NjI4MTQyMmYzNzBiNzdkNWVhN2NiNDFm
MWQxZmIwZTA3NDA3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzYsOSArMzYs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YTI5
YmEyNWVjNjU0YTE3YmVlNDg1ZDg2OGQ5YWRjODBkZWMxNzc1Li40MGJiMmMyNmIyNWQyOWExMTli
NDBhOWIyZWYxYTljYzY4Y2QyNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDEsOSArNDEsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUmIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTSFRNTEVsZW1lbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlJiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpz
Q2FzdDxKU0RPTUNvbnN0cnVjdG9yQmFzZSo+KGV4ZWMuanNDYWxsZWUoKSk7CkBAIC01Niw4ICs1
Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVu
dChFeGVjU3RhdGUmIGV4ZWMpCiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldFZhbHVlID0gZXhlYy50
aGlzVmFsdWUoKTsKICAgICBhdXRvKiBuZXdUYXJnZXQgPSBuZXdUYXJnZXRWYWx1ZS5nZXRPYmpl
Y3QoKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihuZXdUYXJnZXQtPmdsb2JhbE9iamVjdCh2bSkpOwotICAgIEpTVmFsdWUgaHRtbEVsZW1lbnRD
b25zdHJ1Y3RvclZhbHVlID0gSlNIVE1MRWxlbWVudDo6Z2V0Q29uc3RydWN0b3Iodm0sIGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byogbmV3VGFyZ2V0R2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obmV3VGFyZ2V0LT5nbG9iYWxPYmplY3Qodm0pKTsKKyAgICBKU1ZhbHVl
IGh0bWxFbGVtZW50Q29uc3RydWN0b3JWYWx1ZSA9IEpTSFRNTEVsZW1lbnQ6OmdldENvbnN0cnVj
dG9yKHZtLCBuZXdUYXJnZXRHbG9iYWxPYmplY3QpOwogICAgIGlmIChuZXdUYXJnZXRWYWx1ZSA9
PSBodG1sRWxlbWVudENvbnN0cnVjdG9yVmFsdWUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKCZleGVjLCBzY29wZSwgIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVs
ZW1lbnQgY29uc3RydWN0b3IiX3MpOwogCkBAIC03NiwxNCArNzYsMTQgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNTdGF0ZSYgZXhlYykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAibmV3LnRhcmdl
dCBkb2VzIG5vdCBkZWZpbmUgYSBjdXN0b20gZWxlbWVudCJfcyk7CiAKICAgICBpZiAoIWVsZW1l
bnRJbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKmdsb2Jh
bE9iamVjdCk7CisgICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVj
dHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKm5ld1RhcmdldEdsb2JhbE9iamVjdCk7CiAgICAgICAg
IGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZSgmZXhlYywgbmV3VGFyZ2V0VmFsdWUsIGJhc2VTdHJ1Y3R1cmUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
ICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGVsZW1l
bnRJbnRlcmZhY2UtPm5hbWUoKSwgZG9jdW1lbnQpOwogICAgICAgICBlbGVtZW50LT5zZXRJc0Rl
ZmluZWRDdXN0b21FbGVtZW50KCplbGVtZW50SW50ZXJmYWNlKTsKLSAgICAgICAgYXV0byoganNF
bGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgZWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmpl
Y3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgICAgIGF1dG8qIGpz
RWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0dXJlLCBuZXdU
YXJnZXRHbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOworICAgICAgICBjYWNoZVdyYXBwZXIo
bmV3VGFyZ2V0R2xvYmFsT2JqZWN0LT53b3JsZCgpLCBlbGVtZW50LnB0cigpLCBqc0VsZW1lbnQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRWxlbWVudCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcAppbmRleCAxMGQ2Zjk0MjNmZGY1NWE0NzUyZTNkYmY5ZGM2OWM2ODMwYWQ5MWFk
Li40Mjk1ODllODhkMDcyMWQwZmUyOWU2NzI4MTU3ZTQ1ZWQ0YzM3MmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAKQEAgLTEzOSwyNiArMTM5LDI2IEBAIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0hU
TUxFbGVtZW50KiBlbGVtZW50LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQ
bHVnaW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFBsdWdpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVs
ZW1lbnQqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0g
anNDYXN0PEpTSFRNTEVsZW1lbnQqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8g
R2V0IHRoZSBwbHVnLWluIHNjcmlwdCBvYmplY3QuCi0gICAgSlNPYmplY3QqIHNjcmlwdE9iamVj
dCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKKyAgICBKU09iamVjdCogc2Ny
aXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAg
QVNTRVJUKHNjcmlwdE9iamVjdCk7CiAKLSAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50TGlzdDsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKLSAgICAgICAg
YXJndW1lbnRMaXN0LmFwcGVuZChleGVjLT5hcmd1bWVudChpKSk7CisgICAgICAgIGFyZ3VtZW50
TGlzdC5hcHBlbmQoY2FsbEZyYW1lLT5hcmd1bWVudChpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVu
dExpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZXhlYy0+dm0oKSwgc2NyaXB0T2JqZWN0LCBj
YWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmpl
Y3QtPnZtKCksIHNjcmlwdE9iamVjdCwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6SG9zdCk7CiAKICAgICAvLyBDYWxsIHRoZSBvYmplY3QuCi0gICAgSlNWYWx1
ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHNjcmlwdE9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBl
eGVjLT50aGlzVmFsdWUoKSwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNh
bGwoY2FsbEZyYW1lLCBzY3JpcHRPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSwgYXJndW1lbnRMaXN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViQW5pbWF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
QW5pbWF0aW9uQ3VzdG9tLmNwcAppbmRleCBmMWI0NDdkODM0ZjI4NjljZmQ2NGFkYzlkYjMyYmIx
ZDE3YjhkM2VmLi5kMDRhNDdlYmFmMDc1MTUwMmI3N2FjMzVkZTUzMTI1ZDI1ZjA3MDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkFuaW1hdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20u
Y3BwCkBAIC01MSw5ICs1MSw5IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJBbmltYXRpb24mIHZhCiAgICAgcmV0dXJu
IHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQW5pbWF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQW5pbWF0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNET01Db25z
dHJ1Y3RvckJhc2UqPihzdGF0ZS5qc0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOWVkMTBlZTg3YTE4MjQzYzgxOWUw
N2ZjNTZjYzUyOWE4ZDFmNTJkMS4uNTM2NGQ0ZmJlYWZhZjZmNDdiNzY3YTIwYzg1OGJiY2RhYmRi
ZjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTI4MCwxOCArMjgwLDE4IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBN
b2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAKICAg
ICBSZWZQdHI8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IG1vZHVsZVNjcmlwdCgmbW9kdWxlU2NyaXB0
UmVmKTsKIAotICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246
OmNyZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVT
Y3JpcHRdKEV4ZWNTdGF0ZSogZXhlYykgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgZnVsZmlsbEhhbmRsZXIgPSAqSlNOYXRp
dmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5LndpbmRvdygpLCAxLCBTdHJp
bmcoKSwgW21vZHVsZVNjcmlwdF0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpIC0+IEpTQzo6RW5jb2RlZEpTVmFsdWUgeworICAgICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBqc1ZhbHVlVG9Nb2R1
bGVLZXkoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBJZGVudGlmaWVyIG1vZHVs
ZUtleSA9IGpzVmFsdWVUb01vZHVsZUtleShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBt
b2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRDb21wbGV0ZWQoKm1vZHVsZUtleS5pbXBsKCkpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwogCi0g
ICAgYXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3Rh
dGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShFeGVj
U3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgSlNW
YWx1ZSBlcnJvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgYXV0byYgcmVqZWN0SGFu
ZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2lu
ZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgICAgIEpTVmFsdWUgZXJyb3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgICAgIGlmIChlcnJvclZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6YXNPYmplY3QoZXJyb3JWYWx1ZSk7CiAgICAgICAgICAg
ICBpZiAoSlNWYWx1ZSBmYWlsdXJlS2luZFZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygp
LmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVT
Y3JpcHQmIG1vZHVsZVNjcgogICAgICAgICAgICAgTG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNz
YWdlIHsKICAgICAgICAgICAgICAgICBNZXNzYWdlU291cmNlOjpKUywKICAgICAgICAgICAgICAg
ICBNZXNzYWdlTGV2ZWw6OkVycm9yLAotICAgICAgICAgICAgICAgIHJldHJpZXZlRXJyb3JNZXNz
YWdlKCpleGVjLCB2bSwgZXJyb3JWYWx1ZSwgc2NvcGUpLAorICAgICAgICAgICAgICAgIHJldHJp
ZXZlRXJyb3JNZXNzYWdlKCpjYWxsRnJhbWUsIHZtLCBlcnJvclZhbHVlLCBzY29wZSksCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IDE2YmU3YzgyNTIwYjJmNzhiOThmMGU4NWYwMDAyMmM4MzRlZmRkZmMuLmRk
MTNjN2QzMzExMjI5NzNjYWJkZDM1YjM2MmU1ZTNiYTcxMGJjNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTQwLDEwICs0MCwxMSBAQCBP
QkpDX0NMQVNTIFdlYlNjcmlwdE9iamVjdDsKIHN0cnVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwogY2xhc3MgSlNNb2R1bGVSZWNvcmQ7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiBj
bGFzcyBJbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmgKaW5kZXggYTYwNjZmNGNlMzk5OTk2YzY1NGRiNjAzYzBhNDcyNGRkMDg0MDM2
OC4uMjc5ZjYyZmM5ZjE5ODMxYTJhNjEyNTA3N2Q2OTJmNTgxMGRmYzgyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKQEAgLTM0LDExICsz
NCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsK
IGNsYXNzIEpTTW9kdWxlTG9hZGVyOwogY2xhc3MgU291cmNlT3JpZ2luOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oCmluZGV4IDE1Mzg0YTcxMWYzNTZjZWU0NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIuLjdj
YTVmODhmYmZhYzk1MDc2MzQzNzRkMzVmNTE1YWM3OTdjNGEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMzIsNyArMzIsOCBAQAogI3ByYWdtYSBvbmNl
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAppbmRleCAz
YTM4YWM1ZWM2YTIzMDExYmRiMTExZWEwMTYxMjhhNWIzYmZlNTczLi5hNmRhNjM5M2YwMDcyZjNi
ZDMzY2Y2MmFhZjhmOThiMGZiNWJjOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTM5LDE1ICszOSwxMyBAQCBlbnVtIGNsYXNzIENs
b25lTW9kZSB7CiAgICAgUGFydGlhbCwKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhlY1N0YXRlKiwgQ2xvbmVNb2RlKTsKLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChFeGVjU3RhdGUqIHN0
YXRlLCBDbG9uZU1vZGUgbW9kZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjbG9uZUFycmF5QnVm
ZmVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBD
bG9uZU1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoc3RhdGUpOwogICAgIEFTU0VSVChzdGF0ZS0+
YXJndW1lbnRDb3VudCgpKTsKLSAgICBBU1NFUlQoc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7CisgICAgQVNTRVJUKHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2Jq
ZWN0KTsKIAotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvKiBidWZmZXIgPSB0b1Vuc2hhcmVkQXJyYXlCdWZmZXIodm0s
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTgsNjAgKzU2LDYw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhl
Y1N0YXRlKiBzdGF0ZSwgQ2xvbmVNb2RlIG1vCiAgICAgICAgIEFTU0VSVChzdGF0ZS0+YXJndW1l
bnRDb3VudCgpID09IDMpOwogICAgICAgICBpbnQgc3JjQnl0ZU9mZnNldCA9IHN0YXRpY19jYXN0
PGludD4oc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvTnVtYmVyKHN0YXRlKSk7CiAgICAg
ICAgIGludCBzcmNMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgyKS50b051bWJlcihzdGF0ZSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCksIGJ1ZmZlci0+c2xpY2Uoc3JjQnl0ZU9mZnNldCwgc3JjQnl0ZU9mZnNldCArIHNyY0xl
bmd0aCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpj
cmVhdGUoc3RhdGUtPnZtKCksIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIGJ1ZmZlci0+c2xpY2Uoc3JjQnl0ZU9mZnNl
dCwgc3JjQnl0ZU9mZnNldCArIHNyY0xlbmd0aCkpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OkRlZmF1bHQpLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPmJ5dGVMZW5ndGgoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJy
YXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0
cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChzdGF0ZSwgQ2xvbmVNb2RlOjpQYXJ0aWFsKTsKKyAg
ICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIENs
b25lTW9kZTo6UGFydGlhbCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
dWN0dXJlZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNsb25l
QXJyYXlCdWZmZXJJbXBsKHN0YXRlLCBDbG9uZU1vZGU6OkZ1bGwpOworICAgIHJldHVybiBjbG9u
ZUFycmF5QnVmZmVySW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQ2xvbmVNb2RlOjpGdWxs
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJh
eUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAg
QVNTRVJUKHN0YXRlLT5hcmd1bWVudENvdW50KCkpOworICAgIEFTU0VSVChjYWxsRnJhbWUpOwor
ICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAKLSAgICBKU1ZhbHVlIHZh
bHVlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvKiBidWZmZXJWaWV3
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCB2YWx1ZSk7CiAgICAgQVNT
RVJUKGJ1ZmZlclZpZXcpOwogCiAgICAgYXV0byogYnVmZmVyID0gYnVmZmVyVmlldy0+dW5zaGFy
ZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIHRocm93RGF0YUNsb25lRXJyb3IoKnN0YXRl
LCBzY29wZSk7CisgICAgICAgIHRocm93RGF0YUNsb25lRXJyb3IoKmNhbGxGcmFtZSwgc2NvcGUp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBhdXRvIGJ1ZmZlckNsb25lID0gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYnVmZmVyVmlldy0+c3RydWN0dXJlKHZtKTsK
IAogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50OEFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDhBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1
ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJ
bnQ4QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9u
ZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU0ludDE2QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZl
clZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQx
NkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUp
LCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJl
LCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJW
aWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MzJB
cnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwg
YnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVWludDhBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OEFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwg
V1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmll
dy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4QXJy
YXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1
ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1VpbnQ4Q2xhbXBlZEFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoc3RhdGUs
IHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1VpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNVaW50MTZBcnJheSo+KHZtLCB2YWx1
ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRl
KHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRl
T2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZN
b3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5s
ZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVWludDMyQXJyYXkqPih2bSwgdmFs
dWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0
ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0Zsb2F0MzJBcnJheSo+KHZtLCB2
YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDMyQXJyYXk6OmNy
ZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZp
ZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5
OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZp
ZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0NjRBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0
dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZm
ZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNy
ZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1N0cnVjdHVyZWRDbG9uZS5oCmluZGV4IGE2ZTRmODMwNjMzZWFjODM2ZjAyODkxNjc5YThiNWIz
ZGEwYmY3MTUuLjI0NjZiOWY3NWU3ZjA2YmQzNWFhNDczNjliNmM3Y2QwMDAwYTA3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCkBAIC0yNSwxNCAr
MjUsMTYgQEAKICAqLwogCiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIENhbGxGcmFtZTsKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OwogdXNpbmcgRW5jb2RlZEpTVmFsdWUgPSBpbnQ2NF90OwotY2xhc3Mg
RXhlY1N0YXRlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5
QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXco
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9u
ZUFycmF5QnVmZmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVy
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBjYzAyOGMyNTEzYWIxOGNlNTA1NzZjZjY4NzlmNmY3NzQxODk3NzdlLi4wODc2
MTc5OTYxYTU1NzJiODQxYjY4NzczMWI0Mjc5OTZiMzUxODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjk3Niw3ICsy
OTc2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVD
b25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUp
IDogdW5kZWY7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRv
cGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIj
ZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogCkBAIC0zMDI4LDcg
KzMwMjgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmIChIYXNDdXN0b21Db25zdHJ1
Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiLy8gQ3Vz
dG9tIGNvbnN0cnVjdG9yXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpF
eGVjU3RhdGUmKTtcblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUmKTtcblxuIik7CiAgICAgfQogCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50
YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewpAQCAtMzk3MCw3ICszOTcwLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
ICR7ZnVuY3Rpb25OYW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTtc
biIpOwogICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RP
TUpJVH0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlLmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWVPZkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVj
ayA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIldpdGhvdXRU
eXBlQ2hlY2siOwpAQCAtNTE4Niw4ICs1MTg2LDkgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uVHJh
bXBvbGluZURlZmluaXRpb24KICAgICBwdXNoKEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50
cywgIlByb21pc2VFeGVjdXRpb25TY29wZTo6JHtleHBvc3VyZVNjb3BlfSIpIGlmICRoYXNQcm9t
aXNlUmV0dXJuVHlwZSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJu
c093blByb21pc2V9OwogICAgIHB1c2goQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1lbnRzLCAi
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCIpIGlmICgkb3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkb3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CiAKLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShFeGVj
U3RhdGUqIHN0YXRlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtpZGxPcGVy
YXRpb25UeXBlfTwke2NsYXNzTmFtZX0+Ojoke2NhbGxGdW5jdGlvbk5hbWV9PCIgLiBqb2luKCIs
ICIsIEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cykgLiAiPigqc3RhdGUsIFwiIiAuICRv
cGVyYXRpb24tPm5hbWUgLiAiXCIpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxu
XG4iKTsKIH0KQEAgLTU0NzQsOCArNTQ3NSw5IEBAIHN1YiBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZp
bml0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKUyR7aW50ZXJmYWNlTmFtZX06OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTtcbiIpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwotICAgIHB1
c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3NlcmlhbGl6
ZXJOYXRpdmVGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtzZXJpYWxpemVyTmF0
aXZlRnVuY3Rpb25OYW1lfShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBJRExPcGVyYXRpb248SlMke2ludGVyZmFjZU5h
bWV9Pjo6Y2FsbDwke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9Qm9keT4oKnN0YXRlLCBc
IiR7c2VyaWFsaXplckZ1bmN0aW9uTmFtZX1cIik7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKQEAgLTU1MjIsMTMgKzU1
MjQsMTMgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMKIAogICAgICAgICBt
eSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJjYWxsJHtjbGFzc05hbWV9IjsKIAotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7b3Zl
cmxvYWRGdW5jdGlvblByZWZpeH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7b3ZlcmxvYWRG
dW5jdGlvblByZWZpeH0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIAotICAgICAgICBHZW5lcmF0
ZU92ZXJsb2FkRGlzcGF0Y2hlcigkbGVnYWN5Q2FsbGVyc1swXSwgJGludGVyZmFjZSwgJG92ZXJs
b2FkRnVuY3Rpb25QcmVmaXgsICIiLCAic3RhdGUiKTsKKyAgICAgICAgR2VuZXJhdGVPdmVybG9h
ZERpc3BhdGNoZXIoJGxlZ2FjeUNhbGxlcnNbMF0sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0
aW9uUHJlZml4LCAiIiwgImdsb2JhbE9iamVjdCwgc3RhdGUiKTsKIAogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgIH0gZWxzZSB7CkBAIC01NTQ5LDEzICs1NTUxLDEz
IEBAIHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24KIAogICAgIG15ICRpc092ZXJs
b2FkZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRvcGVyYXRpb24tPntvdmVybG9h
ZHN9fSA+IDE7CiAgICAgaWYgKCRpc092ZXJsb2FkZWQpIHsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtjbGFzc05hbWV9JG9w
ZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtj
bGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsJHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xh
c3NOYW1lfShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxu
Iik7CiAgICAgfQogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7XG4iKTsKIApAQCAtNjQyMyw4ICs2NDI1LDkgQEAgRU5ECiAgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PCR7Y2xhc3NOYW1lfT46OmNhbGw8JHtmdW5jdGlvbk5hbWV9Q2FsbGVyPigqc3RhdGUsICIke3By
b3BlcnR5TmFtZX0iKTsKIH0KIApAQCAtNzE4NiwxMyArNzE4OSwxMyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb25zCiAKICAgICAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9u
UHJlZml4ID0gImNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xh
c3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCi0gICAgICAgICAgICBHZW5lcmF0ZU92ZXJs
b2FkRGlzcGF0Y2hlcihAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc31bMF0sICRpbnRlcmZhY2Us
ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAiIiwgInN0YXRlIik7CisgICAgICAgICAgICBHZW5l
cmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcihAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc31bMF0sICRp
bnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAiIiwgImdsb2JhbE9iamVjdCwgc3Rh
dGUiKTsKIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAg
ICB9IGVsc2lmIChAY29uc3RydWN0b3JzID09IDEpIHsKQEAgLTcyMTYsMjEgKzcyMTksMjIgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3Rh
YmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDdXN0b21Db25zdHJ1Y3Rvcn0pIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInRlbXBsYXRlPD4gSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChleGVjKTtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0o
KmV4ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
KHN0YXRlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShnbG9iYWxPYmplY3QsICpzdGF0
ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAg
ICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJh
dGluZ05hbWVkQ29uc3RydWN0b3IpKSB7CiAgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0g
JG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAx
OwogICAgICAgICAgICAgaWYgKCRpc092ZXJsb2FkZWQpIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7
Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJ
bmRleH0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX06OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNw
cAppbmRleCA5ZGEwZGVkZDRlMzg5YWI4YWI4ZjVkYWNjMzNkZjY1ZWViZDI5NGRhLi45YzM4OTk1
MjE0ZmMwNTJhZWYzMThiNDhkMmJmNTBlYzI5NjQ3MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcApAQCAtNDUsMTUg
KzQ1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkdldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkhhcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlz
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIyMiw4ICsyMjIsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5
KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZv
cndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uR2V0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uR2V0Qm9keT4oKnN0YXRlLCAiZ2V0Iik7CiB9CiAKQEAgLTIzOCw4ICsyMzksOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25IYXNCb2R5KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keT4oKnN0YXRlLCAiaGFzIik7CiB9CiAKQEAgLTI1
MCw4ICsyNTIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keShKU0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6
Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRy
aWVzIik7CiB9CiAKQEAgLTI2Miw4ICsyNjUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQm9keShKU0M6OkV4ZWNTdAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBM
aWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNN
YXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5Pigqc3RhdGUs
ICJrZXlzIik7CiB9CiAKQEAgLTI3NCw4ICsyNzgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5KEpTQzo6RXhl
YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNU
b01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvblZhbHVlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0Jv
ZHk+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCkBAIC0yOTAsOCArMjk1LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aEJvZHkoSlNDOjpFeGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxi
YWNrKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxs
PGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2gi
KTsKIH0KIApAQCAtMzA2LDggKzMxMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZEJvZHkoSlNDOjpFeGVjU3RhCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEFkZFRvTWFwTGlrZSgq
c3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25BZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5Pigq
c3RhdGUsICJhZGQiKTsKIH0KIApAQCAtMzE5LDggKzMyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyQm9keShKU0M6
OkV4ZWNTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNs
ZWFyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25DbGVhckJvZHk+KCpzdGF0ZSwgImNsZWFyIik7CiB9CiAKQEAgLTMzNSw4ICszNDMs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25EZWxldGVCb2R5KEpTQzo6RXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywg
V1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+
OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9keT4oKnN0YXRlLCAiZGVs
ZXRlIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCmluZGV4IDc0Nzg5NTkzMTIyNjEy
NmViMzExODE3OWI1ODg2ZDY5NDAzNTJkYTguLmNmYTI4MTAxM2MxYmExZTA2YWY3ZmIwOWEyYmUy
M2E0NjBhODQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcApAQCAtNDUsMTIgKzQ1LDEy
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdl
dChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApA
QCAtMjE2LDggKzIxNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keShKU0M6CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkdldEJvZHk+KCpzdGF0ZSwgImdldCIpOwogfQogCkBAIC0yMzIsOCArMjMz
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KEpTQzoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdU
Rk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25I
YXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
UmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
SGFzQm9keT4oKnN0YXRlLCAiaGFzIik7CiB9CiAKQEAgLTI0NCw4ICsyNDYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNCb2R5KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtl
Pjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0JvZHk+KCpz
dGF0ZSwgImVudHJpZXMiKTsKIH0KIApAQCAtMjU2LDggKzI1OSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5
c0JvZHkoSlNDCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2Fy
ZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQm9keT4oKnN0YXRlLCAia2V5cyIpOwogfQog
CkBAIC0yNjgsOCArMjcyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5KEoKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpzdGF0
ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvblZhbHVlc0JvZHk+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCkBAIC0yODQsOCAr
Mjg5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRU
aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keT4oKnN0YXRlLCAiZm9yRWFjaCIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDdlMzlmMGQyYjc5NTkxYTY5
NDEwM2Q0MDg0ZDM1NTYzOWY2ZDY2OGYuLmExNDc3ZTEyZWZkYjZmNGZiYzkyMzE5NmYzNmFjNTU0
MzM1NWFiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC00Niw4ICs0
Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Q
b3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5j
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvblBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIyNyw4ICsyMjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNp
dGluZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhj
aXRpbmdGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJleGNpdGlu
Z0Z1bmN0aW9uIik7CiB9CiAKQEAgLTI0NSw4ICsyNDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0
TWVzcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25Qb3N0TWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNz
YWdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxsPGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZUZ1bmN0aW9uUG9zdE1lc3NhZ2VCb2R5Pigqc3RhdGUsICJwb3N0TWVzc2FnZSIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA5NGJhYWY0ZmJmOTVmMDkwOThkNjZmN2UwMThl
YmRkNzI2ZDJkZWZiLi4zMGU0ZDhkNWE4MGI1ZTcwZTRmM2RjYmQzMDc1ODAxZDdlOWJlZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTQ3LDggKzQ3LDggQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rp
b25zKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05v
dE5lZWRlZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlv
bnMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC00MTYsOCArNDE2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ0UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYWxsPGpzVGVzdENF
UmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoQ0VSZWFjdGlvbnMiKTsKIH0KIApAQCAtNDMxLDggKzQzMiw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rp
b25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVh
Y3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENFUmVhY3Rpb25zTm90TmVlZGVkQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENFUmVhY3Rpb25z
Tm90TmVlZGVkIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmNwcAppbmRleCA4YjE5OTVmYjY5ZWVmNjVhOGQxMzhkNmMzMjk3MDIyZjRlNzU2MTBjLi4z
OGQ0MWYzNWUxYmU2MzgzYzEyODRkMDc5ZjgxY2Y5YjYxMjVhMDM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmlu
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0yNTYsOCArMjU2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblQKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudmFsdWUo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FsbDxq
c1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA3
NTllOTBiYjUyN2Q2NWQyMTJjMTNlOWUzNGQ0ODY2NGZkMzQ5NWZhLi42YzAzZjQ3NjI3MzA5NWIz
NDUzYjRiYzkwMDU5ZWIzMjM0YWE3Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC01
MSwxNCArNTEsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1
bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVs
dFZhcmlhbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25JbnRlcmZhY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldp
dGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3Vt
ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zNTMsOCArMzUzLDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZUJv
ZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25JbnRlcmZhY2UiKTsKIH0KIApAQCAtMzY5LDggKzM3
MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25TcGVjaWZpZWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+Ojpj
YWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25TcGVjaWZp
ZWRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVkIik7CiB9CiAKQEAgLTM5Myw4
ICszOTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVu
dHMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENh
bGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVy
YXRpb25XaXRoQXJndW1lbnRzQm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVu
dHMiKTsKIH0KIApAQCAtNDEzLDggKzQxNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0
T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1l
bnRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQiKTsKIH0K
IApAQCAtNDMzLDggKzQzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
V2l0aFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
V2l0aFZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnRCb2R5Pigqc3Rh
dGUsICJ0ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCIpOwogfQogCkBAIC00NTMsOCAr
NDU4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVW
YXJpYW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhO
dWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVu
dEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQi
KTsKIH0KIApAQCAtNDcxLDggKzQ3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+Ojpj
YWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0
aW9uYWxWYXJpYW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aE9wdGlv
bmFsVmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKQEAgLTQ4OSw4ICs0OTYsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
VGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9w
ZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
aW5kZXggNWFlZmQ2OWE1NGQxZTMwYWVhZGEwNTA0NzRkOGFlOGNlNWNkOGI2Mi4uNjEyN2Q4ZTE0
N2U3YTRiOTc4OTQ0OTU4N2IwZTg1ODQ2OGE3ZmM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTU0
LDE1ICs1NCwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVX
aXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJ
RExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25JdGVtV2l0aG91dFR5cGVDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJ
VCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6
SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4pOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNr
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZFdpdGhvdXRUeXBlQ2hl
Y2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRU
eXBlPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudHNCeU5hbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50c0J5TmFtZVdpdGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rl
c3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETEF0b21TdHJpbmdBZGFwdG9y
PElETERPTVN0cmluZz4+KTsKIAogLy8gQXR0cmlidXRlcwpAQCAtMTEyNSw4ICsxMTI1LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0QXR0cmlidXRlQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZN
b3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlQm9keT4oKnN0YXRlLCAiZ2V0QXR0cmlidXRlIik7CiB9CiAKQEAgLTExNTcsOCAr
MTE1OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5KEpTQzo6RXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RG
TW92ZSh5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+
OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHk+KCpzdGF0ZSwgIml0
ZW0iKTsKIH0KIApAQCAtMTE4NSw4ICsxMTg3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keSgK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRy
aWJ1dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0
cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0
cmlidXRlQm9keT4oKnN0YXRlLCAiaGFzQXR0cmlidXRlIik7CiB9CiAKQEAgLTEyMTMsOCArMTIx
Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9N
SklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9k
eT4oKnN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsKIH0KIApAQCAtMTI0Myw4ICsxMjQ3LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50c0J5TmFtZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1l
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWVCb2R5Pigqc3RhdGUsICJnZXRFbGVtZW50c0J5TmFtZSIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXggODlkYjY0NDU4Yzc5YTkyYjg0Nzg0MGI1OTUy
Y2UwMThhOGUxZjJkMS4uNTk1N2I2M2U0MDEzMTNkODBlY2NjNDE4MTcwNDRjOWE4MTMyNTFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVk
QnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0dHJpYnV0
ZXMKQEAgLTI5Nyw4ICsyOTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxl
ZEJ5U2V0dGluZ09wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QnlTZXR0aW5nT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6Y2FsbDxqc1Rlc3RFbmFibGVk
QnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uQm9keT4o
KnN0YXRlLCAiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjZkOGQ1YzIxMTYyNDQ1YzFkMWYxYzE5NjVjMjdh
NTg4YjE2Njg1NS4uNTU0ZWM4YTBkM2I3Y2U3OTQxMDI5N2ZmNzBjNmE2ZTFhNGNkZTNjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTUzLDkgKzE1Myw5IEBAIGNs
YXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIAogdXNpbmcgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjsKIAotdGVtcGxhdGU8PiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNDEyZTY1ZjI4YmQ0ODcxYmEwZDdjNjc0ZTcy
NzQyY2Y4OTY2ZmQ5NC4uYmM2MDVmNzAxYjgxMGE5NzUzNmRjYTYxN2U5ZTMyMjk3MGYzNjRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNDYsOCArMjQ2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25J
dGVtQm9keShKU0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PE5vZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pdGVtKFdU
Rk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rp
b25JdGVtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RFdmVudFRhcmdldD46OmNhbGw8anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVtIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAKaW5kZXggMmZiNWY2MGQwNDNiNTY4NTJiYmY5MWFhYmYwMDQxODdhMDJmMzg0Zi4uZDc4
MTI4NWQ2ZWQ0MGViNDgxZGVhNjA3ZjBlYWY3MzM3ODRkNmE5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAKQEAgLTEyMCwyMyArMTIwLDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dv
cmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVzRW5hYmxlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0
aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
Q2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0
UmVzdWx0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25HZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5k
aWYKIAogLy8gQXR0cmlidXRlcwpAQCAtMjUwOCw4ICsyNTA4LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1
bGFyT3BlcmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFy
T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQm9keT4oKnN0YXRlLCAicmVndWxhck9wZXJhdGlvbiIp
OwogfQogCkBAIC0yNTYzLDggKzI1NjQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bgogICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24iKTsKIH0KIApAQCAtMjU4Myw4ICsyNTg1LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rp
b25FbmFibGVkQXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0
cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpjYWxsU3RhdGljPGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljQm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvblN0YXRpYyIpOwogfQogCkBAIC0yNjAzLDggKzI2MDYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbkVuYWJsZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRCb2R5Pigq
c3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkIik7CiB9CiAKQEAgLTI2MjEsOCArMjYyNSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50
aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIik7CiB9CiAKQEAgLTI2MzksOCArMjY0NCw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVzRW5hYmxlZEJvZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCIpOwogfQogCkBAIC0yNjU0LDggKzI2NjAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb25Cb2R5LCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsICJ0ZXN0UHJpdmF0ZUZ1bmN0
aW9uIik7CiB9CiAKQEAgLTI2NzAsOCArMjY3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2Vj
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
Q2FsY3VsYXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVT
ZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHRCb2R5LCBQcm9t
aXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJl
c3VsdCIpOwogfQogCkBAIC0yNjgzLDggKzI2OTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJv
bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNl
Y3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRl
LCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC0yNjk3LDggKzI3MDYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvblRlc3RGZWF0dXJlRwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29s
ZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZl
YXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3Rh
dGUsICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBmMWNlOWVlNDY5
NzY5NDE1MmNiMzM2NjM4NWJkNTUzYzA1MWU1ZmVkLi5mNWY4NjdjNDRmNWE5ZDk2YmYwNmRkYzNm
MWE0YzRjMTdjOWE1NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhl
ZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0yNzYsOCArMjc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNh
bGw8anNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRl
eGVkU2V0dGVyQm9keT4oKnN0YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IGMwM2Q3OGI2YjZlNWJjY2ViY2VjMGJkZTUxZmI2NDRjNWNkMGFjNTEu
LmQ0NWFkMDZmZWQyNTZkOTBmMDRiZTdkZGQ3ODExYTg3ZTE1YjlhY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCkBAIC02OCwzMSArNjgsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1
bmN0aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbklt
cGxlbWVudHNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlv
bkltcGxlbWVudHNNZXRob2Q0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rl
cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0
aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3Vw
cGxlbWVudGFsTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFs
TWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
U3VwcGxlbWVudGFsTWV0aG9kMyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVu
dGFsTWV0aG9kMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAjZW5kaWYKIAogLy8gQXR0cmlidXRlcwpAQCAtMjQ0LDkgKzI0NCw5IEBAIHN0YXRpY19hc3Nl
cnQoVGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVOVEFMQ09OU1RBTlQxID09IDEsICJTVVBQTEVN
RU5UQUxDT05TVEFOCiBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBwbGVtZW50YWw6OkNPTlNUX0lNUEwg
PT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdFN1cHBsZW1lbnRhbCBkb2VzIG5vdCBtYXRjaCB2YWx1
ZSBmcm9tIElETCIpOwogI2VuZGlmCiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSog
c3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5qc0NhbGxlZSgpKTsKQEAgLTg3Myw4ICs4NzMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2Qx
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVt
ZW50c01ldGhvZDFCb2R5Pigqc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogfQogCkBAIC04
OTgsOCArODk5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGgKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pbXBsZW1lbnRzTWV0aG9kMigqY29u
dGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01l
dGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNl
Pjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2Qy
Qm9keT4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKIH0KIApAQCAtOTEzLDggKzkxNSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5pbXBsZW1lbnRzTWV0aG9kMygqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kM0JvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRob2QzIik7CiB9CiAKQEAgLTkyOSw4ICs5
MzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0YXRp
Yzxqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDRCb2R5
Pigqc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kNCIpOwogfQogCkBAIC05NDYsOCArOTUwLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uVGFrZU5vZGVzQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2RlcykpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VO
b2RlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpzdGF0ZSwgInRh
a2VOb2RlcyIpOwogfQogCkBAIC05NjMsOCArOTY4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFs
TWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
U3VwcGxlbWVudGFsTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QxQm9keT4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOwog
fQogCkBAIC05ODgsOCArOTk0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV2ViQ29yZTo6VGVzdFN1cHBs
ZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihpbXBsLCAqY29udGV4dCwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyQm9keT4oKnN0YXRl
LCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogfQogCkBAIC0xMDAzLDggKzEwMTAsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+c3VwcGxlbWVudGFsTWV0aG9kMygqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZh
Y2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0
aG9kM0JvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDMiKTsKIH0KIApAQCAtMTAxOSw4
ICsxMDI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWwKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+Ojpj
YWxsU3RhdGljPGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxN
ZXRob2Q0Qm9keT4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kNCIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcAppbmRleCA3NGY4NDc1YzkyZGQyZTZiN2Y1YTU1YjE3MDQ3YTQ2N2MzMGFlZmMy
Li44N2E4ODFkNDU0OGU5MjRjMzM2MTRkYzdhZTQwMTc2Mzc0ZTBiNTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVy
YWJsZS5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBG
dW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVBy
b3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2go
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xOTgsOCArMTk4LDkg
QEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllc0NhbGxlcihFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhdG9yQ3JlYXRlPFRlc3RJdGVyYWJsZUl0ZXJhdG9yPigqdGhpc09iamVjdCwgSXRlcmF0aW9u
S2luZDo6VmFsdWUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3Rv
dHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbDxqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOwog
fQogCkBAIC0yMDgsOCArMjA5LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3RhdGUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRlc3RJdGVyYWJsZUl0ZXJhdG9yPigq
dGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6S2V5KSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNh
bGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtl
eXMiKTsKIH0KIApAQCAtMjE4LDggKzIyMCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxUZXN0SXRlcmFibGVJdGVy
YXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
VmFsdWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxs
ZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCkBAIC0yMjgsOCArMjMxLDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aENhbGxlcihFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yRm9yRWFj
aDxUZXN0SXRlcmFibGVJdGVyYXRvcj4oKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSkp
OwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBl
RnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDU3ZDQwZmVlYTFkN2MxNDRk
MzA0MWM3YzVhM2ExNDMxYWEwMTA5ZTMuLmIzNjU3ZWQ4YWY5YmQxM2I5MmJkZjRlZDQ5NTQxNzE5
MmNmMjYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApA
QCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIyNiw4ICsyMjYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+dGVzdEN1c3RvbUZ1bmN0aW9uKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVu
Y3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21GdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYWxsPGpzVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25Cb2R5
Pigqc3RhdGUsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGM5MjA2NWRjOTVmNzMyMmNkMDhiYzI3
ZjYxZGRhN2VjZWYwMWZhYzguLjkzYzFmNGI5ZGFiMzhhMjdmZGVlMjM1OTcwNDk4OWMyZTQ1MGJi
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTg0LDggKzE4NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVu
Y3Rpb25NCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
UHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPjo6Y2FsbDxqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2RCb2R5Pigqc3RhdGUsICJtZXRob2Qi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggNzM1NDdhYjk3NjhkYjJiYzllOGVjYTVjMGU0
Y2EzMTg4MTVlYjhhYS4uNDhiN2NjYWZiYjE3ZGY1NDRhNjNmMjY3NDQzMDYwMzg2ODEyOGU3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5h
bWVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRT
ZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMzQ2LDggKzM0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0
ZXIiKTsKIH0KIApAQCAtMzY2LDggKzM2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKnN0YXRlLCAi
aW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNmU5OGY3NjA2NzRlMGJhMDMzNjJlZDhkOTAyNDAyODY3ZDBjODVlMS4uNWIyMzFkYjY5
MGM5NzQ1ZTdlODhmMTRkYmNlNDlhNmZiMjMwMzg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcApAQCAtODgsOSArODgsOSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sCiAK
IHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcikgfTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYTRmNmQ4
MjMzYjBkYTAwM2VjMmYyODg3MDI1YzYxNDJjNDdkYmQ3My4uODNkN2Y5OTNhYWVlYjRkMDU2ZDMz
YTFkYjI0MjhmNGJjYzJmNWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVs
ZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERl
bGV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMjU3LDggKzI1Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZUZ1bmN0aW9uTmFtZWREZWxldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZERlbGV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVy
Qm9keT4oKnN0YXRlLCAibmFtZWREZWxldGVyIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBjMzkxZjJmOGI5NWE4YTI4NDBi
ZDc0NGExYWU1ZTI3Y2Y3NzAxZWVlLi4zYTQ4OWUxYjRiMDgxYWY5MjViMzA5ZDY1YjY2MTRmNGFm
YmI3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0
aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZShKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjMyLDggKzIz
Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmdldHRlck5hbWUoV1RGTW92ZShuYW1l
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbkdldHRlck5hbWVCb2R5Pigqc3RhdGUsICJnZXR0ZXJOYW1lIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA1N2FlNGFl
M2Q5NTZmMmU0YjEwNjdmMmE2ODI5MDdiMDkwNzczZjFiLi44ZTQyMjRjYTJjMjhiZjE2ZTBhODA3
NWY1YTk1ZjMxODdhMjU5NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC0yOTgsOCArMjk4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlv
bk5hbWVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVk
U2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHk+KCpzdGF0ZSwg
Im5hbWVkU2V0dGVyIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA1NzU3ODU3N2ZlNzRmNGZjMTQ2YTM0NmI2NzRh
ZDg5MWFlMTRmNDMxLi44ZTQzNGI5MDhmODg2ZmVlMWQ2ZmJjZmY2ZmQ5NDRlZjY1YzRjZTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9u
cwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1
bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMsOCArMzIzLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90
b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZFNldHRlckJvZHk+KCpzdGF0ZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKQEAg
LTM0MCw4ICszNDEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pbmRleGVkU2V0dGVy
KFdURk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRT
ZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCpz
dGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDM1
MmM4NjU0NDM0MWNjMzIxNDg3Y2QyZjc1YTU5ZjU4ZDhjYTQxYTcuLjMxOTczZmQ0YzRkMzNlMjk5
NTk4MzlmNmQ1ZTVhMDE5ZWYxNTZlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKQEAgLTQ0LDgg
KzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTM0Niw4ICsz
NDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBybwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9u
TmFtZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1
bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+
OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KIApA
QCAtMzkwLDggKzM5MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvCiAgICAgcmV0dXJuIGFy
Z3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0
dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbklu
ZGV4ZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYWxs
PGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5j
dGlvbkluZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgImluZGV4ZWRTZXR0
ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggMTI3M2ZkNmYxYmFjOGVlMmU5MWFhOTE1
ODk1NTdlYzE0ZTliODE0MC4uZjZiZjI2M2U2ZjU4NmY4MTQ4NWY5NzVlZWFlZmYyYmQzNjEyNGQz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMzYsOCArMzM2LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2Vh
YmxlT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5j
dGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJs
ZU9wZXJhdGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IDk4M2JmMzRmMGIxYzAxYTQ3MzUzZjdhMGU3ZTliNmZjMWQz
NmM5ZGIuLjhkNDI3ZmRmNzM1MDIxZjcyZGQ3ZjgwNmI4OGNhZWMxYzk3ODc5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
T3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTMyMyw4
ICszMjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAK
aW5kZXggODcwNmVlNThkNmU3YTNlMTA5ZTAzYzMyMjQ5ZjFkMTBkYmI1Y2YxZS4uYTJhMTgwMTcy
YjczMzViNDEyZjVmYjFlMzIwN2NlNDdkYTMwOTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtNDgsMTgg
KzQ4LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVz
dFdvcmtlclByb21pc2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1
bHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25U
ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVu
dHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
VmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtOTUsOSArOTUsOSBAQCBjbGFzcyBKU1Rlc3RO
b2RlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAKIHVzaW5nIEpT
VGVzdE5vZGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9kZT47CiAKLXRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTMwMCw4ICszMDAsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVz
dFdvcmtlclByb21pc2VCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclBy
b21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
UmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93
T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RXb3JrZXJQcm9taXNlIik7CiB9CiAKQEAgLTMxNCw4ICsz
MTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxs
PGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHksIFBy
b21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgImNhbGN1bGF0ZVNl
Y3JldFJlc3VsdCIpOwogfQogCkBAIC0zMjcsOCArMzI5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW5Cb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5n
ZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJnZXRTZWNyZXRCb29sZWFuIik7CiB9
CiAKQEAgLTM0MSw4ICszNDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0
YXRlLCAidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKQEAgLTM2OCw4ICszNzIs
OSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNDYWxsZXIoRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
aXRlcmF0b3JDcmVhdGU8VGVzdE5vZGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktp
bmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCkBAIC0zNzgsOCArMzgz
LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25LZXlzQ2FsbGVyKEV4ZWNTdGF0ZSosIEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGl0ZXJhdG9yQ3JlYXRlPFRlc3ROb2RlSXRlcmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25L
aW5kOjpLZXkpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktl
eXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlz
Q2FsbGVyPigqc3RhdGUsICJrZXlzIik7CiB9CiAKQEAgLTM4OCw4ICszOTQsOSBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0Nh
bGxlcihFeGVjU3RhdGUqLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVh
dGU8VGVzdE5vZGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7
CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxl
cj4oKnN0YXRlLCAidmFsdWVzIik7CiB9CiAKQEAgLTM5OCw4ICs0MDUsOSBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxs
ZXIoRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JGb3JFYWNo
PFRlc3ROb2RlSXRlcmF0b3I+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0K
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVy
Pigqc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKQEAgLTQyMCw4ICs0MjgsOSBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHko
RXhlY1N0YXRlKiBzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6c2Vy
aWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+
OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpzdGF0ZSwgInRv
SlNPTiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGQ4MDk2OWUwNDA5Mzg2NWJhOTRlNGFhYzc5N2Uy
Yjc2NWRiNTJkOTguLjIwOTMyZWIzNzE5ODg3YzAyMTgyYmIxMzhkNmU3NDBiODJiMTc4ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0xNDIwLDE3OCArMTQyMCwxNzggQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpD
b25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlv
bmEKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
U3RhdGljKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25T
dGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
YWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2Vu
ZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Wb2lkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFy
Z3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxvbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFbnVtQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVu
dW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xv
bmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmpl
Y3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92
ZUV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4
ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJX
aW5kb3dBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlv
bmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0
VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVs
bChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmlu
ZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051
bGwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlT
dHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lz
RW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxEb3VibGVJc05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxv
YXRJc05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmco
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNa
ZXJvKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxYUGF0aE5TUmVzb2x2ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlz
ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FyZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdz
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFy
Z3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
TWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdN
ZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxh
YmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1Bcmco
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxFbnVtQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoVVNWU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvblJldHVybmluZ09iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9i
aihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3Rh
dGVWb2lkRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRFeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJn
dW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVT
VlN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNV
bmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbERvdWJsZUlzTmFOKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xv
bmdJc1plcm8oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVy
byhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFNlcXVlbmNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJv
b2xlYW5Jc0ZhbHNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3Jk
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rp
b25BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25h
bEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5B
QkxFKENvbmRpdGlvbjIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlm
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uQ2xhc3NNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJs
ZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhD
bGFtcE9uT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdl
T25PcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1Nl
cXVlbmNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3Ry
aW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0
U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3Rh
dGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9t
UmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVy
bnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
RW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRo
T3B0aW9uYWxVbmlvblBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhv
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5p
b25NZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Bbnko
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1By
b21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3Rv
bVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoQ09O
RElUSU9OMSkgfHwgRU5BQkxFKENPTkRJVElPTjIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxlZ2FjeUNhbGxlck5hbWVkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5
RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRl
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJj
ZVBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxl
Z2FjeUNhbGxlck5hbWVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE5NDAsOSArMTk0MCw5IEBAIHN0YXRpY19hc3NlcnQoVGVz
dE9iajo6Q09OU1RfVkFMVUVfMTQgPT0gMHgxYWJjLCAiQ09OU1RfVkFMVUVfMTQgaW4gVGVzdE9i
aiBkb2VzCiBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX0lNUEwgPT0gMTUsICJDT05TVF9J
TVBMIGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIHN0YXRpY19h
c3NlcnQoVGVzdE9iajo6cmVhZG9ubHkgPT0gMCwgInJlYWRvbmx5IGluIFRlc3RPYmogZG9lcyBu
b3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBz
dGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkp
OwpAQCAtMjUwNCw5ICsyNTA0LDkgQEAgdm9pZCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHkKICAgICBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMShF
eGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0
T2JqMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewot
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0yNTE4LDkgKzI1MTgsOSBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmoxKEV4ZWNTdGF0ZSogc3RhdGUp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMihFeGVjU3RhdGUqIHN0YXRlKQor
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+
anNDYWxsZWUoKSk7CkBAIC0yNTMxLDkgKzI1MzEsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNhbGxKU1Rlc3RPYmoyKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJp
bmRpbmdzKFdURk1vdmUocGFyYW0pKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNhbGxKU1Rlc3RPYmozKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmozKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTI1
NDMsMjAgKzI1NDMsMjAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0
T2JqMyhFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTVGVzdE9i
aihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNU
ZXN0T2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50
ID09IDApIHsKLSAgICAgICAgcmV0dXJuIGNhbGxKU1Rlc3RPYmozKHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIGNhbGxKU1Rlc3RPYmozKGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgIH0KICAgICBp
ZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5n
QXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajEoc3RhdGUp
OwotICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajIoc3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGNhbGxKU1Rlc3RPYmoxKGdsb2JhbE9iamVjdCwgc3RhdGUpOworICAgICAgICByZXR1cm4g
Y2FsbEpTVGVzdE9iajIoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQogICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KQEAgLTU1NDUsOCArNTU0NSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbiIpOwogfQogCkBAIC01NTY1LDggKzU1NjYsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigq
c3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7CiB9CiAKQEAgLTU1ODUs
OCArNTU4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29yCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJv
ZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkIik7CiB9CiAKQEAgLTU2MDMsOCArNTYwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RC
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3Bl
Y2lmaWNNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZEJvZHk+KCpz
dGF0ZSwgIndvcmxkU3BlY2lmaWNNZXRob2QiKTsKIH0KIApAQCAtNTYxNyw4ICs1NjIxLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2Fs
Y3VsYXRlU2VjcmV0UmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRp
b25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIp
OwogfQogCkBAIC01NjMwLDggKzU2MzUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3JldEJv
b2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3Jl
dEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRC
b29sZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC01NjQ0LDgg
KzU2NTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW4iKTsKIH0KIApAQCAtNTY2MCw4ICs1NjY3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1l
dGhvZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kQm9keT4oKnN0YXRlLCAidm9pZE1l
dGhvZCIpOwogfQogCkBAIC01NjgyLDggKzU2OTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NC
bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0
aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3Rh
dGUsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKIH0KIApAQCAtNTY5NSw4ICs1NzA0LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Qnl0ZU1ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qnl0ZT4oaW1wbC5ieXRlTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1l
dGhvZEJvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2QiKTsKIH0KIApAQCAtNTcxNiw4ICs1NzI2LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RG
TW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAiYnl0ZU1ldGhvZFdpdGhB
cmdzIik7CiB9CiAKQEAgLTU3MjksOCArNTc0MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kQm9keShKU0M6
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0
aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHk+KCpzdGF0
ZSwgIm9jdGV0TWV0aG9kIik7CiB9CiAKQEAgLTU3NTAsOCArNTc2Miw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0
aG9kV2l0aEFyZ3NCCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0Pihp
bXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
Y3RldE1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2N0ZXRNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsK
IH0KIApAQCAtNTc2Myw4ICs1Nzc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZEJvZHkoSlNDOjoKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZEJvZHk+KCpzdGF0ZSwgImxvbmdNZXRo
b2QiKTsKIH0KIApAQCAtNTc4NCw4ICs1Nzk4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9k
V2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdz
Qm9keT4oKnN0YXRlLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAgLTU3OTcsOCArNTgx
Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZEJvZHkoSlNDOjpFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9iak1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1l
dGhvZEJvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZCIpOwogfQogCkBAIC01ODE4LDggKzU4MzQsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLm9iak1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3Ry
QXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
YmpNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiB9CiAK
QEAgLTU4MzEsOCArNTg0OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2RCb2R5CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVu
Y3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9k
eT4oKnN0YXRlLCAidW5mb3JnZWFibGVNZXRob2QiKTsKIH0KIApAQCAtNTg0OSw4ICs1ODY3LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNTg2Nyw4ICs1ODg2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFhQYXRoTlNSZXMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogfQogCkBAIC01ODgw
LDggKzU5MDAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVs
bGFibGVTdHJpbmdNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kQm9keT4oKnN0YXRlLCAibnVsbGFibGVTdHJp
bmdNZXRob2QiKTsKIH0KIApAQCAtNTg5Miw4ICs1OTEzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z1N0YXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9N
U3RyaW5nPj4oKnN0YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxs
YWJsZVN0cmluZ1N0YXRpY01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2RCb2R5Pigqc3RhdGUsICJudWxs
YWJsZVN0cmluZ1N0YXRpY01ldGhvZCIpOwogfQogCkBAIC01OTA5LDggKzU5MzEsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZVN0cmluZ1NwZWNpYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExO
dWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFs
TWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9k
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQm9k
eT4oKnN0YXRlLCAibnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kIik7CiB9CiAKQEAgLTU5Mjcs
OCArNTk1MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFbnVtQXJnIik7
CiB9CiAKQEAgLTU5NDUsOCArNTk2OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFu
ZGFsb25lRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFy
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFs
b25lRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyIpOwog
fQogCkBAIC01OTYxLDggKzU5ODYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIik7CiB9CiAKQEAgLTU5
NzcsOCArNjAwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVuCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
QW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKIH0KIApAQCAtNTk5Niw4ICs2
MDIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzKFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKIH0KIApAQCAtNjAxNCw4ICs2MDQyLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFVTVlN0cmluZ0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhVU1ZTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoVVNWU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZyIp
OwogfQogCkBAIC02MDMyLDggKzYwNjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVUwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZT
dHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
TnVsbGFibGVVU1ZTdHJpbmdBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZT
dHJpbmdBcmciKTsKIH0KIApAQCAtNjA1MCw4ICs2MDgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0
cmluZ0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmlu
Z0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNjA2OCw4ICs2MDk5LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5
dGVTdHJpbmdBcmciKTsKIH0KIApAQCAtNjA4Niw4ICs2MTE4LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51
bGxhYmxlQnkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyIpOwogfQogCkBAIC02MTA0LDggKzYxMzcsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQnl0ZVN0cmluZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0K
IApAQCAtNjEyMiw4ICs2MTU2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9keSgKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9keT4oKnN0YXRlLCAic2VyaWFsaXplZFZhbHVl
Iik7CiB9CiAKQEAgLTYxNDAsOCArNjE3NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhS
ZWNvcmQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhSZWNvcmQiKTsKIH0KIApAQCAtNjE1NCw4ICs2MTkwLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbkIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC02MTY3LDggKzYy
MDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2Vw
dGlvblJldHVybmluZ0xvbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xv
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1
cm5pbmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmci
KTsKIH0KIApAQCAtNjE4MCw4ICs2MjE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblIKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RX
aXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25S
ZXR1cm5pbmdPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJu
aW5nT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvblJldHVybmluZ09iamVjdEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRp
b25SZXR1cm5pbmdPYmplY3QiKTsKIH0KIApAQCAtNjE5Miw4ICs2MjMxLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
TWV0aG9kQm9keShKU0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1
c3RvbU1ldGhvZCgqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1l
dGhvZEJvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZCIpOwogfQogCkBAIC02MjA0LDggKzYyNDQs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRo
b2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3NCb2R5Pigq
c3RhdGUsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC02MjIxLDggKzYyNjIsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Qcml2YXRlTWV0aG9kQm9keShKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1l
bnQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keSwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAicHJpdmF0ZU1ldGhvZCIp
OwogfQogCkBAIC02MjM4LDggKzYyODAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5w
dWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5k
UHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9k
Qm9keT4oKnN0YXRlLCAicHVibGljQW5kUHJpdmF0ZU1ldGhvZCIpOwogfQogCkBAIC02MjYwLDgg
KzYzMDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQWRkRXZlbnRMaXN0ZW5lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkFkZEV2ZW50TGlzdGVuZXJCb2R5Pigqc3RhdGUsICJhZGRFdmVudExpc3RlbmVyIik7CiB9CiAK
QEAgLTYyODIsOCArNjMyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJCCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lckJvZHk+KCpzdGF0ZSwgInJlbW92
ZUV2ZW50TGlzdGVuZXIiKTsKIH0KIApAQCAtNjI5Niw4ICs2MzQxLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNT
dGF0ZVZvaWRCb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZVZvaWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkQm9k
eT4oKnN0YXRlLCAid2l0aEV4ZWNTdGF0ZVZvaWQiKTsKIH0KIApAQCAtNjMwOSw4ICs2MzU1LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC53aXRoRXhlY1N0YXRlT2JqKCpzdGF0ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVP
YmooRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakJvZHk+KCpzdGF0ZSwgIndpdGhFeGVj
U3RhdGVPYmoiKTsKIH0KIApAQCAtNjMyMyw4ICs2MzcwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZv
aWRFeGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9p
ZEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVj
U3RhdGVWb2lkRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRp
b24iKTsKIH0KIApAQCAtNjMzNiw4ICs2Mzg0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2UK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRo
RXhlY1N0YXRlT2JqRXhjZXB0aW9uKCpzdGF0ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJv
ZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIApAQCAtNjM1Myw4
ICs2NDAyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Qm9keT4oKnN0
YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKIH0KIApAQCAtNjM3MCw4ICs2NDIw
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGUiKTsKIH0KIApAQCAtNjM4Niw4ICs2NDM3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJm
YWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2Vw
dGlvbigqc3RhdGUsICpjb250ZXh0KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2Jq
RXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIApAQCAtNjQwMiw4ICs2NDU0LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJm
YWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAq
Y29udGV4dCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0
aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlV2l0aFNwYWNlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0JvZHk+KCpzdGF0
ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyIpOwog
fQogCkBAIC02NDIxLDggKzY0NzQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1
bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUs
ICJ3aXRoRG9jdW1lbnRBcmd1bWVudCIpOwogfQogCkBAIC02NDM4LDggKzY0OTIsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoQ2FsbGVyRG9jdW1lbnRBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVy
RG9jdW1lbnRBcmd1bWVudCIpOwogfQogCkBAIC02NDUyLDggKzY1MDcsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2Fs
bGVyV2luZG93QXJndQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVy
V2luZG93QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
Q2FsbGVyV2luZG93QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1l
bnQiKTsKIH0KIApAQCAtNjQ2OCw4ICs2NTI0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTY0ODQsOCArNjU0
MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFy
Z0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERl
ZmF1bHRWYWx1ZSIpOwogfQogCkBAIC02NTA0LDggKzY1NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwog
fQogCkBAIC02NTI2LDggKzY1ODUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NCb2R5
Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsK
IH0KIApAQCAtNjU0Miw4ICs2NjAyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7CiB9CiAKQEAgLTY1NTgs
OCArNjYxOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0JvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIpOwogfQogCkBAIC02NTc0LDgg
KzY2MzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdCb2R5
Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nIik7CiB9CiAKQEAgLTY1OTAs
OCArNjY1Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERl
ZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERl
ZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCkBAIC02NjA2LDggKzY2NzAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1
bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKQEAgLTY2MjIsOCArNjY4
Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbCIpOwogfQogCkBAIC02
NjM4LDggKzY3MDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
c1VuZGVmaW5lZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5k
ZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNVbmRlZmluZWRCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc1VuZGVmaW5lZCIpOwogfQogCkBAIC02NjU0LDggKzY3MjEsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGxCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsIik7CiB9CiAKQEAgLTY2
NzAsOCArNjczOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0Vt
cHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNjY4Niw4ICs2NzU1LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVVMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZT
dHJpbmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3Ry
aW5nSXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02NzAyLDggKzY3NzIsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmlu
Z0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
SXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02NzE4LDggKzY3ODksOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxEbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbERvdWJsZUlzTmFOKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTiIpOwogfQogCkBAIC02NzM0LDggKzY4MDYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxGbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU5Cb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxGbG9hdElzTmFOIik7CiB9CiAKQEAgLTY3NTAsOCArNjgyMyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbExvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb25nIik7CiB9CiAKQEAgLTY3NjYsOCArNjg0MCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbExvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0JvZHk+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7CiB9CiAKQEAgLTY3ODIsOCArNjg1
Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWdu
ZWRMb25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xv
bmciKTsKIH0KIApAQCAtNjc5OCw4ICs2ODc0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOwog
fQogCkBAIC02ODE0LDggKzY4OTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogfQogCkBA
IC02ODMwLDggKzY5MDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZUlzRW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlz
RW1wdHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTZXF1ZW5jZUlzRW1wdHlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZUlzRW1wdHkiKTsKIH0KIApAQCAtNjg0Niw4ICs2OTI1LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxCb29sZWFuQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVh
biIpOwogfQogCkBAIC02ODYyLDggKzY5NDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuSXNGYWxzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuSXNGYWxzZSIpOwogfQogCkBAIC02ODc4LDggKzY5NTksOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBbnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBbnlCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiKTsKIH0K
IApAQCAtNjg5NCw4ICs2OTc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2IKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Qm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Iik7CiB9CiAKQEAgLTY5MTAsOCAr
Njk5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlV3JhcHBlckJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
ciIpOwogfQogCkBAIC02OTI2LDggKzcwMTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGxCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiKTsKIH0KIApA
QCAtNjk0Miw4ICs3MDI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jl
c29sdmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsWFBhdGhOU1Jlc29sdmVyQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyIik7CiB9CiAKQEAgLTY5NTgsOCArNzA0NCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFJlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCIp
OwogfQogCkBAIC02OTc0LDggKzcwNjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFBy
b21pc2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlIik7CiB9CiAKQEAg
LTY5OTIsOCArNzA4MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhDYWxsYmFja0FyZyIpOwogfQogCkBAIC03MDEyLDggKzcxMDEsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0FyZyIpOwogfQogCkBAIC03MDI4LDggKzcxMTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tB
bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogfQogCkBAIC03MDQ2LDggKzcxMzcsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogfQogCkBAIC03MDY2LDggKzcxNTgsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKQEAg
LTcwODIsOCArNzE3NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0
aW9uQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKIH0KIApAQCAtNzA5Nyw4
ICs3MTkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRP
cHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAic3Rh
dGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKIH0KIApAQCAtNzExNCw4ICs3
MjA5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0
YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QXJnQm9keT4oKnN0YXRlLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiB9CiAKQEAg
LTcxMjgsOCArNzIyNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJvCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmNvbmRpdGlvbmFs
TWV0aG9kMSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKIH0KIApA
QCAtNzE0NSw4ICs3MjQyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyQm8KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyQm9keT4oKnN0YXRlLCAiY29uZGl0aW9u
YWxNZXRob2QyIik7CiB9CiAKQEAgLTcxNjIsOCArNzI2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kM0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kM0JvZHk+
KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogfQogCkBAIC03MzYzLDggKzc0NjIsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kT3ZlcgogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOwogfQogCkBAIC03NDIwLDggKzc1MjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAog
ICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKIH0KIApAQCAtNzQ2Nyw4ICs3NTY4
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1Vu
aW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rp
bmd1aXNoaW5nVW5pb24iKTsKIH0KIApAQCAtNzUxNiw4ICs3NjE4LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zT3ZlcmxvYWRE
aXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1Vu
aW9ucyIpOwogfQogCkBAIC03NTY0LDggKzc2NjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aAogICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rp
bmd1aXNoaW5nVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRp
c3Rpbmd1aXNoaW5nVW5pb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb25PdmVybG9hZERpc3BhdGNo
ZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIp
OwogfQogCkBAIC03NjEzLDggKzc3MTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZQogICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb25PdmVybG9hZERpc3BhdGNo
ZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24iKTsKIH0KIApAQCAtNzY2Myw4
ICs3NzY4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWwKICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb25PdmVybG9h
ZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24iKTsKIH0KIApA
QCAtNzcxMiw4ICs3ODE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGUKICAgICByZXR1cm4g
YXJnc0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFt
ZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVy
Pigqc3RhdGUsICJvdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVy
Iik7CiB9CiAKQEAgLTc3MjUsOCArNzgzMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RCb2R5KEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0
aG9kIik7CiB9CiAKQEAgLTc3MzksOCArNzg0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KFRlc3RPYmo6OmNsYXNz
TWV0aG9kV2l0aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
T3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhP
cHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsIik7CiB9CiAKQEAg
LTc3NTEsOCArNzg2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyQm9keShKCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmNsYXNzTWV0aG9kMigqc3RhdGUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xh
c3NNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0
aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMkJvZHk+KCpzdGF0ZSwg
ImNsYXNzTWV0aG9kMiIpOwogfQogCkBAIC03ODA0LDggKzc5MTQsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxTwogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDFPdmVybG9hZERpc3Bh
dGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QxIik7CiB9CiAKQEAgLTc4MjYsOCArNzkz
Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENs
YW1wIik7CiB9CiAKQEAgLTc4NDIsOCArNzk1NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1w
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wT25PcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENs
YW1wT25PcHRpb25hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNz
TWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENs
YW1wT25PcHRpb25hbCIpOwogfQogCkBAIC03ODYyLDggKzc5NzUsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhF
bmZvcmNlUmFuZ2UiKTsKIH0KIApAQCAtNzg3OCw4ICs3OTkyLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoRW5mb3IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsQm9k
eT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbCIpOwogfQog
CkBAIC03ODk2LDggKzgwMTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMbwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVu
Y2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWdu
ZWRMb25nU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVu
Y2UiKTsKIH0KIApAQCAtNzkxMyw4ICs4MDI5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkIK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwu
c3RyaW5nQXJyYXlGdW5jdGlvbihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1
bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25Cb2R5Pigqc3RhdGUs
ICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiB9CiAKQEAgLTc5MzAsOCArODA0Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRv
bVN0cmluZ0xpc3RGdW5jdGlvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETElu
dGVyZmFjZTxET01TdHJpbmdMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKCp2YWx1ZXMpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0
RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKIH0KIApAQCAt
Nzk0Niw4ICs4MDY0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmEKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5p
b25QYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBh
cmFtZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldp
dGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyQm9keT4oKnN0YXRlLCAib3BlcmF0aW9uV2l0aE9wdGlv
bmFsVW5pb25QYXJhbWV0ZXIiKTsKIH0KIApAQCAtNzk2Niw4ICs4MDg1LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEFuZFdpdGhvdXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNl
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiB9
CiAKQEAgLTc5ODMsOCArODEwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keShKCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50
Pj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRC
eUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7CiB9CiAKQEAg
LTc5OTYsOCArODExNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Qm9keShKCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdEb2N1bWVudD4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBCaW5kaW5nU2VjdXJpdHk6OmNo
ZWNrU2VjdXJpdHlGb3JOb2RlKCpzdGF0ZSwgaW1wbC5nZXRTVkdEb2N1bWVudCgpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Qm9keT4oKnN0YXRlLCAi
Z2V0U1ZHRG9jdW1lbnQiKTsKIH0KIApAQCAtODAxNCw4ICs4MTM2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFC
b2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keT4oKnN0YXRlLCAiY29udmVydDEiKTsKIH0K
IApAQCAtODAzMiw4ICs4MTU1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDJCb2R5KEpTQzo6RXgKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQyQm9keT4oKnN0YXRlLCAiY29udmVydDIiKTsKIH0KIApAQCAtODA1MCw4ICs4MTc0LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDNCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keT4oKnN0YXRlLCAi
Y29udmVydDMiKTsKIH0KIApAQCAtODA2OCw4ICs4MTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDRCb2R5KEpT
Qzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keT4oKnN0YXRlLCAiY29udmVydDQiKTsKIH0KIApAQCAt
ODA4MSw4ICs4MjA3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0
aW9uQm9keT4oKnN0YXRlLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKIH0KIApAQCAtODA5NSw4
ICs4MjIyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3JhbmdlQm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Jhbmdl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlQm9keT4oKnN0YXRl
LCAib3JhbmdlIik7CiB9CiAKQEAgLTgxMTUsOCArODI0Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5n
TWV0aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhv
ZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiB9CiAKQEAgLTgxMzUsOCAr
ODI2NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljRG91Ymxl
TWV0aG9kIik7CiB9CiAKQEAgLTgxNTUsOCArODI4NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhv
ZEJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZEJvZHk+KCpz
dGF0ZSwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogfQogCkBAIC04MTc1LDggKzgzMDYsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY1VuaW9uTWV0aG9kQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNVbmlvbk1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljVW5pb25NZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJpYWRpY1VuaW9uTWV0aG9kIik7CiB9CiAK
QEAgLTgxOTUsOCArODMyNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueUJvZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkFueShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueUJvZHk+KCpzdGF0
ZSwgImFueSIpOwogfQogCkBAIC04MjA5LDggKzgzNDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4o
KnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogfQogCkBAIC04MjI3LDggKzgzNjEsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJv
bWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpX
aW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50Iik7CiB9CiAKQEAgLTgyNDEsOCArODM3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25X
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9t
aXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC04MjU3LDggKzgzOTMsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSwgUHJvbWlzZUV4ZWN1dGlv
blNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhP
cHRpb25hbEludEFyZ3VtZW50Iik7CiB9CiAKQEAgLTgzMDIsOCArODQzOSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlT3ZlcmxvYWRlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
UmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb25PdmVybG9hZERpc3BhdGNoZXIsIFByb21p
c2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzMTUsOCArODQ1Myw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Cb2R5LCBQ
cm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzMjgsOCArODQ2Nyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2Nv
cGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbiIpOwogfQogCkBAIC04MzQwLDggKzg0ODAsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJv
bWlzZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3Rv
bVByb21pc2VGdW5jdGlvbigqc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0
b21Qcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6Oldp
bmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAK
QEAgLTgzNTIsOCArODQ5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OnRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rp
b24oKnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9t
aXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
UmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4
ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFN0YXRpY0N1c3RvbVBy
b21pc2VGdW5jdGlvbiIpOwogfQogCkBAIC04MzY0LDggKzg1MDYsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9t
UmV0dXJuc093bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1
c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0
dXJuc093blByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5z
T3duUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFJldHVybmluZ093
blByb21pc2U8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blBy
b21pc2VGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1
bmN0aW9uIik7CiB9CiAKQEAgLTgzNzcsOCArODUyMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJv
bWlzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVm9pZD4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RSZXR1cm5zT3du
UHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJv
bWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNP
d25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+Ojpj
YWxsUmV0dXJuaW5nT3duUHJvbWlzZTxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1
cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJl
dHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24iKTsKIH0KIApAQCAtODQzMiw4
ICs4NTc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZE8KICAgICByZXR1cm4gYXJnc0NvdW50
IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3Zl
cmxvYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92
ZXJsb2FkT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7
CiB9CiAKQEAgLTg0ODIsOCArODYyNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlCiAgICAg
cmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZE92ZXJsb2FkRGlzcGF0Y2hl
cj4oKnN0YXRlLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOwogfQogCkBAIC04NTAwLDgg
Kzg2NDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290Qm9keQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQXR0YWNoU2hhZG93Um9vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkF0dGFjaFNoYWRvd1Jvb3RCb2R5Pigqc3RhdGUsICJhdHRhY2hTaGFkb3dSb290Iik7CiB9CiAK
QEAgLTg1MTgsOCArODY2NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5h
bERpY3Rpb25hcnlQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJu
YWxEaWN0aW9uYXJ5UGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlckJvZHk+KCpzdGF0ZSwg
Im9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIiKTsKIH0KIApAQCAtODUz
Niw4ICs4Njg0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyQm9keT4oKnN0YXRlLCAiYnVmZmVy
U291cmNlUGFyYW1ldGVyIik7CiB9CiAKQEAgLTg1NTQsOCArODcwMyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNh
bGxlck5hbWVkQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxlZ2FjeUNhbGxlck5hbWVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJv
ZHk+KCpzdGF0ZSwgImxlZ2FjeUNhbGxlck5hbWVkIik7CiB9CiAKQEAgLTg1NzUsOCArODcyNSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXR1cm5WYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5Pigqc3RhdGUsICJ0
ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iKTsKIH0KIApAQCAtODU5Niw4ICs4NzQ3LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFJldHVyblZhbHVlT3B0aW0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJldHVy
blZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1p
emF0aW9uV2l0aEV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbldpdGhFeGNlcHRpb24iKTsKIH0KIApAQCAtODYxMCw4ICs4NzYyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
Qm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIik7CiB9
CiAKQEAgLTg2MjQsOCArODc3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9Xb3JrZXJGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9Xb3JrZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpOwogfQogCkBAIC04NjM4LDggKzg3OTIsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVu
Y3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29y
a2VyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJjb25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24iKTsKIH0KIApAQCAtODY1
MSw4ICs4ODA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigqc3RhdGUsIGltcGwuc3RyaW5naWZpZXJBdHRy
aWJ1dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9T
dHJpbmciKTsKIH0KIApAQCAtODY4NSw4ICs4ODQxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlY1N0YXRlKiBz
dGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6c2VyaWFsaXplKCpzdGF0
ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA1NjE5NzYw
Mjg4YTkwY2U4MDNhZTVhNDEwODhlYjZlM2IyMTdmNTYwLi4zMjY2Mzc0Zjg3NDA5YzZmYTQ5MDNh
OWQyNjE3ZTI3YzMyMjZlNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCkBAIC03NSw5ICs3NSw5IEBAIGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIAogdXNp
bmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKIAotc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3Rh
dGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Iq
PihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC04OCw5ICs4OCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoRXhlY1N0
YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETElu
dGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVj
U3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0xMDEsOSArMTAxLDkgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihF
eGVjU3RhdGUqIHMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMz
KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTExNCw5ICsxMTQsOSBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMzKEV4ZWNTdGF0ZSogcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3Jl
YXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMTI3LDkgKzEyNyw5IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczQoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0
ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAot
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzNShFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0xNDAsMjYgKzE0MCwy
NiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7
CiB9CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRl
KQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1l
bnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KGdsb2JhbE9iamVjdCwg
c3RhdGUpOwogICAgIH0KICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1
ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAg
ICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVmZmVyPih2bSkpCi0gICAgICAgICAgICByZXR1
cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoc3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKGdsb2Jh
bE9iamVjdCwgc3RhdGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQXJyYXlCdWZmZXJW
aWV3Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgICAgICBpZiAo
ZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0Fy
ZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhnbG9iYWxPYmplY3QsIHN0YXRl
KTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoc3RhdGUpOwot
ICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoc3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM1KGdsb2JhbE9iamVjdCwgc3RhdGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQog
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlLmNwcAppbmRleCAzNzU4OTAxN2NjYTQ0MmNjZmVlYjczN2U5ZGJlNGY5OWJiNTdhOWFlLi4y
YTI5YTQ4YzQ5NGZlY2Q1ZjcxZWVkYzM1ZmYyZDc1ZTU3OTI1N2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
CkBAIC03NCw5ICs3NCw5IEBAIGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsCiAKIHVzaW5nIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT47CiAKLXN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZTEoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKj4oc3Rh
dGUtPmpzQ2FsbGVlKCkpOwpAQCAtODcsOSArODcsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Ux
KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZh
Y2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmpz
Q2FsbGVlKCkpOwpAQCAtMTAwLDIyICsxMDAsMjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMigK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNl
PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi10ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3Rl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7Ci0gICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShz
dGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlMShnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICB9CiAgICAgaWYgKGFy
Z3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShnbG9iYWxP
YmplY3QsIHN0YXRlKTsKICAgICAgICAgaWYgKGhhc0l0ZXJhdG9yTWV0aG9kKCpzdGF0ZSwgZGlz
dGluZ3Vpc2hpbmdBcmcpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKHN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlMShnbG9iYWxPYmplY3QsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKGdsb2JhbE9iamVj
dCwgc3RhdGUpOwogICAgIH0KICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggNDRl
ZmM3MDg1MmUxNGIwMzVlYzliZDkxMmMxYmM0NzJjMDYzMWNkZC4uZjMxYzljMjE5OGM3YThkZDBm
MDE3NmVlNTU5OGQ3NDIwZTc3MDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlv
bnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yMzUsOCArMjM1LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlv
bk5hbWVkSXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5v
ZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0o
V1RGTW92ZShuYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5Pigqc3RhdGUs
ICJuYW1lZEl0ZW0iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcAppbmRleCA1ZDY1YWRhY2FlYTRiOGZkZTgzYjIwN2I3YTRlMDkzZDhiMmM2YzUxLi5i
ZDZjNDkyZjZjNWZiZWVhZWEwZWYzYjI2MGZmOTUxM2JiZDE1ZTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMTU0LDkgKzE1NCw5IEBAIGNsYXNz
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgewogCiB1c2luZyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKIAot
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmlu
ZGV4IDVjMGQ3ODJiYjMyOWYxMTc5OTliMzdjZDJjYjI0ZDIxZDg3MDJmMTYuLmY4OGE2ZTExNzA3
NzZiZmNkODI1ZTM3YjFkYTViYWNhOWU4YTlmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rp
b25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0
dHJpYnV0ZXMKIApAQCAtNjY1LDggKzY2NSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShFeGVjCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUo
KnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXph
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRv
SlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDdlYjE1MjYwOWVjZTk3NGZlODVhNWI2
YWUyMGVkNzI5YWRkNzFkNDAuLmJlMWYzNzg4YjE0Zjk5N2YwNGZjZTY0MWVlNDhjYTdlNDJjZTlm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtNDIs
NyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBB
dHRyaWJ1dGVzCiAKQEAgLTIyMCw4ICsyMjAsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cbwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnNl
cmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FsbDxq
c1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0
YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsLmNwcAppbmRleCBjZjI3MWUyYWNiOGRhZjE1ZmM3NDE5NmMxNjM3Y2QyY2U2
ZDczNDliLi5kY2MzY2VlYzZjZTc5MTQ1ZDkyZThmOTdjOWE0ODE1MjY0ZjVhYmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5h
bFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI1NSw4ICsyNTUsOSBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5j
dGlvblRvSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbDo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRv
SlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWw+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCmluZGV4IDU5YjVlZjZiNTE4NzMxODM2ZWRmMmY3ZjU0NDU2MmY3N2FhZGM0YmIuLjBlZWY0
MTZlMDA0MWVlMTFlZjQ3MmU2YzJiY2U4ZWFjYmNhZTI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC01MSw4ICs1
MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVu
Y3Rpb25SZXR1cm5pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
IC8vIEF0dHJpYnV0ZXMKIApAQCAtMzIzLDggKzMyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGVGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25GdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImZ1bmN0aW9uIik7CiB9CiAKQEAgLTMzNiw4ICsz
MzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4o
KnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZnVuY3Rpb25SZXR1cm5p
bmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVy
bmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5n
Qm9keT4oKnN0YXRlLCAiZnVuY3Rpb25SZXR1cm5pbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAKaW5kZXggZTVjNjJlMzk2NDM1MzEyMGZlYzdhYjgxOTZhYzdiYWM0NmFiMGQ1Ni4u
NzE5NjZmNzYwYzA0YzlkYjdmMTNmNjhlZDIwYzhiNjU5YjNlOWNlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3Nyw4ICsxNzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5n
Qm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXI+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVy
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCmluZGV4IDc1MmUyNjZjYmM3ODg5ZDMzYjZmNmRlMTNjZGY4MTE3MzJmMzdhOTguLjNlMmQ4
ODkwYTk1ZTFlMWIzMThmMzIxYzQ5NTgyODU5YWE5YmQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtNDEsNyArNDEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xNzcsOCArMTc3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uUHJvdG90eXBlRnUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigq
c3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYTAyYTAyMDNhMmNkODM2YTU4MDM1N2YwMjk5MzFl
OTllNDZmYTFkOS4uNDA5MTM4NDZhM2E1MWY1MDg3YzQxOGJmZGJhYTc2MWNhMjgwNTJhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcApAQCAt
NDEsOCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc5LDgg
KzE3OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblBy
b3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNh
bGw8anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllckJvZHk+KCpzdGF0ZSwgImlkZW50aWZpZXIiKTsKIH0KIApAQCAtMTkyLDggKzE5Myw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uUHJvdG90eXBlRnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0
ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXggZTZlZWE5OWMwYzYwODY5NTgw
YzkwZGEyNDliYjU4MDdhYjI2ZmQ0NS4uYzAyY2ZmOTZhNmI5YWFiYTA1NDY5N2E2NzRlYWI1ZjY4
M2M5OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTQxLDggKzQxLDggQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlv
bklkZW50aWZpZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90
eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc5
LDggKzE3OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmFsdGVybmF0ZUlkZW50aWZp
ZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyQm9keT4oKnN0
YXRlLCAiaWRlbnRpZmllciIpOwogfQogCkBAIC0xOTIsOCArMTkzLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcu
Y3BwCmluZGV4IGJjYTBmYWQ4M2M1MWY4OTQxMzJiYjhjYjBmNWZmOTJlYmIyOTE4YzguLmQyMWFj
M2RiMDZmZmM5YzU2YjIzZTY1MjAzODc1ZmVkMWM5NDgwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc3LDggKzE3
Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZz46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNw
cAppbmRleCBjZjBmMTFiMjlmMDQzZGRiNmQ3ZTZhOWE3NmY5MTNjNDhhZGY4MjE3Li4xNjNiZjYy
ZTU5ZWFiMTQ1ZmUxYWVlY2RhMGVhMTUzMTY4Njg3NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCkBAIC00Miw3ICs0Miw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xOTksOCArMTk5LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90
b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAi
dG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggNTdjZWM4NmJlZmU3YjRhZjY4ZDJkNTFhNTNhNGEy
NGM5NTQ1ODAwMS4uNzBjNmZhNWM2YWI5MGNlNTVkMDRiNjAxNzYxNGJmMDRkMjI4NmY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9u
cwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIxOCw4ICsy
MTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZT46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKaW5kZXggNmI4YzA0YWM4ZTE4ZmVkYWJkZjU4MGQ4NWJjZTRlMjk0MzdjMTc1OC4uZDhi
NDM4OTY1YTNlNWI3M2UwMmMzNDQ5MmMxODE3NDY0MWM4ZTc3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCkBAIC02MCwyMSArNjAsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uRnVuYyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3co
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blVuaW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0
cmluZ1NlcXVlbmNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2Vx
dWVuY2VGdW5jdGlvbjIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5j
ZVRoYXRSZXF1aXJlc0luY2x1ZGUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFy
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFi
bGVTZXF1ZW5jZUFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVl
bmNlT2ZVbmlvbnNBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblVuaW9uQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jV2l0aENsYW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMK
IApAQCAtMTQyLDkgKzE0Miw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiVGVzdFN1Yk9iaiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmopLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi10
ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC00OTYsOCArNDk2
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jQm9keShKU0M6OkUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5
Pigqc3RhdGUsICJmdW5jIik7CiB9CiAKQEAgLTUyMiw4ICs1MjMsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNo
YWRvd0JvZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVm
cz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0JvZHk+KCpz
dGF0ZSwgInNldFNoYWRvdyIpOwogfQogCkBAIC01MzksOCArNTQxLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoU2VxdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRM
b25nTG9uZz4oaW1wbC5tZXRob2RXaXRoU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aFNlcXVlbmNlQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyIpOwogfQogCkBAIC01NTcsOCArNTYwLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNl
cXVlbmNlQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5Pigqc3RhdGUsICJudWxsYWJsZVNlcXVlbmNlQXJnIik7
CiB9CiAKQEAgLTU3NSw4ICs1NzksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZO
dWxsYWJsZXNBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VP
Zk51bGxhYmxlc0FyZ0JvZHk+KCpzdGF0ZSwgInNlcXVlbmNlT2ZOdWxsYWJsZXNBcmciKTsKIH0K
IApAQCAtNTkzLDggKzU5OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5j
ZU9mTnVsbGFibGVzQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZO
dWxsYWJsZXNBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keT4oKnN0YXRlLCAibnVsbGFibGVT
ZXF1ZW5jZU9mTnVsbGFibGVzQXJnIik7CiB9CiAKQEAgLTYxMSw4ICs2MTcsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0JvZHk+
KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyIpOwogfQogCkBAIC02MjksOCAr
NjM2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHkoSlMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uVW5pb25BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uVW5pb25BcmdCb2R5Pigqc3RhdGUsICJ1bmlvbkFyZyIpOwogfQogCkBAIC02NDksOCArNjU3
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jV2l0aENsYW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBCb2R5Pigqc3RhdGUsICJmdW5jV2l0aENsYW1wIik7CiB9
CiAKQEAgLTY2Nyw4ICs2NzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJbgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJ
blR5cGVkZWYoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFt
cEluVHlwZWRlZkJvZHk+KCpzdGF0ZSwgImZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYiKTsKIH0KIApA
QCAtNjgwLDggKzY5MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbkJvCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvaW50RnVuY3Rpb24oKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Q
b2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVm
cz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb25Cb2R5
Pigqc3RhdGUsICJwb2ludEZ1bmN0aW9uIik7CiB9CiAKQEAgLTY5Nyw4ICs3MDgsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVz
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAic3Ry
aW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogfQogCkBAIC03MTQsOCArNzI2LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdTZXF1ZW5jZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVu
Y2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwuc3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoV1RGTW92ZSh2YWx1ZXMpKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjJCb2R5Pigqc3RhdGUsICJzdHJp
bmdTZXF1ZW5jZUZ1bmN0aW9uMiIpOwogfQogCkBAIC03MzEsOCArNzQ0LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25D
YWxsV2l0aFNlcXVlbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVh
bj4oaW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVl
bmNlQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRo
U2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlQm9keT4oKnN0YXRlLCAiY2FsbFdpdGhTZXF1ZW5j
ZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKIH0KIApAQCAtNzQ1LDggKzc1OSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEV4Y2VwCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2Vw
dGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxp
dHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCmluZGV4IGZhNDg3MzE1
NmRhZmY2MmI4NTg1NDU1OWJkYTk0NTFmYzM5NmRjYzMuLjllZDcyNWI2ZjI5YjMzOWFlYjA0MmY2
MTE3OTdkMDc0YjU4NjI0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
dXRpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCkBAIC0z
NSw4ICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBJZGVudGlmaWVyOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0KaW5kZXggODQ0MDY0NzUyZjkzZmZiMTQ3Y2IyOTA0ZGM2YjY5NDdh
NGY5YzFlNS4uNzdhMjQxY2U2OGYxMmRiY2Q5OGNlYWUyNjExNzQ4NWU3OGUyNTFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjQ0LDE0ICsyNDQs
MTQgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bE9iakNGYWxsYmFja09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlND
OjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHM8T2JqQ1J1bnRpbWVPYmplY3Q+KHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNVbmRlZmluZWQoKTsKIApAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogICAgIE9iamNJbnN0YW5jZSogb2JqY0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50
ZXJuYWxPYmpDSW5zdGFuY2UoKTsKIAogICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGlt
ZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAg
IAogICAgIG9iamNJbnN0YW5jZS0+YmVnaW4oKTsKIApAQCAtMjY4LDkgKzI2OCw5IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRz
OildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xh
c3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xh
c3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3
aXRoQXJndW1lbnRzOikpKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9
IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5w
cm9wZXJ0eU5hbWUoKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0
YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSkt
PnByb3BlcnR5TmFtZSgpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5h
bWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5n
ZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChj
YWxsRnJhbWUsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAgICB9CiAgICAgICAgICAgICAKICAg
ICBvYmpjSW5zdGFuY2UtPmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAKaW5kZXggZmQ2ZTVlZDcxZjJlMGJjYWYzNTRjZDYyY2UwMjcxOWE1M2FjMTc3OC4uODdm
MTZiMGU4MGI2NzAwNWUxN2NjY2UxNWQ2OTNjYWZkZDYwY2Q0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBCaW5kaW5nczsKIAogV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVNZXRo
b2Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVNZXRob2QpIH07
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9k
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1
bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUnVudGltZU1ldGhv
ZDo6UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgTWV0aG9kKiBtZXRob2QpCiAgICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQgdG8g
cGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgbmF0
aXZlIG9iamVjdCAibWV0aG9kIi4KQEAgLTg1LDM1ICs4NSwzNSBAQCBJc29TdWJzcGFjZSogUnVu
dGltZU1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKICAgICByZXR1cm4gJnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPnJ1bnRpbWVNZXRob2RTcGFjZSgp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1l
TWV0aG9kKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0g
c3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAg
ICBpZiAoIW1ldGhvZC0+bWV0aG9kKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
czxSdW50aW1lT2JqZWN0Pih2bSkpIHsKICAgICAgICAgUnVudGltZU9iamVjdCogcnVudGltZU9i
amVjdCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
ICAgICAgICAgaW5zdGFuY2UgPSBydW50aW1lT2JqZWN0LT5nZXRJbnRlcm5hbEluc3RhbmNlKCk7
CiAgICAgICAgIGlmICghaW5zdGFuY2UpIAotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkp
OworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJv
d0ludmFsaWRBY2Nlc3NFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gQ2FsbGluZyBhIHJ1bnRpbWUgb2JqZWN0IG9mIGEgcGx1Z2luIGVsZW1lbnQ/CiAg
ICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNIVE1MRWxlbWVudD4odm0pKQogICAgICAg
ICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpLT53cmFwcGVkKCkpOwogICAgICAgICBpZiAoIWluc3RhbmNlKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgfQog
ICAgIEFTU0VSVChpbnN0YW5jZSk7CiAKICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VNZXRob2QoZXhlYywgbWV0aG9kKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VNZXRob2QoY2FsbEZyYW1lLCBtZXRob2Qp
OwogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCA4NzNi
YTM0NmJjNGZhM2QyNzdhZDUwNGYyNzczMzBlMjk2MzQyZWMzLi43ZDBlYTM1NmYyM2QzN2JjNmE1
NTUzZjk4Y2MyZmJiMDRmMjM4NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAKQEAgLTIyMiwxMiArMjIyLDEyIEBAIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZGVm
YXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4ZWMtPmpzQ2Fs
bGVlKCktPmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+KGV4ZWMtPnZtKCkpKTsKLSAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlKHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihleGVjLT5qc0Nh
bGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpLT5pbmhlcml0czxSdW50aW1lT2JqZWN0Pihn
bG9iYWxPYmplY3QtPnZtKCkpKTsKKyAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKHN0YXRp
Y19jYXN0PFJ1bnRpbWVPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5nZXRJbnRlcm5h
bEluc3RhbmNlKCkpOwogICAgIGluc3RhbmNlLT5iZWdpbigpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gaW5zdGFuY2UtPmludm9rZURlZmF1bHRNZXRob2QoZXhlYyk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBpbnN0YW5jZS0+aW52b2tlRGVmYXVsdE1ldGhvZChjYWxsRnJhbWUpOwogICAgIGluc3Rh
bmNlLT5lbmQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0y
NDYsMTQgKzI0NiwxNCBAQCBDYWxsVHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBl
eGVjLT5qc0NhbGxlZSgpOwotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+aW5oZXJpdHM8UnVudGlt
ZU9iamVjdD4oZXhlYy0+dm0oKSkpOwotICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Uoc3Rh
dGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nZXRJbnRlcm5hbElu
c3RhbmNlKCkpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxs
ZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3ItPmluaGVy
aXRzPFJ1bnRpbWVPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpOworICAgIFJlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2Uoc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7
Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2Ut
Pmludm9rZUNvbnN0cnVjdChleGVjLCBhcmdzKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1l
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VDb25zdHJ1Y3QoY2FsbEZy
YW1lLCBhcmdzKTsKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAgICAgCiAgICAgQVNTRVJUKHJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmgKaW5kZXggZjUxOGMxMjZhODA3MjNk
NjUyZDU4NDcxOGYxMmFmNmQ4MmU0NGI2ZS4uMzViMTdhZWY1OTY5ZGE4M2YxYWY3M2RiOTQzMzE2
Yzk1NTFjZWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaApAQCAtMzksNyAr
MzksOCBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBB
cnJheUJ1ZmZlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaAppbmRleCA2NzZmYmE4NTMyZjYwYThjNWNkNGI3NTI0MGNlYjliZDkzNmM4
YjNkLi5mNTIyZGY0YmIxMjY3MjEwZTg2Zjg1MWI2ZWI2NjM2MTZlOGE0MGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2UuaApAQCAtMzgsNyArMzgsOCBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oCmlu
ZGV4IDU4OWM4NDFjYzNlODhjZTc5ZTc0MmU3YjJiYjM0YWU5ZTY5ZjA4YWIuLjFmNzgyNDJjNTk2
MmQ4NTFiMWMwYTkyOGFkNjMxY2Q4YmU0MjhhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oCkBAIC0zMiw3ICszMiw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxMGUz
NGQyNTUzMjllMzNkZDA1Mzk1NjcwYmRhOWUwY2UzZWQyOTg2Li42YmY2MTljZDExNjExMjNmM2Zl
NTkwMzg0NmQ3MzMxZjk0ZDY1NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtODEsOCArODEs
OSBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgSW5wdXRDdXJzb3I7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5k
ZXggMjY1NmJiNDM0Y2VlNjcxNzVmZDZiMTVhMGJiOTJjODMxYTA4Y2NhNy4uMGI1ZjNkODdjMDE1
ODQ1NTYyYmM5MjljN2NmOGY4ZWI3NGRmNDk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgK
QEAgLTM2LDkgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVj
dDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGYwZTY1NGI3MzBiOWRlMmE2NTBjY2U1MjQyODQyNmUwNmM5YzEyMmUuLmVm
YjAxNmY1NWM1MzA0ZmRhNmI0NWRhNGMxNzBjNjFkYWIzYTA4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNDAsMTEgKzQwLDEyIEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNQcm9t
aXNlOwogY2xhc3MgVk07CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBkMWY0ZTIwMjUxNmM4
YTkzYzhlMzNmMjYxYjZhZTcwMTNmMzg0MzZhLi40MTQ2ZWU3ZTYyMzMxNDhiNTBiYTA0ZTY3NDA1
NGE2NDFmZGU3NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnkuaAppbmRleCAzMTE1NDg4ZWMwNmZlMzU4NDE1
NjBjYTIxZDQyOTIyNGE4ODY4N2NlLi41ZWY3ZWM0MTAwZTY3YjdkNmFhZWVjZGFhYzZlZDkxNTIx
MzNlNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKQEAgLTMzLDggKzMz
LDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDgwNGYyYmNiMjg5NmZjOTAxYzM1NTRhZDY4MzRhYzFiYWFhNDUzYzAuLjAz
NGUxZWY0NzE1ODFmNDcxYmZmODI4YjVkMTM2Y2Y3Mzk2MTJjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQ2LDgg
KzQ2LDkgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogfQogCiBuYW1lc3BhY2UgSlND
IHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGlt
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRp
bWVBZ2VudC5oCmluZGV4IDBjMTFkMjg0M2M1NTNiOTAyMjM2NmJiZmZiZWNmODQ5MDdmMjM2MmEu
LjE0ODdiMTMxZTZiOWY2ODBhOGIyMmNkY2YzYjk0ZjE1NDUzNzVjNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
aApAQCAtMzYsNyArMzYsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggODhlMzI3YWZmNjhkN2QyZDcz
NTVjMGEwMDEwYjM0OGNhZDFjN2M1My4uYjQ4MjI0ZWJmMmQ2ODYwYzQzYzk1OWE1MWI2ZTVjNDhj
M2ZjMzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC00MiwxMCArNDIsMTEgQEAKICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuaAppbmRleCBmZmJmNjJiMjAxZmUzMTI4NTM4MjE3OGMzNDlkMGFiMmI3NGU1NTcw
Li5kNTZhNmY1ZDExOTgwY2I0ZmIyODdmYTJjNzViMTZkMmQ1Mzk1MDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCkBAIC0zNyw3ICszNyw4IEBAIGNsYXNzIENvbnNv
bGVNZXNzYWdlOwogfQogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5k
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKaW5kZXggOTNmZWUx
ZWJiNGExOTkxMjZhYmY4Nzg4MDMyNjM5Mjk4NmVlZjMwZC4uZjU1YmY2YTFjOTBhZThhOGE3N2Ix
YWU4ZTk5NjM5NDQyZGU1OGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5o
CkBAIC0zMSwxMCArMzEsMTEgQEAKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNP
YmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRl
eCA2YjY0MmYxOTA3NzdjMzBjZDEyODI0ZmRmYjRhNTg4MzQ0ODg4NGI4Li5kYzAyYmY0ZjMwNmVh
ZjI4ZjlmNGE0ZjFjYWIzMDk1OWI2NmQzNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMzcsNyArMzcsOCBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0K
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmgKaW5kZXggN2Y3ZjY0NGU0NzE3ZDk4OWUxMGU1NGRhZTVlMTFlNWMwMWRmZWYyNS4uMmRl
ZGZhOTcyNTY4NTIwNWRjNWI4OWFhMzZlNjU1NjhmYWIyNDhjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApAQCAtMzEsNyArMzEsOCBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2Uu
aAppbmRleCA1ZmFiZGFjNjQ2NzhiNjljYjExMDQxZTZmNzBmOWY2ODJmMzllMDkwLi5kYWYxZDkz
MWJhZjE2NDFkYmVjZWIzOGMyMzExNzQ4YjJiYTdmY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3QmFzZS5oCkBAIC0zNiw5ICszNiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpj
X29iamVjdCogaWQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0
YXRlOworICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAg
ICBjbGFzcyBKU09iamVjdDsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA5NDAwZmE3NzlkYWRjOTZlZDc4NzE0NzNl
YTkxOTYyNTA0ODVmMTljLi45MDUyOWE5ZThlZDE5OWVmOGE0N2FjZWFlYjRkYzUzZTg1MzdmZGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApp
bmRleCBlZTMxYzdjZWM1ZWZlOWZmZmJhNzQwY2MwNWMzYjU4MGY3MGNmOTI0Li44ZTNiZmE4N2Vj
NThmMDY4YTMyOTg0MDlhYTU2YjE0ZjljMDA2MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgK
QEAgLTM4LDkgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmgKaW5kZXggMzg0NmQyNzFiNjhiZDY5ODIwMDBiNTJiOWFiYWI5
NzY3Njc2MTQ2OS4uY2I3ZGY2NzRhZTA4MjA1YzE5MTllNDYzZDZmYzNhN2U0YmMwZWUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKQEAgLTMwLDcg
KzMwLDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKaW5kZXggMGVlODE3
NmVjNTk5Zjc5NDFlZjdjZWNiMDkxNGVkZWVhODU3ZTMxMS4uOTNhOGVhZGQ3MDMwMGNlYzhjNThi
Y2YyYmFjMTFkOTQ3YjMyOGNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCkBAIC0zNSw4ICszNSw5IEBACiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaAppbmRleCA2MzFkYWU5OTAxYWM5YTQzZDIw
ODY5ZWE1ZDgxZmMzMzQ1OGM4ZTkwLi4xYmI3MTNkNzA5YTFkNjgyOGRhYTcyNDlmOTRhN2ZiY2Vi
ZmQxMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29s
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xp
ZW50LmgKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmNwcAppbmRleCBlMDc0M2U0YTFiMGU2MTg5NGY1OTcwMTk5Y2UyM2E1NWEwZDRmODgzLi42YmYw
ODVlZjRhMzliNWNkY2VkYmU2YmZiMmRjZWQxMTBjMzU1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNOUE1ldGhvZCk7CiAKIGNvbnN0IENsYXNzSW5mbyBKU05QTWV0aG9kOjpzX2luZm8gPSB7ICJO
UE1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNOUE1ldGhvZCkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcikKICAgICA6
IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUsIGNhbGxNZXRo
b2QsIG51bGxwdHIpCkBAIC02NiwzMSArNjYsMzEgQEAgSXNvU3Vic3BhY2UqIEpTTlBNZXRob2Q6
OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2
bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5qc0Nh
bGxlZSgpKTsKKyAgICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2Qq
PihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBjYWxsaW5nIGEgbWV0aG9kIG9uIHRoZSBw
bHVnLWluIHNjcmlwdCBvYmplY3QuCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0hUTUxF
bGVtZW50Pih2bSkpIHsKICAgICAgICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAKICAgICAgICAgLy8gVHJ5IHRv
IGdldCB0aGUgc2NyaXB0IG9iamVjdCBmcm9tIHRoZSBlbGVtZW50Ci0gICAgICAgIGlmIChKU09i
amVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpKQor
ICAgICAgICBpZiAoSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChj
YWxsRnJhbWUsIGVsZW1lbnQpKQogICAgICAgICAgICAgdGhpc1ZhbHVlID0gc2NyaXB0T2JqZWN0
OwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNOUE9iamVjdD4odm0pKSB7
CiAgICAgICAgIEpTTlBPYmplY3QqIGpzTlBPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
UE9iamVjdC0+Y2FsbE1ldGhvZChleGVjLCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTlBPYmplY3QtPmNhbGxNZXRob2QoY2Fs
bEZyYW1lLCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwCmluZGV4IGU1NzE1MWMwODQwZmQxOGY1OWQxOWFjMGUwOTMwYjJjOWVhMDNlY2Yu
LjAyYTM3MGE5ZWY1ZGY1NjM4MTVlOTM2ZDc3ZmQyYjcxN2I4MTVlNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTlBKU09iamVjdChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTlBKU09iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBK
U09iamVjdCogb2JqZWN0ID0gZXhlYy0+anNDYWxsZWUoKTsKLSAgICBBU1NFUlQob2JqZWN0LT5p
bmhlcml0czxKU05QT2JqZWN0PihleGVjLT52bSgpKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwg
b2JqZWN0LT5pbmhlcml0czxKU05QT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNDYXN0PEpTTlBPYmplY3QqPihvYmplY3QpLT5jYWxs
T2JqZWN0KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2Jq
ZWN0Kj4ob2JqZWN0KS0+Y2FsbE9iamVjdChjYWxsRnJhbWUpKTsKIH0KIAogSlNDOjpDYWxsVHlw
ZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEpCkBAIC0yNTgsMTIgKzI1OCwxMiBAQCBKU0M6OkNhbGxUeXBlIEpTTlBPYmpl
Y3Q6OmdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0
YQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEFT
U0VSVChjb25zdHJ1Y3Rvci0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZXhlYy0+dm0oKSkpOworICAg
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3ItPmluaGVyaXRzPEpTTlBPYmplY3Q+
KGdsb2JhbE9iamVjdC0+dm0oKSkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nh
c3Q8SlNOUE9iamVjdCo+KGNvbnN0cnVjdG9yKS0+Y2FsbENvbnN0cnVjdG9yKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4oY29uc3RydWN0b3Ip
LT5jYWxsQ29uc3RydWN0b3IoY2FsbEZyYW1lKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNOUE9i
amVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCmluZGV4IDY5Y2E1MTE4MTQzOWRm
ZTljMWQxNjU3M2U1ODY5MDEzYWY3YTBjYWUuLjY2ZjFmYzQwOWIxNjVhMzE0MTliNjU5MDUzYjQ1
MjcyMWI4ODkwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC0zOCwxMSArMzgs
MTIgQEAgc3RydWN0IE5QT2JqZWN0OwogdHlwZWRlZiBzdHJ1Y3QgX05QVmFyaWFudCBOUFZhcmlh
bnQ7CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBD
YWxsRnJhbWU7CiAgICAgY2xhc3MgVk07CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICB1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmluZGV4IDgzNTdkOTFj
YTVjNWMyNGU3ZDY0NzM2Y2VlZWUzYTViMGQ2NjVhZTUuLjc5YzJhNjkxOGViNGM4YTcwOThhNWQ1
OWJiMDA1YzU2MDU4MjhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKQEAgLTM2LDExICszNiwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgQ2FsbEZyYW1l
OwogICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBB
cmdMaXN0OworICAgIHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogQGNsYXNzIFdl
YlNjcmlwdENhbGxGcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380237</attachid>
            <date>2019-10-04 13:01:54 -0700</date>
            <delta_ts>2019-10-04 13:37:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202569-20191004130153.patch</filename>
            <type>text/plain</type>
            <size>1300158</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NTEzM2I5ZDcxZTM3Mzc0YmY1Y2E4MDBiOTdkYmI1YTQwMjY3ZjZkLi5lYjJiNGNlNzg4NDgzNjU4
ZTBiYTQ5YTM2MzEzNjdhMGZjNWNlZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NzcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAg
ICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvQVBJQ2FzdC5oOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9i
YWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNCYXNlSW50ZXJu
YWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUu
aDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRy
eS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
QXR0cmlidXRlRXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVy
YXRvckVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldElu
dGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3Bl
RGVzY3JpcHRpb25zKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU291cmNlSUQpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVl
ZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxs
ZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxl
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxv
Y2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVC
bG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjpyZWdpc3RlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZU9yRW50cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnJldHVyblBDIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNSZXR1cm5QQyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJSZXR1cm5QQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFic3RyYWN0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnRvcE9mRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENh
bGxlckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJl
c3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVj
a2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3Vt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnZXRBcmd1bWVudFVuc2Fm
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldFRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4
ZWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpz
ZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0ZXJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9yUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgorICAg
ICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5oOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAg
ICAgICAqIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6
OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnRTdGRPdXQpOgorICAgICAgICAoZnVuY3Rpb25Qcmlu
dFN0ZEVycik6CisgICAgICAgIChmdW5jdGlvbkRlYnVnKToKKyAgICAgICAgKGZ1bmN0aW9uRGVz
Y3JpYmUpOgorICAgICAgICAoZnVuY3Rpb25EZXNjcmliZUFycmF5KToKKyAgICAgICAgKGZ1bmN0
aW9uU2xlZXBTZWNvbmRzKToKKyAgICAgICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAo
ZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcFNpemUpOgorICAgICAgICAo
ZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspOgorICAgICAgICAoZnVuY3Rpb25BZGRyZXNzT2YpOgor
ICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6CisgICAgICAg
IChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAg
ICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdG
bGFncyk6CisgICAgICAgIChmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyk6CisgICAgICAgIChm
dW5jdGlvbkdldFJhbmRvbVNlZWQpOgorICAgICAgICAoZnVuY3Rpb25TZXRSYW5kb21TZWVkKToK
KyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNl
T3JpZ2luKToKKyAgICAgICAgKGZ1bmN0aW9uUmVhZGxpbmUpOgorICAgICAgICAoZnVuY3Rpb25Q
cmVjaXNlVGltZSk6CisgICAgICAgIChmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pOgorICAg
ICAgICAoZnVuY3Rpb25Ob0RGRyk6CisgICAgICAgIChmdW5jdGlvbk5vRlRMKToKKyAgICAgICAg
KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyk6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCk6CisgICAgICAgIChmdW5jdGlvbkRv
bGxhckNyZWF0ZVJlYWxtKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6Cisg
ICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOgorICAgICAgICAoZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
cG9ydCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U2xlZXApOgorICAgICAgICAoZnVu
Y3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50
R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKToKKyAgICAg
ICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3cpOgorICAgICAgICAoZnVuY3Rpb25X
YWl0Rm9yUmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcENhcGFjaXR5KToKKyAgICAgICAg
KGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKToKKyAgICAgICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKGZ1bmN0aW9uTWFsbG9jSW5BTG9vcCk6CisgICAgICAgIChm
dW5jdGlvblRvdGFsQ29tcGlsZVRpbWUpOgorICAgICAgICAoZnVuY3Rpb25KU0NPcHRpb25zKToK
KyAgICAgICAgKGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KToKKyAgICAgICAgKGZ1
bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3
Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1bmN0aW9uUXVpdCk6CisgICAgICAgIChmdW5jdGlvbkZh
bHNlKToKKyAgICAgICAgKGZ1bmN0aW9uVW5kZWZpbmVkMSk6CisgICAgICAgIChmdW5jdGlvblVu
ZGVmaW5lZDIpOgorICAgICAgICAoZnVuY3Rpb25Jc0ludDMyKToKKyAgICAgICAgKGZ1bmN0aW9u
SXNQdXJlTmFOKToKKyAgICAgICAgKGZ1bmN0aW9uSWRlbnRpdHkpOgorICAgICAgICAoZnVuY3Rp
b25FZmZlY3RmdWw0Mik6CisgICAgICAgIChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAg
ICAgIChmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAoZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Mp
OgorICAgICAgICAoZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMpOgorICAgICAgICAoZnVuY3Rpb25J
czMyQml0UGxhdGZvcm0pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblBs
YXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAgICAgKGZ1bmN0aW9uR2VuZXJh
dGVIZWFwU25hcHNob3QpOgorICAgICAgICAoZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZv
ckdDRGVidWdnaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6
CisgICAgICAgIChmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChmdW5jdGlv
blN0YXJ0U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyk6CisgICAgICAgIChmdW5jdGlvbk1heEFyZ3VtZW50cyk6CisgICAgICAg
IChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KToKKyAgICAgICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFz
c2VkKToKKyAgICAgICAgKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKToKKyAgICAgICAg
KGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAocnVuV2l0
aE9wdGlvbnMpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENh
bGwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEFy
cmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAg
IChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNT
cGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OmF0b21pY3NGdW5jQWRkKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNB
bmQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0NvbXBhcmVFeGNoYW5nZSk6CisgICAgICAg
IChKU0M6OmF0b21pY3NGdW5jRXhjaGFuZ2UpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0lz
TG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0xvYWQpOgorICAgICAgICAoSlND
OjphdG9taWNzRnVuY09yKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNTdG9yZSk6CisgICAg
ICAgIChKU0M6OmF0b21pY3NGdW5jU3ViKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWl0
KToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNXYWtlKToKKyAgICAgICAgKEpTQzo6YXRvbWlj
c0Z1bmNYb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsQmlnSW50Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpiaWdJbnRD
b25zdHJ1Y3RvckZ1bmNBc1VpbnROKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29uc3RydWN0b3JG
dW5jQXNJbnROKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgIChKU0M6OmJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKToKKyAg
ICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoQm9vbGVh
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlh
dGVCb29sZWFuKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29s
ZWFuUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlQ2xpZW50Lmg6CisgICAgICAgICog
cnVudGltZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc29sZUxvZ1dpdGhM
ZXZlbCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNEZWJ1Zyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNFcnJvcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1
bmNMb2cpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jSW5mbyk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNXYXJuKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVu
Y0NsZWFyKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Rpcik6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNEaXJYTUwpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGFibGUpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVHJhY2UpOgorICAgICAg
ICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVBy
b3RvRnVuY0NvdW50KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQp
OgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jUHJvZmlsZSk6CisgICAgICAgIChKU0M6
OmNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1Rha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGlt
ZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY1RpbWVFbmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jVGltZVN0YW1wKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY0dyb3VwRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1JlY29yZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQpOgor
ICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdCk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbERhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUGFyc2UpOgorICAgICAgICAo
SlNDOjpkYXRlTm93SW1wbCk6CisgICAgICAgIChKU0M6OmRhdGVOb3cpOgorICAgICAgICAoSlND
OjpkYXRlVVRDKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9U
aW1lU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAgICAg
KEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51dGVz
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vj
b25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRNaWxsaVNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTWlsbGlz
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNTZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0SG91cnMpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jU2V0RGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldE1vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY1NldFVUQ01vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldEZ1bGxZ
ZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jR2V0WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0pTT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjYWxsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkVycm9yQ29u
c3RydWN0b3I6OnB1dCk6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRp
b25GdXp6Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbEZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Q
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Omluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAg
IChKU0M6OkludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0SW50bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRvcik6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yRnVuY0NvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVH
ZXR0ZXJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6
CisgICAgICAgIChKU0M6OmNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxO
dW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JG
dW5jU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjppbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJ
bnRsUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFBsdXJhbFJ1bGVzKToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KToKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdN
b2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjpjYWxsQXJyYXlCdWZm
ZXIpOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlckZ1bmNJc1ZpZXcpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OnNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aCk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3Vu
ZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OmlzQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc0luc3RhbmNlQm91bmRG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6
CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAoSlNDOjpkYXRhVmll
d1Byb3RvR2V0dGVyQnVmZmVyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCk6CisgICAgICAgIChKU0M6
OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3Rv
RnVuY0dldEludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KToKKyAgICAgICAgKEpT
Qzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldEZs
b2F0NjQpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDgpOgorICAgICAg
ICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZp
ZXdQcm90b0Z1bmNTZXRJbnQzMik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDgpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNik6CisgICAg
ICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1
bmNTZXRGbG9hdDY0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2xvYmFsT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmll
dyk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
bGljZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3Vi
YXJyYXlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6YXNzZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OmVu
cXVldWVKb2IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQYXJzZUludCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQYXJzZUZsb2F0KToKKyAgICAg
ICAgKEpTQzo6Z2xvYmFsRnVuY0RlY29kZVVSSSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNE
ZWNvZGVVUklDb21wb25lbnQpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRW5jb2RlVVJJKToK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudCk6CisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNFc2NhcGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVW5lc2NhcGUp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jQnVpbHRpbkxvZyk6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNCdWlsdGluRGVzY3JpYmUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAg
ICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5j
RGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSk6
CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVy
UmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3Rk
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU09OT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKEpT
Qzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJheVZpZXcp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAgICAgIChK
U0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xh
c3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY1RvU3RyaW5nVGFnKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbE1hcCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAg
IChKU0M6Om1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCk6CisgICAgICAgIChKU0M6Om1hcFBy
aXZhdGVGdW5jTWFwQnVja2V0TmV4dCk6CisgICAgICAgIChKU0M6Om1hcFByaXZhdGVGdW5jTWFw
QnVja2V0S2V5KToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TWFwKToKKyAgICAgICAgKEpTQzo6
bWFwUHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNEZWxldGUpOgor
ICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNIYXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQWJzKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0FDb3MpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbik6CisgICAgICAgIChKU0M6
Om1hdGhQcm90b0Z1bmNBVGFuKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4yKToK
KyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0NlaWwpOgorICAgICAgICAoSlNDOjptYXRoUHJv
dG9GdW5jQ2x6MzIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ29zKToKKyAgICAgICAg
KEpTQzo6bWF0aFByb3RvRnVuY0V4cCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNGbG9v
cik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNIeXBvdCk6CisgICAgICAgIChKU0M6Om1h
dGhQcm90b0Z1bmNMb2cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4KToKKyAgICAg
ICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNQ
b3cpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUmFuZG9tKToKKyAgICAgICAgKEpTQzo6
bWF0aFByb3RvRnVuY1JvdW5kKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1NpZ24pOgor
ICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU2luKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY1NxcnQpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuKToKKyAgICAgICAgKEpT
Qzo6bWF0aFByb3RvRnVuY0lNdWwpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQUNvc2gp
OgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVNpbmgpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jQVRhbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ2JydCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDb3NoKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVu
Y0V4cG0xKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Zyb3VuZCk6CisgICAgICAgIChK
U0M6Om1hdGhQcm90b0Z1bmNMb2cxcCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cx
MCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNMb2cyKToKKyAgICAgICAgKEpTQzo6bWF0
aFByb3RvRnVuY1NpbmgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jVGFuaCk6CisgICAg
ICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUcnVuYyk6CisgICAgICAgICogcnVudGltZS9NYXRoT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9NaWNyb3Rhc2suaDoKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok5hdGl2ZUZ1bmN0aW9uOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFnZ2VkTmF0
aXZlRnVuY3Rpb246Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNh
bGxSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1
cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OmNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlcik6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2Fm
ZUludGVnZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCk6CisgICAgICAgIChKU0M6Om51
bWJlclByb3RvRnVuY1RvRml4ZWQpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1By
ZWNpc2lvbik6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JBc3NpZ24pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChK
U0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVu
c2libGUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJv
cGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAg
ICAgIChKU0M6OnByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0UHJveHlPYmplY3QpOgorICAgICAgICAoSlNDOjpjYWxsUHJveHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3Jt
UHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAg
ICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
UmV2b2tlKToKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpyZWZsZWN0T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0SXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktl
eXMpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMpOgorICAg
ICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dFNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIpOgorICAgICAgICAoSlND
OjpyZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaCk6
CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKToKKyAgICAgICAgKEpT
Qzo6cmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yUmlnaHRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0
b3JJbnB1dCk6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToK
KyAgICAgICAgKEpTQzo6ZXNTcGVjUmVnRXhwQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbFJlZ0V4cENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90
b0Z1bmNUZXN0RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0Z1bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVyTXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJEb3RB
bGwpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclN0aWNreSk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3Rv
R2V0dGVyRmxhZ3MpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclNvdXJjZSk6Cisg
ICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QpOgorICAgICAgICAoSlNDOjpy
ZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAoSlND
OjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRl
RnVuY1NldEJ1Y2tldE5leHQpOgorICAgICAgICAoSlNDOjpzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEtleSk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jQWRkKToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jQ2xlYXIp
OgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNEZWxldGUpOgorICAgICAgICAoSlNDOjpzZXRQ
cm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJv
bUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNh
bGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3Vic3RySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cik6CisgICAgICAgIChKU0M6OmJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1RvTG93ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9VcHBl
ckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6dG9Mb2NhbGVDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
VG9Mb2NhbGVMb3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvY2Fs
ZVVwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RyaW0pOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNUcmltRW5kKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nSW5jbHVkZXNJbXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5j
bHVkZXMpOgorICAgICAgICAoSlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjYWxsU3ltYm9sKToKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JGb3IpOgor
ICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvcktleUZvcik6CisgICAgICAgICogcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0dldHRlckRl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Ro
cm93U2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvV2F0Y2hkb2cuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAg
ICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dl
YWtNYXBTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtSZWYpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
ZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRXZWFrUmVmKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1Jl
ZkRlcmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNhbGxXZWFrU2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6
CisgICAgICAgICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0V2Vha1NldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxldGUpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldEFkZCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OkRPTUpJVEdldHRlckNvbXBsZXg6OmZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6RE9NSklURnVuY3Rpb25PYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmZ1bmN0aW9uV2l0aFR5cGVD
aGVjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVz
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpOgor
ICAgICAgICAoSlNDOjpmdW5jdGlvbkNyYXNoKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25CcmVh
a3BvaW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25ERkdUcnVlKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25GVExUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVNZmVuY2UpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNwdVJkdHNjKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVD
cHVpZCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1UGF1c2UpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkNwdUNsZmx1c2gpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxMaW50VHJ1ZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uSklUVHJ1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTm9J
bmxpbmUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdDKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25FZGVuR0MpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
b2RlQmxvY2tGb3JGcmFtZSk6CisgICAgICAgIChKU0M6OmNvZGVCbG9ja0Zyb21BcmcpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
RHVtcFNvdXJjZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6ZG9QcmludCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGF0YUxvZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJpbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1
bXBDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBTdGFjayk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uRHVtcFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVt
cENlbGwpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblZhbHVl
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRQSUQpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkhhdmVBQmFkVGltZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVQcm94eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUnVu
dGltZUFycmF5KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVOdWxsUm9wZVN0cmluZyk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyQ29tcGxleE9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklU
RnVuY3Rpb25PYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRl
ckJhc2VKU09iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWlu
Z1BhcnNlcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVCdWlsdGluKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25HZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVJvb3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdldEVsZW1lbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVNpbXBsZU9i
amVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblNldEhpZGRlblZhbHVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25TaGFk
b3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0R2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3cpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUmV0dXJu
VHlwZUZvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRW5hYmxl
RGVidWdnZXJNb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkRpc2FibGVEZWJ1
Z2dlck1vZGVXaGVuSWRsZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdo
ZW5JZGxlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkxvYWRHZXR0
ZXJGcm9tR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVDdXN0b21U
ZXN0R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0
ZXJmbGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uVG90YWxHQ1RpbWUpOgorICAgICAgICAo
SlNDOjpmdW5jdGlvblBhcnNlQ291bnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbklzV2FzbVN1
cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRW1iZWRkZXIuaDoKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVG
dW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2Vt
Ymx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlNZW1vcnkpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVs
ZUN1c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRz
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dl
YkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKEpT
Qzo6Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93
KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAg
IChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24pOgorICAgICAgICAqIHlhcnIvWWFyckVycm9yQ29kZS5oOgor
CiAyMDE5LTEwLTA0ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MDU4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYWE2NGI4
ZGIxZGEyMTBhMjQxZGQ0YWI2YjZmMTEwYWQzMGU0NGJhLi5mZWQzOGYxMzdhMzVmMGM0YjEzYzk5
NjZkNjA0ZWNhZDc3N2U5ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMwIEBACisyMDE5LTEw
LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
Q2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFRocm93VHlwZUVycm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6
OmNhbGxUaHJvd1R5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlu
cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVy
YXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUGx1Z2luKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYkFuaW1hdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RKU1dlYkFuaW1hdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXR1
cE1vZHVsZVNjcmlwdEhhbmRsZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZl
ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpz
dHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0ZUxlZ2Fj
eUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKToKKyAgICAgICAgKEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uR2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
RW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZh
bHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ0VSZWFjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlh
bnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25S
ZWd1bGFyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uU3RhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVu
dGFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVk
U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0
aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25F
bnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
ajIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsbEpTVGVzdE9iaik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNy
ZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
WFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJp
bmdTcGVjaWFsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
VVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb25SZXR1cm5pbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhB
cmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1
YmxpY0FuZFByaXZhdGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVW
b2lkRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3Vt
ZW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZh
dWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
QW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRl
ZmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVySXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qx
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRp
b25hbFVuaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25DbGFzc01ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Myk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91Ymxl
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNOb2RlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkFueSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJu
c093blByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxP
dmVybG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNp
bmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZl
clNvdXJjZVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMyk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzNCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzNSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTEpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVGdW5jdGlvbk5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pT
T04pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1By
b3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5j
ZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U2VxdWVuY2VPZk51bGxhYmxlc0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVl
bmNlT2ZVbmlvbnNBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblVuaW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJl
c0luY2x1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0aG9kKToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
Y2FsbFJ1bnRpbWVPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbFJ1bnRpbWVD
b25zdHJ1Y3Rvcik6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdl
UG9ydC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQW55Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmg6CisgICAg
ICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDoKKwogMjAxOS0xMC0wNCAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBz
b21lIGluY2x1ZGVzIHRvIG1ha2UgdGhlIGJ1aWxkIGEgYml0IGZhc3RlcjogRE9NUHJvbWlzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhMTc4ODAwZmVjMzMwM2Q2OGFiZjIzMjliNTdlNzQzMzgyNDUzNzlmLi4wOTgx
NTcyNTEyMDU2NDZkODc2MmRkNzNmNTJmMWExOGM2ZTNlYThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE5LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQ2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhbGxO
UEpTT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6Y29uc3RydWN0V2l0aENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
Lmg6CisKIDIwMTktMTAtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIFNQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDlhYjMwNTI2ZDEyM2QyMjMzMWZjYWE5
MTU5ODdkNjI0N2FlZDM5OTcuLjIwODM3NmRiMzMyNDUwMWY1OWMzYzMzOGI1NDI4MzE1ZGJmMmI2
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0x
MC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IENoYW5nZSBzaWduYXR1cmUgb2YgSG9zdEZ1bmN0aW9uIHRvIChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDI1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaDoKKwogMjAxOS0xMC0wNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNpbXBsaWZ5IHNh
bmRib3ggZW5hYmxpbmcgbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGU1MjgzYjViNDJjZDNjOGRhYTYzZjI5ZmMyZmU5ODg2
MTNkNmM4ZGUuLmVhNzg0OGRlZTFhYjY1MThlYTdkN2M1NWVmMWRlM2IxMWUzYjU4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC0z
Niw3MiArMzYsNzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBBUElDYWxsYmFja0Z1bmN0
aW9uIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNTdGF0ZSopOwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9u
OjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwotICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uUmVmID0gdG9SZWYoZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09i
alJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhl
eGVjLCBOb3RTdHJpY3RNb2RlKSkpOworICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYo
Y2FsbEZyYW1lKTsKKyAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2Fz
dDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgTm90
U3RyaWN0TW9kZSkpKTsKIAotICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50
PihleGVjLT5hcmd1bWVudENvdW50KCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFs
dWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXJndW1lbnRDb3VudCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50
OyBpKyspCi0gICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFw
cGVuZCh0b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsK
IAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVlUmVmIHJlc3VsdDsK
ICAgICB7Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsK
KyAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGNhbGxGcmFtZSk7CiAg
ICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxUKj4odG9KUyhmdW5jdGlvblJlZikpLT5mdW5jdGlvbkNh
bGxiYWNrKCkoZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQs
IGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAgIH0KICAgICBpZiAoZXhjZXB0aW9u
KQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRp
b24pKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxs
RnJhbWUsIGV4Y2VwdGlvbikpOwogCiAgICAgLy8gcmVzdWx0IG11c3QgYmUgYSB2YWxpZCBKU1Zh
bHVlLgogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHJl
c3VsdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhjYWxsRnJhbWUsIHJlc3Vs
dCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVj
dCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEpTQ29udGV4dFJlZiBjdHgg
PSB0b1JlZihleGVjKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPmpz
Q2FsbGVlKCk7CisgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGNhbGxGcmFtZSk7CiAgICAg
SlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7CiAKICAgICBK
U09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2sgPSBqc0Nhc3Q8VCo+KGNv
bnN0cnVjdG9yKS0+Y29uc3RydWN0Q2FsbGJhY2soKTsKICAgICBpZiAoY2FsbGJhY2spIHsKLSAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAg
ICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAg
ICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAgICAgICBhcmd1bWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgICAgICBhcmd1bWVu
dHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KSk7CisgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogCiAgICAgICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgSlNPYmplY3RSZWYgcmVzdWx0OwogICAgICAgICB7
Ci0gICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7Cisg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsK
ICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3RydWN0b3JSZWYsIGFyZ3Vt
ZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gcmVzdWx0IG11c3QgYmUgYSB2YWxpZCBKU1ZhbHVlLgog
ICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMocmVzdWx0
KSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAppbmRleCBiMmYz
ODg4YjY1MWI5N2QzOWM0YzVlMTg0ZjUwMjdkYmRjMDhlMmIwLi4zYjgyMGU5ZTZmMzRmYjYyZWJm
YTg3MjVjOGIzNzk2OWRlNmNiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaApA
QCAtMzMsMTEgKzMzLDEyIEBACiAjaW5jbHVkZSAiSGVhcENlbGxJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAg
ICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgVk07CiAgICAgY2xhc3MgSlNP
YmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dEdyb3VwKiBKU0Nv
bnRleHRHcm91cFJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0Lm1tCmluZGV4IGYwN2EyZGFiYjMwZjU4ZTgxYzZjOGY5OTcyMmZjNzUzZWQ1NmY1N2Uu
LmQ5YTQzMzYzMTE5NDM1YmU1Njc4ZmE2NjE5NWViNGQ0ODhkZmQ5MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtMTc3LDE3ICsxNzcs
MTcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJG
ZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5y
ZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vIG1vZHVsZSBsb2FkZXIgcHJvdmlkZWQu
IikpOwogCiAgICAgYXV0byBkZWZlcnJlZFByb21pc2UgPSBTdHJvbmc8SlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZD4odm0sIGRlZmVycmVkKTsKLSAgICBhdXRvKiByZXNvbHZlID0gSlNOYXRpdmVT
dGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZXNvbHZlIiwgWz1dIChF
eGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBhdXRvKiByZXNvbHZlID0gSlNOYXRpdmVTdGRGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZXNvbHZlIiwgWz1dIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgewogICAgICAgICAvLyBU
aGlzIGNhcHR1cmVzIHRoZSBnbG9iYWxPYmplY3QgYnV0IHRoYXQncyBvayBiZWNhdXNlIG91ciBz
dHJ1Y3R1cmUga2VlcHMgaXQgYWxpdmUgYW55d2F5LgotICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6
dG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpXTsKLSAgICAgICAgaWQgc2Ny
aXB0ID0gdmFsdWVUb09iamVjdChjb250ZXh0LCB0b1JlZihleGVjLCBleGVjLT5hcmd1bWVudCgw
KSkpOworICAgICAgICBpZCBzY3JpcHQgPSB2YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHRvUmVmKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogCiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7CiAKICAgICAgICAgYXV0byByZWplY3RQcm9taXNlID0gWyZdIChTdHJp
bmcgbWVzc2FnZSkgewotICAgICAgICAgICAgYXJncy5hcHBlbmQoY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpKTsKLSAgICAgICAgICAgIGNhbGwoZXhlYywgZGVmZXJyZWRQcm9taXNlLT5K
U1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZlciBiZSBz
ZWVuLi4uIik7CisgICAgICAgICAgICBhcmdzLmFwcGVuZChjcmVhdGVUeXBlRXJyb3IoY2FsbEZy
YW1lLCBtZXNzYWdlKSk7CisgICAgICAgICAgICBjYWxsKGNhbGxGcmFtZSwgZGVmZXJyZWRQcm9t
aXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZl
ciBiZSBzZWVuLi4uIik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7
CiAgICAgICAgIH07CiAKQEAgLTIwNiwxNSArMjA2LDE1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBK
U0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZShtYWtlU3RyaW5nKCJUaGUgc2Ft
ZSBKU1NjcmlwdCB3YXMgcHJvdmlkZWQgZm9yIHR3byBkaWZmZXJlbnQgaWRlbnRpZmllcnMsIHBy
ZXZpb3VzbHk6ICIsIG9sZE1vZHVsZUtleSwgIiBhbmQgbm93OiAiLCBtb2R1bGVLZXkuc3RyaW5n
KCkpKTsKIAogICAgICAgICBhcmdzLmFwcGVuZChzb3VyY2UpOwotICAgICAgICBjYWxsKGV4ZWMs
IGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUoKSwgYXJncywgIlRo
aXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGRl
ZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUoKSwgYXJncywgIlRoaXMg
c2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVm
aW5lZCgpOwogICAgIH0pOwogCi0gICAgYXV0byogcmVqZWN0ID0gSlNOYXRpdmVTdGRGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZWplY3QiLCBbPV0gKEV4ZWNTdGF0ZSog
ZXhlYykgeworICAgIGF1dG8qIHJlamVjdCA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAxLCAicmVqZWN0IiwgWz1dIChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0g
ICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgYXJncy5hcHBl
bmQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKLSAgICAgICAgY2FsbChleGVjLCBkZWZlcnJl
ZFByb21pc2UtPkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxk
IG5ldmVyIGJlIHNlZW4uLi4iKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGRlZmVycmVkUHJv
bWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdCgpLCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2
ZXIgYmUgc2Vlbi4uLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlSW50
ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlSW50ZXJuYWwuaAppbmRl
eCBhMjc0YWY5NmU4YzQwOTk3Njc2NWMxMzM4ZjJlZjJhMWZiZWQxNmZkLi5hMmZjYzVjZGJkOTc4
ZDJhMzRkZTk5MTI5YWZiY2NmODFjMDQwNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQmFzZUludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jhc2VJbnRlcm5hbC5oCkBAIC0yOSw5ICsyOSwxMCBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTTG9ja0hvbGRlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIFNv
dXJjZUNvZGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIGV4dGVybiAiQyIg
SlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0SW50ZXJuYWwoY29uc3QgSlNDOjpKU0xvY2tIb2xk
ZXImLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggYjgzYjEzMzE0
MWIxMDE1NTZiODQ4Y2UzZmZkZmVkNWU3YjhiOGMzMC4uMzcyM2U0MGZlY2I1MTc2ZDk0N2MxZTll
MjQ3MzNiNTAzNTZlZjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKQEAgLTIxOCw4ICsyMTgsOCBAQCBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZp
bmFsIDogcHVibGljIFBhcmVudCB7CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGFzQ2Fs
bGJhY2tPYmplY3QoSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGFzQ2Fs
bGJhY2tPYmplY3QoRW5jb2RlZEpTVmFsdWUpOwogIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAgIAogICAgIEpTVmFsdWUgZ2V0U3RhdGljVmFs
dWUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
c3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCmluZGV4IGM3MjM2MzM5NWIwNDc1YjhlYzE2MmIwNTA4ZDIzYmRhMjc4
MTdkMTEuLmM1NTdmOThmZjdhNTU4ZWZlYWE4OTBiNzE3ZDQzZTc3MGFiNmZlMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCkBAIC00NDEsMzAgKzQ0MSwzMCBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdAogfQogCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+anND
YWxsZWUoKTsKLSAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOworICAgIEpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBKU0NvbnRl
eHRSZWYgZXhlY1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CiAgICAgSlNPYmplY3RSZWYgY29uc3Ry
dWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4oY29uc3RydWN0b3Ip
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsQXNDb25z
dHJ1Y3RvciA9IGpzQ2xhc3MtPmNhbGxBc0NvbnN0cnVjdG9yKSB7Ci0gICAgICAgICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgICAgIHNp
emVfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAg
ICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAgICAgICAgIGFyZ3Vt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgICAgICAg
ICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudChpKSkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQo
dG9SZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAg
ICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU09iamVjdCog
cmVzdWx0OwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSB0
b0pTKGNhbGxBc0NvbnN0cnVjdG9yKGV4ZWNSZWYsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIHRvSlMoY2FsbEZyYW1lLCBleGNlcHRpb24pKTsK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTUxNCwzMCArNTE0LDMwIEBAIENhbGxUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAK
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7Ci0gICAg
SlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBK
U09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNDb250ZXh0UmVm
IGV4ZWNSZWYgPSB0b1JlZihjYWxsRnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoY2FsbEZyYW1lLCBOb3RTdHJpY3RNb2RlKSkpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1Jl
ZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rp
b25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENs
YXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFz
RnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewotICAgICAgICAgICAgc2l6ZV90
IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICAg
ICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgICAgICAgICBhcmd1bWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICAgICAgICAg
IGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoaSkpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRv
UmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogICAgICAg
ICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgSlNWYWx1ZSByZXN1
bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGV4ZWMpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywg
Y2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50
Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICBK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSB0b0pTKGNhbGxGcmFtZSwgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVu
Y3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29w
ZSwgdG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IDhkZWZjMjY3MGMxODJh
OTU1YmZiNjUxN2FjZTQ2NjA0YzVkZjcxNWUuLmQwYTA3NGFiZTU5YzMwYTI3MGJhMTU4Y2NhYjNj
ZDllOTdlNzU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmgKQEAgLTM3LDggKzM3LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1
Y3QgSW5saW5lQ2FsbEZyYW1lOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNGdW5jdGlvbjsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogc3RydWN0
IElubGluZUNhbGxGcmFtZSB7CiAgICAgZW51bSBLaW5kIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggMzFhNmUwZGZkYmQ2ZmU0ODI1NGE5ZDE2OTllYzI3
MWRmYmRiNDBlOC4uMWU1ZWFhOTJjMGEwZjA2Y2JkMmUyOGM5YzQwNTVlZjNkNGIwNDBkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTM0LDE0ICszNCwx
NCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFZNOwogCi10eXBlZGVmIEV4ZWNT
dGF0ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCmluZGV4IDBhNjQ0NDg2ZTM0
ZjcyOWNhM2U0Y2RmOTA1NzdjNTk4NDM4ZTg2NDkuLjNlYmFjYWI3OGEyYmFhNDc5NTg4ZjhlYmEw
ZTU3NTZmOGE2ZWFiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJpdGhNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUu
aApAQCAtMjksNyArMjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogdXNpbmcg
RW5jb2RlZEpTVmFsdWUgPSBpbnQ2NF90OwogCiBuYW1lc3BhY2UgREZHIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNzNjODEyYzFk
NTUxNmUwZWQ1MmI2ZGRlN2M0NzIzNTkxZjc2NTE1Yi4uMjMzM2MyODRjODkzMjY5MzJiYmM1NmFl
NTFlYzkxNDA1ZTc2NDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNz
SW5mbygpICE9IGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSAh
PSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCisgICAgaWYg
KGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBX
ZSBvbmx5IGhhdmUgYW4gaW50cmluc2ljIGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ugc2F5OgpAQCAt
MzczNCw3ICszNzM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNv
bnN0cnVjdG9yKAogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0
KCptX3ZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlKSkKKyAgICBpZiAo
IWZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW5zZXJ0Q2hlY2tzKCk7CkBA
IC0zNzY1LDcgKzM3NjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24oCiAgICAgfQogCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9
PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9i
YWxPYmplY3QoKm1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKQEAgLTM4MDYsNyAr
MzgwNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5j
dGlvbigKICAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAg
ICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZv
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSkt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdE5vZGUpOworICAgICAgICAgICAgcmVz
dWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ09iamVjdFN0cnVj
dHVyZSgpKSksIHJlc3VsdE5vZGUpOwogICAgICAgICAKICAgICAgICAgc2V0KHJlc3VsdCwgcmVz
dWx0Tm9kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzgzMiw5ICszODMyLDkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogCiAgICAg
ICAgIE5vZGUqIHJlc3VsdE5vZGU7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8PSAxKQotICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0
LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0
KCptX3ZtKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSkpKTsKKyAgICAg
ICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1
cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXN1bHROb2RlID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSkpLCBPcEluZm8ocHJlZGlj
dGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KTsKKyAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RDb25zdHJ1
Y3RvciwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSkpLCBP
cEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdp
c3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCAyNmJkNzI4NmRmZmZlNjJhZjY0NDJmYjc4MzIxYjc1NDUyZWU1NGUwLi4xNWFmNDFiZTA0ZTJi
YzgzZjljYjc4YmZmN2UzMGVjMTBlMTBhZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC01Miw3ICs1Miw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTaW5n
bGVSb290R3JhcGg7CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogCiBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5oCmluZGV4IDUwY2IwNjA1YzEwNjdkZTdiZGEyZmUxOGM5ZmNkYzU5MzUxZWFlNzIuLjE3Zjhh
ZWUxZTJkODg4NjkyOTYxZWY5YWVhZGQzNDU3Y2QzMjE3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmgKQEAgLTMzLDggKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNWYw
NWVlMTVmMjRkYzY1OTU3MTA2OTQ3ZjVkN2U2YjEwNmIzNjMxMi4uOWQwMzhiNWYzMmM1NjY5MDQy
NzE3MjIzMjVhNjJmY2U3NDk5ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMzUsNiArNzIzNSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBSZWdp
c3RlcmVkU3RydWN0CiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpKTsKICAg
ICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkpOwogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSksIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApp
bmRleCA3YjBjODlhOTRjYTMyOGVlOTZlZWUwZjRiOTZmZTIyN2NkN2QxZGM4Li4xMDM2OWU0ZTQ5
NDUyNjBkYTdjYzRjMTNhM2Y3MTg2YTZlNDIzNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtODEsNiArODEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oSlNDZWxsX3Vz
ZWZ1bEJ5dGVzLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0X2NsYXNzSW5mbywgSlNEZXN0cnVjdGlibGVPYmplY3Q6
OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9leGVjdXRhYmxlLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkgXAorICAgIG1hY3JvKEpTRnVuY3Rpb25f
Z2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSBcCiAgICAg
bWFjcm8oSlNGdW5jdGlvbl9zY29wZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
IFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJh
cmVEYXRhKCkpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdF9yZWdFeHBHbG9iYWxEYXRhX2Nh
Y2hlZFJlc3VsdF9sYXN0UmVnRXhwLCBKU0dsb2JhbE9iamVjdDo6cmVnRXhwR2xvYmFsRGF0YU9m
ZnNldCgpICsgUmVnRXhwR2xvYmFsRGF0YTo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4
cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0YTVjNTQ1ZTYwYzM5MzA3ZmU0
MmYzNTVjNGI3MjE0M2U0M2Y1ZmQ1Li5lNDFiZmMyN2VkMDEyYzZmZmI5MTQzYTM2NThjN2YyN2Zh
ZTA4NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC01NjA1LDYgKzU2MDUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5zdG9yZVB0cihzY29wZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3Bl
KTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZXhlY3V0YWJsZSksIGZhc3RP
YmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKICAgICAgICAgbV9vdXQuc3Rv
cmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Jh
cmVEYXRhKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9nbG9iYWxPYmpl
Y3QpOwogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKIAogICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFbnRyeS5oCmluZGV4IDQzOWM0YzIwYWU3YTY0YWI5MzExMzA1NTU3YzlkODgw
ZGY1ZGQyZTkuLjVmMDljYjc3MjQyMzlhM2ViOWVkMjI2ZTMxOGQ1ZTY5ZDk4MTRjNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmgKQEAgLTI5LDggKzI5LDkgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNl
IEZUTCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaAppbmRleCA2MjM3OGVmNDM0ZmRmZDNhNDg3NTNmMjg0Yjg0YjgzYmU1NDJmMWQxLi5k
YWMzZGQ1ZGJkOWViZTc4OTE0YjUxMWI3MTkyZWI5NDczNWYyNWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0zOCw3ICszOCw4
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAppbmRleCA1Njhi
Y2FiYzZiMjliN2U4NDY0OWU4MTZjZTk0YTcxYzAzYWQzOTY0Li43ODFlNjYyN2E3YjljYjg1YjNk
MmM4Yzg3Zjk0NjEwOGNmMjU1YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCkBAIC0xMDgsMTUgKzEwOCwxNiBA
QCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIGF1dG8qIHNjcmlwdFN0YXRlID0gbV9pbmpl
Y3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOwogICAgIEpTQzo6Vk0mIHZtID0gc2NyaXB0
U3RhdGUtPnZtKCk7CiAKLSAgICBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb24qIGpzRnVuY3Rpb247
Ci0KKyAgICBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBudWxscHRyOwor
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CiAgICAgewog
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgICAgIGpzRnVuY3Rp
b24gPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgIGlmICghZXhl
YykKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKKyAgICAgICAganNGdW5jdGlvbiA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJiwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lKSB7CisgICAgICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBjaGVj
a0FzeW5jQ2FsbFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFr
aW5nIGEgY2FsbC4iKSwgY2FsbGJhY2spOwotICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZXN1
bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSkp
CisgICAgICAgICAgICBlbHNlIGlmIChhdXRvIHJlc3VsdEpTT05WYWx1ZSA9IHRvSW5zcGVjdG9y
VmFsdWUoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAgICAgICAgICAgICAg
ICAgY2hlY2tBc3luY0NhbGxSZXN1bHQocmVzdWx0SlNPTlZhbHVlLCBjYWxsYmFjayk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2hlY2tBc3luY0NhbGxSZXN1bHQoSlNPTjo6
VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCJPYmplY3QgaGFzIHRvbyBsb25nIHJlZmVyZW5jZSBj
aGFpbiAobXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gIiwgSlNPTjo6VmFsdWU6Om1heERlcHRoLCAn
KScpKSwgY2FsbGJhY2spOwpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRC
YXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rp
b24sCiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgLy8gU2luY2UgYGNhbGxiYWNrYCBpcyBt
b3ZlZCBhYm92ZSwgd2UgY2FuJ3QgY2FsbCBpdCBpZiB0aGVyZSdzIGFuIGV4Y2VwdGlvbiB3aGls
ZSB0cnlpbmcgdG8KICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgYEpTTmF0aXZlU3RkRnVuY3Rpb25g
IGluc2lkZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcy4KLSAgICAgICAganNGdW5jdGlvbi0+bmF0
aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkobnVsbHB0cik7CisgICAgICAgIGpzRnVu
Y3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigpKGdsb2JhbE9iamVjdCwg
bnVsbHB0cik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA3ZTIwMzk5YzhhNzNmMWJh
OGY5ZDE0MGE0ZTg2MDQ0ODQwZjZjYzk1Li5kZDNmM2Q2ODJkZjUyZWRlMTEzOGFiMTUwYzhlZTM0
NzExYjY3MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTM5LDcgKzM5LDggQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggZjBmZmM0NWRkOWZhNmNkZjYxN2YwMzgxZTQ2ZjhkY2ViZmVmM2M4Yy4uMjM3ODdlYTdj
OTFiMTM5M2I3YTQ4YWQxNTAxNDAyNTczYTkwYTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC0zOCwxMCArMzgsMTEgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBFeGNl
cHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCmluZGV4IDBlMWNmOGE5OThiNjc2NDk4ODAzYWNmYzQ4
YTVhNzA1MjVlYzdkZWEuLjdjZmNmODg0ZTJjMTk5MTAxYmQ5Y2RjZDBiMDE2OTJhNjRmNzc3NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCkBAIC0zOCwyNCArMzgsMjQgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0
YWlscyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25X
ZWFrU2V0U2l6ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uUXVlcnlIb2xkZXJzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1
YXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVj
dG9yTmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklz
SFRNTEFsbENvbGxlY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdldFZhbHVl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNp
emUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFw
RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldl
YWtTZXRTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
V2Vha1NldEVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25JdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25RdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkluamVjdGVkU2NyaXB0SG9zdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGUpIH07CiAKQEAgLTg0LDIyNSArODQsMjI1IEBAIHZvaWQg
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lU
SU9OKCJzYXZlZFJlc3VsdEFsaWFzIiwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRy
aWJ1dGVTYXZlZFJlc3VsdEFsaWFzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGUoZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGUoY2FsbEZyYW1lKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVTYXZlZFJlc3VsdEFsaWFzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZl
ZFJlc3VsdEFsaWFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+c2F2ZWRSZXN1bHRBbGlhcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5zYXZlZFJlc3VsdEFsaWFzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
bnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0b3JOYW1lKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0b3JOYW1l
KGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0
ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRNTEFsbENv
bGxlY3Rpb24oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJvbWlzZVJlamVjdGVkV2l0
aE5hdGl2ZUdldHRlclR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21p
c2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRp
dmVHZXR0ZXJUeXBlRXJyb3IoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGNhbGxG
cmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0
ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5wcm94eVRhcmdldFZhbHVlKGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnByb3h5VGFyZ2V0VmFsdWUoY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+d2Vha01hcFNpemUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+d2Vha01hcFNpemUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtN
YXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBFbnRyaWVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha01hcEVu
dHJpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vh
a01hcEVudHJpZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRTaXplKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhp
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoZXhlYykpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoY2FsbEZyYW1lKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bldlYWtTZXRFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9z
dCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVu
dHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3Qq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRo
aXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5pdGVyYXRvckVudHJpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVy
eUluc3RhbmNlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUluc3RhbmNlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnF1ZXJ5SW5z
dGFuY2VzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnF1
ZXJ5SW5zdGFuY2VzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlIb2xkZXJzKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnF1ZXJ5SG9sZGVycyhjYWxsRnJh
bWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
U3VidHlwZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VidHlwZShleGVjKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdWJ0eXBlKGNhbGxGcmFtZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb25EZXRhaWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0
SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uRGV0YWlscyhjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkdldEludGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5nZXRJbnRlcm5hbFByb3BlcnRpZXMoY2Fs
bEZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwCmluZGV4IGI4OTkxY2QyYzdjYjUxNWM3MTMxMDdiODkyZDdlYTZk
YjhjYjVjMDQuLmY4ODdlYzc4M2UwNTFhZWU3OWE5MmQwZDkyMGJkNDg1NzI5MzEzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKQEAgLTM3LDE5ICszNywxOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIC8vIEZ1bmN0aW9ucy4K
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzLgotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5l
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVu
Y3Rpb25OYW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lSXNUYWlsRGVsZXRlZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZUNvbHVtbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlRnVuY3Rpb25OYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVT
Y29wZUNoYWluKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkphdmFTY3JpcHRDYWxsRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZSkgfTsKIApAQCAtNzIsMTQ3ICs3MiwxNDcgQEAgdm9pZCBKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2IKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04oImlzVGFpbERlbGV0
ZWQiLCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0
aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZh
U2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVj
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRp
b25zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVEZXNj
cmlwdGlvbnMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
c2NvcGVEZXNjcmlwdGlvbnMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ2FsbGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlw
dENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5jYWxsZXIoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+Y2FsbGVyKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU291cmNlSUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRD
YWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnNvdXJjZUlEKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnNvdXJjZUlEKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2
YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0
Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5saW5lKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmxpbmUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlQ29sdW1uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNj
cmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+Y29sdW1uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlw
dENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhp
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShjYWxsRnJhbWUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVD
aGFpbihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29w
ZUNoYWluKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1
dGVUaGlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENh
bGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT50aGlzT2JqZWN0KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnR5cGUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+dHlwZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNU
YWlsRGVsZXRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxs
RnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aXNUYWlsRGVsZXRlZChleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pc1RhaWxEZWxldGVkKGNhbGxGcmFtZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5oCmluZGV4IDYwN2ZlYWZiMjA2NjNiNmNjNjg0YTViMDgzMmM0ZGQwYjQ5
MTg5NzUuLjYwMmM4YmE0YzQ4OTdiOWU2YzI4MGRmYmI5MWU3MjM5MzA0ZTZiMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAt
MzcsOCArMzcsOSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oCmluZGV4IDU1Y2E0ZDU3OGYwMzdiNDQ3MDA4MTc3ZmRjOTViZTc4
ZDE5YzJjMzcuLjIzYmIyMTVkYjJjZDE0OTFlZmIxMmIyNmVkZjFkZjVhNWQ4ZWRkMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oCkBAIC0zNSw5ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwot
Y2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggMWVlYjRmOGE4YzY1
MzI3NTBkOGUyZjkzM2FhNjA0NjA1MjBhZTE0MS4uN2VhMmY5YzJmNTM0NGE1ZDc4MGUzYTUwNzgw
NWQ5N2JlNmRhNGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzgsOSArMzgsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFZNOwordXNpbmcg
RXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYzg1N2NkZGZlYmQ3NzEzM2Q5MzIxZDBiY2ZhYzk3
ZjBhMTIyMzhlNy4uYmJmMThiNTU1ZmY4M2YyZGRkNDIzZjBiYTU1ZjZmZmNhYWJjMTlmNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTM2LDcgKzM2LDggQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9BYnN0cmFjdFBDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQWJzdHJhY3RQQy5oCmluZGV4IDQ4MzJkNmRlODI1Mzg1NmNkYjBlNTEyNTQzOWE5Zjk3OTQ2
ZDhmNjguLjQzNTViMjM1NGNjNDk2MDk5YzhkYjUyYTMyYzY3ODU4NTc5ZWEwZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaApAQCAtMjksOCAr
MjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07
Ci1jbGFzcyBFeGVjU3RhdGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEFic3RyYWN0UEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IGRkMjAwZTFhMzUxMDczMTJkMWQwNWUy
NTIyMjQzMzc1YTQ5NDUyODEuLmQwMGMzYzliODI3N2M2Yjc4NDViZDUzZmMyNGZlMDdjMTcyMGM0
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIGNsYXNzIEFyZ3VtZW50
czsKLSAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNz
IEludGVycHJldGVyOwogICAgIGNsYXNzIEpTQ2FsbGVlOwogICAgIGNsYXNzIEpTU2NvcGU7CkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlv
bjsKIAotICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKKyAgICB1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKICAgICBjbGFzcyBDYWxsU2l0ZUluZGV4IHsKICAgICBwdWJsaWM6
CkBAIC05OCw3ICs5OCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIC8vIFJlcHJlc2VudHMg
dGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAvLyBQYXNzZWQgYXMg
dGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgotICAgIGNsYXNzIEV4ZWNTdGF0
ZSA6IHByaXZhdGUgUmVnaXN0ZXIgeworICAgIGNsYXNzIENhbGxGcmFtZSA6IHByaXZhdGUgUmVn
aXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBoZWFkZXJTaXpl
SW5SZWdpc3RlcnMgPSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICsgMTsKIApAQCAtMjAy
LDcgKzIwMiw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFt
ZShDYWxsRnJhbWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZy
YW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpT
U2NvcGUqIHNjb3BlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc2NvcGVSZWdpc3Rl
ck9mZnNldF0gPSBzY29wZTsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGluaXRHbG9iYWxFeGVj
KEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSk7CisgICAgICAg
IHN0YXRpYyB2b2lkIGluaXRHbG9iYWxFeGVjKENhbGxGcmFtZSogZ2xvYmFsRXhlYywgSlNDYWxs
ZWUqIGdsb2JhbENhbGxlZSk7CiAKICAgICAgICAgLy8gUmVhZCBhIHJlZ2lzdGVyIGZyb20gdGhl
IGNvZGVmcmFtZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29kZUJsb2NrKS4KICAgICAgICAgUmVn
aXN0ZXImIHIoaW50KTsKQEAgLTMwMyw4ICszMDMsOCBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAg
ICBwcml2YXRlOgogCi0gICAgICAgIEV4ZWNTdGF0ZSgpOwotICAgICAgICB+RXhlY1N0YXRlKCk7
CisgICAgICAgIENhbGxGcmFtZSgpOworICAgICAgICB+Q2FsbEZyYW1lKCk7CiAKICAgICAgICAg
UmVnaXN0ZXIqIHRvcE9mRnJhbWVJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA1ZGYwNDhjOTk3NzgzYWE0
ZDcxOWIyZDczNDJjYzcyZTVmZGY3YTUzLi5iNjAxZGNmNzAzY2Q5ZWE0YTNiNTNlODhiZWQ4YjNj
NTJkNDVhMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENhbGxGcmFtZSogY2FsbEZy
YQogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJh
bWV0ZXIgZm9yICd0aGlzJy4KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwot
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHNjb3BlKSwgdGhpc09iaiwgMSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5p
dChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzY29wZSksIHRoaXNPYmosIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTg5NCw3ICs4OTQsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGZ1bmN0
aW9uLCBDYWxsVAogICAgIH0KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwot
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVl
LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0Nv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFy
Z3MuZGF0YSgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKQEAgLTk2NSw3ICs5NjUs
NyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1YwogICAgIH0KIAogICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBj
b25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvciwg
bmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0
OwogICAgIHsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0
ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FCiAK
ICAgICBzaXplX3QgYXJnc0NvdW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAKLSAg
ICBwcm90b0NhbGxGcmFtZS0+aW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLCBqc1VuZGVmaW5l
ZCgpLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICBwcm90b0NhbGxGcmFtZS0+aW5pdChu
ZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSwgZnVuY3Rpb24sIGpzVW5kZWZp
bmVkKCksIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwogICAgIC8vIFJldHVybiB0aGUgc3VjY2Vz
c2Z1bCBjbG9zdXJlOgogICAgIENhbGxGcmFtZUNsb3N1cmUgcmVzdWx0ID0geyBjYWxsRnJhbWUs
IHByb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlLCAmdm0sIHNjb3Bl
LCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgfTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE0OSw4ICsxMTQ5LDkgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9
PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KIAorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBQcm90b0NhbGxGcmFt
ZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgSlND
YWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCh2bSksIHNjb3BlKSwgdGhpc1Zh
bHVlLCAxKTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0
LCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwgdGhpc1ZhbHVlLCAx
KTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CkBAIC0xMTk5LDggKzEyMDAsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxl
UHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIC8vIFRo
ZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1l
bnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1y
ZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZy
YW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsK
KyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBKU0NhbGxl
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaApp
bmRleCA1M2U5OGM2MGYzYzZkYTdlNTk3NzU0ZDEwYzRlM2FmYzQ2NDM0NzJhLi43ZGJjNTFjMTY5
ZGNkMGMyMTY5MTAyZTc3MTY5YTQzODc2OTdkYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaApAQCAtNDUsMTQgKzQ1LDIyIEBA
IHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgdWludDMyX3Qg
cGFkZGVkQXJnQ291bnQ7CiAgICAgYm9vbCBoYXNBcml0eU1pc21hdGNoOwogICAgIEpTVmFsdWUg
KmFyZ3M7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdDsKIAotICAgIHZvaWQgaW5p
dChDb2RlQmxvY2sqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdz
ID0gMCk7CisgICAgdm9pZCBpbml0KENvZGVCbG9jayosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90aGVyQXJncyA9IDApOwogCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBjb2RlQmxvY2tWYWx1ZS5SZWdpc3Rlcjo6
Y29kZUJsb2NrKCk7IH0KICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9j
aykgeyBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVCbG9jazsgfQogCiAgICAgSlNPYmplY3QqIGNhbGxl
ZSgpIGNvbnN0IHsgcmV0dXJuIGNhbGxlZVZhbHVlLlJlZ2lzdGVyOjpvYmplY3QoKTsgfQotICAg
IHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgY2FsbGVlVmFsdWUgPSBjYWxsZWU7
IH0KKyAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQorICAgIHsKKyAgICAgICAg
Y2FsbGVlVmFsdWUgPSBjYWxsZWU7CisgICAgfQorICAgIHZvaWQgc2V0R2xvYmFsT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBnbG9iYWxPYmplY3QgPSBvYmpl
Y3Q7CisgICAgfQogCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3Qg
eyByZXR1cm4gYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWUucGF5bG9hZCgpOyB9CiAgICAgaW50
IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIC0gMTsgfQpAQCAtNzgsMTEgKzg2LDEyIEBAIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQ
cm90b0NhbGxGcmFtZSB7CiAgICAgfQogfTsKIAotaW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6
OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCitp
bmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKIHsK
ICAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdzOwogICAgIHRoaXMtPnNldENvZGVCbG9jayhjb2Rl
QmxvY2spOwogICAgIHRoaXMtPnNldENhbGxlZShjYWxsZWUpOworICAgIHRoaXMtPnNldEdsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgaWYgKGNvZGVCbG9jayAmJiBhcmdD
b3VudEluY2x1ZGluZ1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKICAgICAgICAg
dGhpcy0+aGFzQXJpdHlNaXNtYXRjaCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3Rlci5oCmluZGV4IDYwMzg5YjRiYTdlNTYwY2U3N2Y4MmFhZGI4YzMz
MDNlNDk2NmNjMjYuLjlkZDNhY2U1OGQwMmViYmFjYTA0OGFkZDQ0ZjIxZDhjMmIzZjczNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCkBAIC0zNCwx
MyArMzQsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAg
ICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0xl
eGljYWxFbnZpcm9ubWVudDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1Njb3Bl
OwogCi0gICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOworICAgIHVzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIAogICAgIGNsYXNzIFJlZ2lzdGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU2hhZG93Q2hpY2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1NoYWRvd0NoaWNrZW4uaAppbmRleCA4NGI1MmU4MDJlMWFiZmE3MDZhMmU4N2ZhMTYzNDE2ZGYw
YjBmODBkLi4yMDg4MGE2M2M5NzQ1YzllZWJlZGJhNDJiODkzYjA3Y2VkYmQwZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmgKQEAg
LTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNs
YXNzIENvZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQXJyYXk7CiBjbGFzcyBK
U09iamVjdDsKIGNsYXNzIEpTU2NvcGU7CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIGNsYXNzIFNsb3RWaXNpdG9yOwogY2xhc3MgVk07CiAKLXR5cGVkZWYg
RXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogLy8g
U2hhZG93Q2hpY2tlbiBpcyBhIGxvZyB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgYSBzaGFk
b3cgc3RhY2sgb2YgQ0hJQ0tFTi1zdHlsZSBzdGFjayBmcmFtZXMuCiAvLyBUaGlzIGVuYWJsZXMg
dGhlIGRlYnVnZ2VyIHRvIGFsbW9zdCBhbHdheXMgc2VlIHRoZSB0YWlsLWRlbGV0ZWQgc3RhY2sg
ZnJhbWVzLCBzbyBsb25nIGFzIHdlIGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCA2ODY4MzJmM2IyOTYzNjU2MGE5NzdjY2Yw
ODUxN2E2MzVhMmQyM2E0Li5hMzQxYjdhOWQ1Y2M3OTE1NzRkY2VhNjBlYTg1ZTM2M2Y1OWNhZWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5oCkBAIC0zNiwxNiArMzYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgRW50cnlGcmFt
ZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENv
ZGVCbG9jazsKIGNsYXNzIENvZGVPcmlnaW47Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0Nl
bGw7CiBjbGFzcyBKU0Z1bmN0aW9uOwogY2xhc3MgQ2xvbmVkQXJndW1lbnRzOwogY2xhc3MgUmVn
aXN0ZXI7CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIAotdHlwZWRlZiBFeGVjU3RhdGUg
Q2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBTdGFja1Zp
c2l0b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1ZNRW50cnlSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9WTUVudHJ5UmVjb3JkLmgKaW5kZXggNjcyMTg4ZTg5MGIwOTQyOTE0NWQ4NGUxNDE1YmRiMzA1
MWExMzkxZS4uYmU3YmY4ODk4NzlkOTU1ZDhmNDQ4NmQ4MzQxMTAxOTY2Y2FjYWI5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCkBA
IC0zMCw3ICszMCw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEVudHJ5RnJhbWU7Ci1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgVk07CiAKQEAgLTQwLDcgKzQxLDcgQEAgc3RydWN0IFZN
RW50cnlSZWNvcmQgewogICAgICAqIGFmdGVyIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyB3aGVyZSBs
b2NhbCB2YXJpYWJsZXMgd291bGQgZ28uCiAgICAgICovCiAgICAgVk0qIG1fdm07Ci0gICAgRXhl
Y1N0YXRlKiBtX3ByZXZUb3BDYWxsRnJhbWU7CisgICAgQ2FsbEZyYW1lKiBtX3ByZXZUb3BDYWxs
RnJhbWU7CiAgICAgRW50cnlGcmFtZSogbV9wcmV2VG9wRW50cnlGcmFtZTsKICAgICBKU09iamVj
dCogbV9jYWxsZWU7CiAKQEAgLTUyLDggKzUzLDggQEAgc3RydWN0IFZNRW50cnlSZWNvcmQgewog
ICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbMV07CiAjZW5kaWYKIAot
ICAgIEV4ZWNTdGF0ZSogcHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcENhbGxG
cmFtZTsgfQotICAgIFNVUFBSRVNTX0FTQU4gRXhlY1N0YXRlKiB1bnNhZmVQcmV2VG9wQ2FsbEZy
YW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CisgICAgQ2FsbEZyYW1lKiBwcmV2
VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CisgICAgU1VQUFJF
U1NfQVNBTiBDYWxsRnJhbWUqIHVuc2FmZVByZXZUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3By
ZXZUb3BDYWxsRnJhbWU7IH0KIAogICAgIEVudHJ5RnJhbWUqIHByZXZUb3BFbnRyeUZyYW1lKCkg
eyByZXR1cm4gbV9wcmV2VG9wRW50cnlGcmFtZTsgfQogICAgIFNVUFBSRVNTX0FTQU4gRW50cnlG
cmFtZSogdW5zYWZlUHJldlRvcEVudHJ5RnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BFbnRyeUZy
YW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCBiZTlj
MTMwODVkMjk3NTIyOWZhNWQ4ZjdkZWU2OTIxZWM2MTc0ZTRhLi5jMGQ0MmJjNzk2ZGE2ZDc0OGE0
YzE0OWJkYzgwYzlhZDk1ZmNmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmgKQEAgLTQxLDggKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUIDAKICNlbmRpZgogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBTdHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBu
YW1lc3BhY2UgREZHIHsKIGNsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaAppbmRleCBlNWQyOWY5YjQzZWY5NTlkNzI2
NzQ1MzBlYjZlYWM5YzMwYzdlYjQxLi5kMDkxNzIzOGRlZGJhMDJmY2Q2NzI2MmYxMjU5ODU0NGI2
MzJlNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuaApAQCAt
MjcsOCArMjcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAK
IHZvaWQgZ2VuZXJpY1Vud2luZChWTSYsIEV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA2NTZlN2RkODZhYjIzYzk2OGZlOWI3
ODFlZGFhYzRhNWE1ZmJiZDJhLi42Mzk0NjNjOTllOWZkYmI0Nzg5MGVmNjQ5MGM4YjJiMWI1ZWVm
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTk4Nyw3ICs5ODcsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkgewogICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVl
KSk7CisgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qo
dm0pLCBleGVjQ2FsbGVlKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAg
ICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNz
KCksCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRs
ZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgaWYg
KGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewogICAgICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAgICAgZXhlY0NhbGxl
ZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAgICB2bS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4
ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9i
YWxPYmplY3Qodm0pLCBleGVjQ2FsbGVlKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5l
eGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAg
ICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGQyNTMyMzE0
YWY3M2Q5MjU4MDg0MTIwZjZhNWU0OTQxN2ZlY2VlNmIuLjlkYjY3MzQxOTIzZGRlMTE1MjI0ZTIw
ZmQ1YzgwNWE3Y2Q3OGIyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0zOSw5ICszOSw5IEBAIHR5cGVkZWYgaW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsK
IGNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiBjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFz
cyBCdXR0ZXJmbHk7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFz
cyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0FycmF5OwogY2xhc3MgSlND
ZWxsOwogY2xhc3MgSlNGdW5jdGlvbjsKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IElubGluZUNh
bGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBBcml0aFByb2ZpbGU7CiAKLXR5
cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogZXh0ZXJuICJDIiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAppbmRleCAwOGNkMWQwZWNmODA0ODZhMDA3NDZmM2FhNmE4NTU3ZjVkNjQzMWQy
Li42YjJmYjQzMGQ2MDc1MDVjOThkMThkZTQzNjBmODZiMzI0ZjdhMmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yNzEsMzIgKzI3MSwz
OSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVG
b3JHZW5lcmF0b3IoVk0mIHZtLCBUaHVua0Z1bgogI2lmIENQVShYODZfNjQpCiAjaWYgIU9TKFdJ
TkRPV1MpCiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uOiAgICAgIGYoZWRpLCBlc2ksIGVkeCwg
ZWN4LCAuLi4pOwotICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSop
OwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgWDg2UmVn
aXN0ZXJzOjplZGkpOworICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxG
cmFtZVJlZ2lzdGVyLCBYODZSZWdpc3RlcnM6OmVzaSk7CiAKLSAgICBqaXQuZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6OmVz
aSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplZGkpOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9
PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzaSwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZGksIEpTRnVuY3Rpb246
Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5s
b2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWRpLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgWDg2UmVnaXN0ZXJzOjplZGkpOwogICAgICAg
ICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIFg4NlJlZ2lzdGVyczo6cjkpOwotICAgIH0gZWxz
ZQotICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3Rl
cnM6OmVzaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5k
KSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5sb2FkUHRy
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWRpLCBJbnRlcm5hbEZ1bmN0
aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7
CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVy
czo6ZWRpLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgWDg2UmVn
aXN0ZXJzOjplZGkpOworICAgIH0KICAgICBqaXQuY2FsbChYODZSZWdpc3RlcnM6OnI5LCBKU0Vu
dHJ5UHRyVGFnKTsKIAogI2Vsc2UKICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihl
Y3gsIGVkeCwgcjgsIHI5LCAuLi4pOwotICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBm
KEV4ZWNTdGF0ZSopOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJl
OiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3RlcnM6OmVkeCk7CiAKICAgICAvLyBM
ZWF2ZSBzcGFjZSBmb3IgdGhlIGNhbGxlZSBwYXJhbWV0ZXIgaG9tZSBhZGRyZXNzZXMuCiAgICAg
Ly8gQXQgdGhpcyBwb2ludCB0aGUgc3RhY2sgaXMgYWxpZ25lZCB0byAxNiBieXRlcywgYnV0IGlm
IHRoaXMgY2hhbmdlcyBhdCBzb21lIHBvaW50LCB3ZSBuZWVkIHRvIGVtaXQgY29kZSB0byBhbGln
biBpdC4KICAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoNCAqIHNp
emVvZihpbnQ2NF90KSksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
LSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCBYODZSZWdpc3RlcnM6OmVkeCk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplY3gpOwogICAgIGlm
ICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewot
ICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6
OmVkeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5
KTsKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJz
OjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0VudHJ5UHRyVGFnKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0
ZXJzOjplZHgsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2lu
ZCkpLCBKU0VudHJ5UHRyVGFnKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9G
dW5jdGlvbiksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5s
b2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBJbnRlcm5h
bEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgWDg2UmVnaXN0ZXJz
OjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJl
Z2lzdGVyczo6ZWN4LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
WDg2UmVnaXN0ZXJzOjplY3gpOworICAgIH0KKyAgICBqaXQuY2FsbChYODZSZWdpc3RlcnM6OnI5
LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0
ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKICNlbmRpZgpAQCAtMzA2LDE1ICszMTMsMTggQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwg
VGh1bmtGdW4KICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6eDEgIT0gSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QzLCBUM19ub3RfdHJhbXBsZWRfYnlfYXJnXzEpOwogICAgIENPTVBJTEVf
QVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjp4MiAhPSBKU0ludGVyZmFjZUpJVDo6cmVnVDMsIFQzX25v
dF90cmFtcGxlZF9ieV9hcmdfMik7CiAKLSAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTog
ZihFeGVjU3RhdGUqKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1
cmU6IGYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVy
ZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CiAKLSAgICBq
aXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBB
Uk02NFJlZ2lzdGVyczo6eDEpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CiAgICAgaWYgKHRo
dW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7Ci0gICAg
ICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4
MSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJlZ2lzdGVyczo6eDIp
OworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lz
dGVyczo6eDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgQVJNNjRSZWdpc3Rl
cnM6OngyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJN
NjRSZWdpc3RlcnM6OngwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgQVJN
NjRSZWdpc3RlcnM6OngwKTsKICAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFk
ZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEFS
TTY0UmVnaXN0ZXJzOjp4Mik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50
ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MSwgSW50ZXJuYWxGdW5jdGlvbjo6
b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
QVJNNjRSZWdpc3RlcnM6OngwLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0
aW9uRm9yKGtpbmQpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICAgICAgaml0LmxvYWRQdHIo
SlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBJbnRlcm5hbEZ1bmN0
aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAgICB9
CiAgICAgaml0LmNhbGwoQVJNNjRSZWdpc3RlcnM6OngyLCBKU0VudHJ5UHRyVGFnKTsKIAogI2Vs
aWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQpAQCAtMzIzLDE2ICszMzMsMjQgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJh
dG9yKFZNJiB2bSwgVGh1bmtGdW4KICAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tMzIoMTYpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2Vu
ZGlmCiAKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ1QyICE9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdUMiAhPSBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOworCiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uIGlzIGYoYXJndW1lbnRH
UFIwLCBhcmd1bWVudEdQUjEsIC4uLikuCi0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmUg
aXMgZihFeGVjU3RhdGUqKS4KLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOworICAgIC8vIEhvc3QgZnVu
Y3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgaml0
Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6
YXJndW1lbnRHUFIxKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihD
YWxsRnJhbWVTbG90OjpjYWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOworICAg
IGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUs
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlw
ZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBqaXQubG9hZFB0
cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7
Ci0gICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklU
OjpyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0VudHJ5UHRyVGFnKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRl
cmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVG
dW5jdGlvbkZvcihraW5kKSksIEpTRW50cnlQdHJUYWcpOworICAgICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7Cisg
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklU
Ojphcmd1bWVudEdQUjAsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBKU0lu
dGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyLCBleGVjdXRhYmxlT2Zmc2V0VG9G
dW5jdGlvbiksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5k
KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRH
UFIwKTsKKyAgICB9CisKKyAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6cmVnVDIsIEpTRW50
cnlQdHJUYWcpOwogCiAjaWYgQ1BVKE1JUFMpCiAgICAgLy8gUmVzdG9yZSBzdGFjayBzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCBjYjRhYmFmZTQxOTE2YjExODcxNjAwYmIxMjZjN2UwNThh
NzAwNzFkLi4wMjRhODNlZDI1Zjc0NDhjNjA0Mzg5NTQzNDg1Y2VkMTFjYzVmMTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcApAQCAtMjk0LDEwMyArMjk0LDEwMiBAQCBjbGFzcyBXb3JrZXJzIHsKIH07
CiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVH
bG9iYWxPYmplY3QoRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJyKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlc2NyaWJlQXJyYXkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxH
QyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25IZWFwU2l6ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBl
YWsoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmco
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlYWRGaWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZlcklubGlu
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Ob0RGRyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uTm9GVEwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhpdEZ1enppbmcoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk9wdGltaXplTmV4dElu
dm9jYXRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01HQ29tcGlsZWQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ09w
dGlvbnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFp
bE5leHROZXdDb2RlQmxvY2soRXhlY1N0YXRlKik7Ci1zdGF0aWMgTk9fUkVUVVJOX1dJVEhfVkFM
VUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRl
ZmluZWQxKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVu
dGl0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JB
bGxWYXJpYWJsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxh
dGZvcm0oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxl
cihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dp
bmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xv
YmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJpbnRTdGRFcnIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25TbGVlcFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR0NBbmRTd2VlcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RWRlbkdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZU1lbW9yeUZvb3RwcmludChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQWRkcmVzc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNpb24oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVh
ZEZpbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVh
ZGxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2
ZXJJbmxpbmVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Ob0ZUTChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRGdXp6aW5nKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdD
b21waWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkpTQ09wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmFpbE5leHROZXdDb2RlQmxvY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBOT19SRVRVUk5fV0lUSF9WQUxVRSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUXVpdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRl
ZmluZWQxKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNJ
bnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0
ZnVsNDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRpdHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1h
c3F1ZXJhZGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVy
YXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBl
clNhbXBsZXJTdGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVBcnJheVN0b3JhZ2UoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQ
cm9maWxlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmls
ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rl
c3RQYXNzZWQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk1heEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RTdGFydChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1l
bW9yeU1vZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNBTVBMSU5HX0ZMQUdTKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5n
RmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HZXRSYW5kb21TZWVkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRSYW5kb21TZWVkKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1JvcGUoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxl
clNvdXJjZU9yaWdpbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckRldGFjaEFycmF5QnVmZmVy
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVC
cm9hZGNhc3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFNsZWVwKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dEJyb2FkY2FzdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9s
bGFyQWdlbnRNb25vdG9uaWNOb3coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhc2hI
ZWFwQWNjZXNzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29t
cGlsZVRpbWUoRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRvbVNlZWQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1JvcGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRv
bGxhckNyZWF0ZVJlYWxtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlY2VpdmVCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJB
Z2VudEJyb2FkY2FzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRNb25vdG9uaWNOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJlcG9ydChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25IZWFwQ2FwYWNpdHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNoU291cmNlSW5mbyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25NYWxsb2NJbkFMb29wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiBzdHJ1Y3QgU2NyaXB0IHsKICAgICBlbnVtIGNsYXNzIFN0cmlj
dE1vZGUgewpAQCAtNjE5LDcgKzYxOCw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U0dsb2JhbE9iamVjdCB7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIiQyNjIiKSwgZG9sbGFyKTsKICAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCBkb2xsYXIsICJjcmVhdGVSZWFsbSIsIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0sIDAp
OwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZGV0YWNoQXJyYXlCdWZmZXIiLCBm
dW5jdGlvbkRvbGxhckRldGFjaEFycmF5QnVmZmVyLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sIGRvbGxhciwgImRldGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVm
ZmVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBm
dW5jdGlvbkRvbGxhckV2YWxTY3JpcHQsIDEpOwogICAgICAgICAKICAgICAgICAgZG9sbGFyLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9iYWwiKSwgdGhpcyk7
CkBAIC0xMjc0LDQ3ICsxMjczLDQ3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcmludEludGVy
bmFsKEV4ZWNTdGF0ZSogZXhlYywgRklMRSogb3V0KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25QcmludFN0ZE91dChFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIHByaW50SW50ZXJuYWwo
ZXhlYywgc3Rkb3V0KTsgfQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
aW50U3RkRXJyKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gcHJpbnRJbnRlcm5hbChleGVjLCBz
dGRlcnIpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRP
dXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gcHJpbnRJ
bnRlcm5hbChjYWxsRnJhbWUsIHN0ZG91dCk7IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QcmludFN0ZEVycihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKSB7IHJldHVybiBwcmludEludGVybmFsKGNhbGxGcmFtZSwgc3RkZXJyKTsgfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlYnVnKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBhdXRvIHN0cmluZyA9IGNTdHJpbmdGcm9tVmlld1dpdGhTdHJpbmcoZXhlYywgc2NvcGUsIHZp
ZXdXaXRoU3RyaW5nKTsKKyAgICBhdXRvIHN0cmluZyA9IGNTdHJpbmdGcm9tVmlld1dpdGhTdHJp
bmcoY2FsbEZyYW1lLCBzY29wZSwgdmlld1dpdGhTdHJpbmcpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGZwcmludGYoc3RkZXJyLCAiLS0+
ICVzXG4iLCBzdHJpbmcuZGF0YSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVz
Y3JpYmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlm
IChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgdG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgdG9TdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlQXJy
YXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlc2NyaWJlQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRvU3RyaW5nKCI8QnV0dGVyZmx5
OiAiLCBSYXdQb2ludGVyKG9iamVjdC0+YnV0dGVyZmx5KCkpLCAiOyBwdWJsaWMgbGVuZ3RoOiAi
LCBvYmplY3QtPmdldEFycmF5TGVuZ3RoKCksICI7IHZlY3RvciBsZW5ndGg6ICIsIG9iamVjdC0+
Z2V0VmVjdG9yTGVuZ3RoKCksICI+IikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
Pj0gMSkgewotICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzKGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMSkgeworICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzKGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBzbGVlcChzZWNvbmRzKTsKICAg
ICB9CkBAIC0xMzM5LDQ0ICsxMzM4LDQ0IEBAIGNsYXNzIEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9y
IHsKICAgICBTdHJpbmdCdWlsZGVyJiBtX3RyYWNlOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgdHJhY2U7CiAgICAgdHJhY2Uu
YXBwZW5kTGl0ZXJhbCgiLS0+IFN0YWNrIHRyYWNlOlxuIik7CiAKICAgICBGdW5jdGlvbkpTQ1N0
YWNrRnVuY3RvciBmdW5jdG9yKHRyYWNlKTsKLSAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3IpOwor
ICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz
IiwgdHJhY2UudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBbmRTd2VlcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICB2bS5o
ZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0
aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxH
QyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZt
LmhlYXAuc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwog
ICAgIHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZUFmdGVyTGFzdEVkZW5Db2xs
ZWN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhl
YXBTaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25IZWFwU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHZtLmhlYXAuc2l6ZSgpKSk7CiB9CkBAIC0xNDI3LDE0ICsxNDI2LDE0IEBA
IGNsYXNzIEpTQ01lbW9yeUZvb3RwcmludCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NNZW1vcnlGb290cHJpbnQ6OnNfaW5mbyA9IHsgIk1lbW9y
eUZvb3RwcmludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNDTWVtb3J5Rm9vdHByaW50KSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290cHJpbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0NNZW1vcnlG
b290cHJpbnQ6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0NNZW1vcnlGb290cHJpbnQ6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
ZXNldE1lbW9yeVBlYWsoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewog
ICAgIE1lbW9yeUZvb3RwcmludDo6cmVzZXRQZWFrKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NDMsOSArMTQ0Miw5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldE1lbW9yeVBlYWsoRXhlY1N0YXRlKikKIC8vIFRo
aXMgZnVuY3Rpb24gaXMgbm90IGdlbmVyYWxseSB2ZXJ5IGhlbHBmdWwgaW4gNjQtYml0IGNvZGUg
YXMgdGhlIHRhZyBhbmQgcGF5bG9hZAogLy8gc2hhcmUgYSByZWdpc3Rlci4gQnV0IGluIDMyLWJp
dCBKSVRlZCBjb2RlIHRoZSB0YWcgbWF5IG5vdCBiZSBjaGVja2VkIGlmIGFuCiAvLyBvcHRpbWl6
YXRpb24gcmVtb3ZlcyB0eXBlIGNoZWNraW5nIHJlcXVpcmVtZW50cywgc3VjaCBhcyBpbiA9PT0u
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAvLyBOZWVkIHRvIGNhc3QgdG8gdWlu
dDY0X3Qgc28gYml0d2lzZV9jYXN0IHdpbGwgcGxheSBhbG9uZy4KQEAgLTE0NTQsMTU2ICsxNDUz
LDE1MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCiB7CiAgICAgLy8gV2UgbmVlZCB0aGlzIGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggdGhlIE1vemlsbGEgSlMgdGVzdHMgYnV0IGZvciBub3cKICAgICAvLyB3ZSBkb24ndCBh
Y3R1YWxseSBkbyBhbnkgdmVyc2lvbi1zcGVjaWZpYyBoYW5kbGluZwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblJ1bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGNhbGxGcmFtZSwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwogCi0gICAgR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7Cisg
ICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsK
IAotICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgMCk7CisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KHJlYWxtLT5nbG9iYWxFeGVjKCksIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVj
LT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KHJlYWxtLT5nbG9i
YWxFeGVjKCksIGkgLSAxLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQot
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICByZWFsbS0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAgc3Rv
cFdhdGNoLnN0YXJ0KCk7Ci0gICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGpzY1NvdXJjZShzY3JpcHQsIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkg
fSwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CisgICAgZXZhbHVhdGUocmVhbG0t
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQ
YXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKICAgICBz
dG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc2NvcGUsIGV4Y2VwdGlvbik7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKHJlYWxtLT5nbG9iYWxFeGVjKCksIHNjb3BlLCBleGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5n
ZXRFbGFwc2VkTVMoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUnVuU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SdW5TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBq
c051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKKyAgICBKU0Fy
cmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkocmVhbG0tPmdsb2JhbEV4ZWMoKSwgMCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0g
ICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
aSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBhcnJh
eS0+cHV0RGlyZWN0SW5kZXgocmVhbG0tPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAg
IHJlYWxtLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVu
dHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAg
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2UsIGV4
ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOworICAgIGV2
YWx1YXRlKHJlYWxtLT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2UsIGNhbGxGcmFtZS0+
Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CiAKICAgICBpZiAo
ZXhjZXB0aW9uKSB7Ci0gICAgICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOworICAgICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihy
ZWFsbS0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWFsbSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBm
aWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBW
ZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lz
dGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291bGQgbm90
IG9wZW4gZmlsZS4iX3MpKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4g
eyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0
aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIAogICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291
cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRp
b25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBjYWxsRnJhbWUtPmNhbGxlclNv
dXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFk
RmlsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVhZEZpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhl
Yyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgYm9vbCBpc0JpbmFyeSA9IGZhbHNlOwotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgIFN0cmluZyB0eXBlID0gZXhlYy0+YXJndW1l
bnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID4gMSkgeworICAgICAgICBTdHJpbmcgdHlwZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSku
dG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICh0eXBlICE9ICJiaW5hcnkiKQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkICdiaW5h
cnknIGFzIHNlY29uZCBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIkV4cGVjdGVkICdiaW5hcnknIGFzIHNlY29uZCBhcmd1bWVu
dC4iKTsKICAgICAgICAgaXNCaW5hcnkgPSB0cnVlOwogICAgIH0KIAogICAgIFJlZlB0cjxVaW50
OEFycmF5PiBjb250ZW50ID0gZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSk7
CiAgICAgaWYgKCFjb250ZW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKIAogICAgIGlmICgh
aXNCaW5hcnkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0
cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5sZW5ndGgoKSkpKTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlw
ZVVpbnQ4KTsKICAgICBKU09iamVjdCogcmVzdWx0ID0gSlNVaW50OEFycmF5OjpjcmVhdGUodm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShjb250ZW50KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5
bnRheChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2hlY2tTeW50YXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
ZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNj
cmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKLQotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3Jl
YXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7CiAKICAgICBT
dG9wV2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgpOwpAQCAtMTYxMywyNSAr
MTYwNywyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50
YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZh
bGlkU3ludGF4KQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgc3ludGF4RXhj
ZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgc3ludGF4
RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRj
aC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBs
aW5nRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAg
ICAgICAgdW5zaWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQg
ZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAoKGZsYWcgPj0gMSkgJiYgKGZs
YWcgPD0gMzIpKQogICAgICAgICAgICAgU2FtcGxpbmdGbGFnczo6c2V0RmxhZyhmbGFnKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxp
bmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAg
ICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBm
bGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
aSkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICgoZmxhZyA+PSAxKSAmJiAoZmxh
ZyA8PSAzMikpCiAgICAgICAgICAgICBTYW1wbGluZ0ZsYWdzOjpjbGVhckZsYWcoZmxhZyk7CiAg
ICAgfQpAQCAtMTYzOSw0MCArMTYzMyw0MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKIH0KICNlbmRpZgog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFu
ZG9tU2VlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT53ZWFrUmFuZG9tKCkuc2VlZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihnbG9iYWxPYmplY3QtPndlYWtSYW5kb20oKS5zZWVkKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRvbVNlZWQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRvbVNlZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgdW5zaWdu
ZWQgc2VlZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOworICAgIHVuc2lnbmVk
IHNlZWQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvVUludDMyKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWFrUmFuZG9tKCkuc2V0U2VlZChzZWVkKTsKKyAgICBn
bG9iYWxPYmplY3QtPndlYWtSYW5kb20oKS5zZXRTZWVkKHNlZWQpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Jc1JvcGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWFy
Z3VtZW50LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IGFzU3RyaW5nKGFyZ3Vt
ZW50KS0+dHJ5R2V0VmFsdWVJbXBsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oIWltcGwpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNhbGxlclNvdXJjZU9yaWdpbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlclNvdXJjZU9yaWdpbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBTb3VyY2VPcmlnaW4gc291
cmNlT3JpZ2luID0gc3RhdGUtPmNhbGxlclNvdXJjZU9yaWdpbigpOworICAgIFNvdXJjZU9yaWdp
biBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpOwogICAgIGlm
IChzb3VyY2VPcmlnaW4uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoc3RhdGUtPnZt
KCksIHNvdXJjZU9yaWdpbi5zdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2VPcmlnaW4uc3RyaW5nKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZlY3Rvcjxj
aGFyLCAyNTY+IGxpbmU7CiAgICAgaW50IGM7CkBAIC0xNjgzLDYxICsxNjc3LDYxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGxpbmUuYXBwZW5kKGMpOwogICAgIH0KICAgICBsaW5lLmFwcGVuZCgnXDAnKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCksIGxpbmUuZGF0
YSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3Qt
PnZtKCksIGxpbmUuZGF0YSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmVjaXNlVGltZShFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdhbGxUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHNldE5ldmVySW5saW5lKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHNldE5ldmVySW5saW5lKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTm9ERkcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlck9wdGltaXplKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldE5ldmVyT3B0aW1pemUoY2FsbEZy
YW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZUTChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9G
VEwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbihleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbihjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUpCiAgICAgICAgICAgICBleGVjdXRh
YmxlLT5zZXROZXZlckZUTE9wdGltaXplKHRydWUpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c2V0Q2Fubm90VXNlT1NSRXhpdEZ1enppbmcoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2V0Q2Fubm90VXNlT1NSRXhpdEZ1enppbmcoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRp
bWl6ZU5leHRJbnZvY2F0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGltaXplTmV4dEludm9jYXRpb24o
Y2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25O
dW1iZXJPZkRGR0NvbXBpbGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJP
ZkRGR0NvbXBpbGVzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlck9m
REZHQ29tcGlsZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghT3B0aW9uczo6
dXNlQkJRVGllclVwQ2hlY2tzKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKTsKIAogICAgIENhbGxlckZ1bmN0b3Igd2FzbVRvSlNGcmFtZTsKLSAgICBT
dGFja1Zpc2l0b3I6OnZpc2l0KGV4ZWMsICZ2bSwgd2FzbVRvSlNGcmFtZSk7CisgICAgU3RhY2tW
aXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsICZ2bSwgd2FzbVRvSlNGcmFtZSk7CiAgICAgaWYgKCF3
YXNtVG9KU0ZyYW1lLmNhbGxlckZyYW1lKCktPmlzQW55V2FzbUNhbGxlZSgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiY2FsbGVyIGlzIG5vdCBhIHdhc20tPmpz
IGltcG9ydCBmdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJjYWxsZXIgaXMgbm90IGEgd2FzbS0+anMgaW1wb3J0IGZ1bmN0aW9uIik7CiAK
ICAgICAvLyBXZSBoYXZlIGEgd3JhcHBlciBmcmFtZSB0aGF0IHdlIGdlbmVyYXRlIGZvciBpbXBv
cnRzLiBJZiB3ZSBldmVyIGNhbiBkaXJlY3QgY2FsbCBmcm9tIHdhc20gd2Ugd291bGQgbmVlZCB0
byBjaGFuZ2UgdGhpcy4KICAgICBBU1NFUlQoIXdhc21Ub0pTRnJhbWUuY2FsbGVyRnJhbWUoKS0+
Y2FsbGVlKCkuaXNXYXNtKCkpOwpAQCAtMTg2Miw0NSArMTg1Niw0MCBAQCBXb3JrZXJzJiBXb3Jr
ZXJzOjpzaW5nbGV0b24oKQogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxt
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgR2xv
YmFsT2JqZWN0KiByZXN1bHQgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIiQiKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyRGV0YWNoQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IHJldHVybiBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoZXhlYyk7Ci19Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2Ny
aXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0
cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEdsb2JhbE9iamVjdCo+KHZtLAotICAgICAgICBleGVjLT50aGlzVmFsdWUoKS5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbCIpKSk7CisgICAgR2xvYmFsT2Jq
ZWN0KiByZWFsbSA9IGpzRHluYW1pY0Nhc3Q8R2xvYmFsT2JqZWN0Kj4odm0sCisgICAgICAgIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImdsb2JhbCIpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJFeHBlY3RlZCBnbG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zKSkpOworICAg
IGlmICghcmVhbG0pCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgZ2xv
YmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVjdCJfcykpKTsKICAgICAKICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUs
IGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0
aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKHJlYWxtLT5nbG9iYWxFeGVjKCks
IGpzY1NvdXJjZShzb3VyY2VDb2RlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwg
SlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNl
cHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBldmFsdWF0
aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
ZXhlYykuaXNvbGF0ZWRDb3B5KCk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAg
TG9jayBkaWRTdGFydExvY2s7CkBAIC0xOTQyLDE2ICsxOTMxLDE2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBjYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0s
IGNhbGxiYWNrLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgY2FsbGJhY2siX3MpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwg
Y3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgY2FsbGJhY2siX3MpKSk7CiAgICAgCiAg
ICAgUmVmUHRyPE1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgewpAQCAtMTk2MSwyMiArMTk1MCwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZl
QnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgIAogICAgIGF1dG8gbmF0aXZlQnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01v
ZGUoKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShz
aGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CisgICAgSlNBcnJheUJ1ZmZlciog
anNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAg
IAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCdWZm
ZXIpOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKG1lc3NhZ2UtPmluZGV4KCkpKTsKICAgICBp
ZiAoVU5MSUtFTFkoYXJncy5oYXNPdmVyZmxvd2VkKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgY2FsbGJhY2ss
IGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxG
cmFtZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9y
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRSZXBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgU3RyaW5nIHJlcG9ydCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGV4ZWMpOworICAgIFN0cmluZyByZXBvcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgV29ya2Vyczo6c2luZ2xldG9uKCkucmVwb3J0KHJlcG9y
dCk7CkBAIC0xOTg0LDI5ICsxOTczLDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xlZXAoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xlZXAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIFNlY29uZHMgc2Vjb25kcyA9IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOworICAgIGlm
IChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIFNlY29uZHMgc2Vj
b25kcyA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHNsZWVwKHNlY29uZHMpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50QnJv
YWRjYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4o
dm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IGpz
RHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIWpzQnVmZmVyIHx8ICFqc0J1ZmZlci0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIkV4cGVjdGVkIFNoYXJlZEFycmF5QnVmZmVyIl9zKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0
ZUVycm9yKGNhbGxGcmFtZSwgIkV4cGVjdGVkIFNoYXJlZEFycmF5QnVmZmVyIl9zKSkpOwogICAg
IAotICAgIGludDMyX3QgaW5kZXggPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwor
ICAgIGludDMyX3QgaW5kZXggPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvSW50MzIoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAKICAgICBXb3JrZXJzOjpzaW5nbGV0b24oKS5icm9hZGNhc3QoCkBAIC0yMDIxLDkgKzIw
MTAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRC
cm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
b2xsYXJBZ2VudEdldFJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyBzdHJpbmcgPSBXb3Jr
ZXJzOjpzaW5nbGV0b24oKS50cnlHZXRSZXBvcnQoKTsKICAgICBpZiAoIXN0cmluZykKQEAgLTIw
MzIsMTkgKzIwMjEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRv
bGxhckFnZW50R2V0UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCBzdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhFeGVjU3RhdGUqKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50TW9ub3RvbmljTm93KEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJlcG9ydChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJl
cG9ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAg
ICAgU3RyaW5nIHN0cmluZzsKICAgICB7CkBAIC0yMDU3LDIwICsyMDQ2LDIwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBzdHJpbmcpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcENh
cGFjaXR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLmNhcGFjaXR5KCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2Vz
cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Rmxhc2hIZWFwQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICAKICAgICBkb3VibGUgc2xlZXBUaW1lTXMgPSAwOwotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPj0gMSkgewotICAgICAgICBzbGVlcFRpbWVNcyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+
PSAxKSB7CisgICAgICAgIHNsZWVwVGltZU1zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKQEAgLTIwODEsMTMgKzIwNzAsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNoU291cmNlSW5mbyhF
eGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVS
aWNoU291cmNlSW5mbyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgc3VwcG9y
dHNSaWNoU291cmNlSW5mbyA9IGZhbHNlOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25N
YWxsb2NJbkFMb29wKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTWFsbG9jSW5BTG9vcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAg
VmVjdG9yPHZvaWQqPiBwdHJzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA1MDAwOyAr
K2kpCkBAIC0yMDk3LDcgKzIwODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTWFsbG9jSW5BTG9vcChFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Ub3RhbENvbXBpbGVUaW1lKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKEpJVDo6dG90YWxDb21waWxlVGltZSgpLm1pbGxpc2Vjb25kcygpKSk7CkBAIC0yMTE1LDEw
ICsyMTA0LDEwIEBAIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZnVuZGFtZW50YWw8
VmFsdWVUeXBlPjo6dmFsdWU+Ojp0eXBlIGFkZE9wdGlvbihWCiAgICAgb3B0aW9uc09iamVjdC0+
cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU1ZhbHVlKHZhbHVlKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9wdGlvbnNPYmplY3QgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNPYmplY3QqIG9wdGlvbnNPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUp
OwogI2RlZmluZSBSRUFEX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWls
YWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGFkZE9wdGlvbih2bSwgb3B0aW9uc09iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWVfKSwgT3B0aW9uczo6bmFtZV8oKSk7
CiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihSRUFEX09QVElPTikKQEAgLTIxMjYsMjkgKzIxMTUs
MjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ09wdGlvbnMoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9uc09iamVjdCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlv
blJldHJ5Q291bnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQor
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCi0gICAgQ29kZUJsb2NrKiBibG9j
ayA9IGdldFNvbWVCYXNlbGluZUNvZGVCbG9ja0ZvckZ1bmN0aW9uKGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBDb2RlQmxvY2sqIGJsb2NrID0gZ2V0U29tZUJhc2VsaW5lQ29kZUJsb2NrRm9yRnVu
Y3Rpb24oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFibG9jaykKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSk7CiAgICAgCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihibG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJB
cnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZy
YW1lLCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CiAgICAgCi0gICAgSlNBcnJheUJ1ZmZl
ciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJy
YXlCdWZmZXIqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFidWZmZXIp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiX3MpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIl9z
KSkpOwogICAgIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgZHVtbXlDb250ZW50czsKICAgICBi
dWZmZXItPmltcGwoKS0+dHJhbnNmZXJUbyh2bSwgZHVtbXlDb250ZW50cyk7CkBAIC0yMTU2LDE2
ICsyMTQ1LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2Zl
ckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmFpbE5leHROZXdDb2RlQmxvY2soRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uc2V0RmFpbE5leHROZXdD
b2RlQmxvY2soKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmNvZGVDYWNo
ZSgpLT53cml0ZSh2bSk7CiAKICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkBAIC0yMTc2LDIz
ICsyMTY1LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4
ZWNTdGF0ZSogZXhlYykKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmFsc2UoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFs
c2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGZhbHNlKSk7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblVuZGVmaW5lZDEoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZp
bmVkMihFeGVjU3RhdGUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
IH0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQx
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5k
ZWZpbmVkMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsgfQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklzSW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0g
ICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoaSkuaXNJbnQzMigpKQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBp
ZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoaSkuaXNJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFOKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1
bWVudChpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoaSk7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAgICAgICAgIGRvdWJsZSBudW1i
ZXIgPSB2YWx1ZS5hc051bWJlcigpOwpAQCAtMjIwNCw0OSArMjE5Myw0OSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNQdXJlTmFOKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVudGl0eShFeGVjU3RhdGUqIGV4ZWMpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKSk7IH0KK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVudGl0eShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVj
dGZ1bDQyKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RWZmZWN0ZnVsNDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoNDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KHZhbHVlKS0+aGFzQ3VzdG9tUHJvcGVydGll
cyhleGVjLT52bSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc09iamVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoZ2xvYmFsT2JqZWN0LT52bSgp
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJp
YWJsZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmR1bXBUeXBlUHJvZmlsZXJEYXRhKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uZHJh
aW5NaWNyb3Rhc2tzKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFr
UmVmcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgdm0uZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0aW9uKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUqKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0ZhbHNlKSk7CkBAIC0yMjU1
LDM0ICsyMjQ0LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMy
Qml0UGxhdGZvcm0oRXhlY1N0YXRlKikKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMp
OworICAgIFN0cmluZyBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgp
OwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNr
TW9kdWxlU3ludGF4KGV4ZWMsIGpzY1NvdXJjZShzb3VyY2UsIHsgfSwgVVJMKCksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsKKyAgICBi
b29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoY2FsbEZyYW1lLCBqc2NTb3VyY2Uo
c291cmNlLCB7IH0sIFVSTCgpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlOjpNb2R1bGUpLCBlcnJvcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRT
eW50YXgpCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwgZXJyb3IubWVzc2FnZSgpLCAiOiIs
IGVycm9yLmxpbmUoKSkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29w
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygiU3ludGF4RXJyb3I6ICIsIGVycm9y
Lm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2Zp
bGVyKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxh
dGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU1RydWUpKTsKQEAgLTIyOTEsOSArMjI4MCw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqCiAjZW5kaWYKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFw
c2hvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMzAxLDE0ICsyMjkwLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgc25hcHNob3RCdWlsZGVyLmJ1aWxkU25hcHNob3QoKTsKIAogICAgIFN0cmlu
ZyBqc29uU3RyaW5nID0gc25hcHNob3RCdWlsZGVyLmpzb24oKTsKLSAgICBFbmNvZGVkSlNWYWx1
ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsK
KyAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGNh
bGxGcmFtZSwganNvblN0cmluZykpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlv
bigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBT
bmFwc2hvdEZvckdDRGVidWdnaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJpbmcganNvblN0cmluZzsKQEAgLTIz
MjQsNjYgKzIzMTMsNjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdl
bmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoRXhlY1N0YXQKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBqc29uU3RyaW5nKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEV4ZWNTdGF0
ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBs
ZXJTdGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmVzZXRTdXBlclNh
bXBsZXJTdGF0ZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVBcnJheVN0
b3JhZ2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkVuc3VyZUFycmF5U3RvcmFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAg
ICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhl
Yy0+YXJndW1lbnQoaSkpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkg
eworICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3Qq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudChpKSkpCiAgICAgICAgICAgICBvYmplY3QtPmVuc3Vy
ZUFycmF5U3RvcmFnZSh2bSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNh
bXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBTYW1wbGluZ1Byb2ZpbGVyJiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uZW5zdXJl
U2FtcGxpbmdQcm9maWxlcihXVEY6OlN0b3B3YXRjaDo6Y3JlYXRlKCkpOwogICAgIHNhbXBsaW5n
UHJvZmlsZXIubm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKCk7CiAgICAg
c2FtcGxpbmdQcm9maWxlci5zdGFydCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
YW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXZtLnNh
bXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIlNhbXBsaW5nIHByb2ZpbGVy
IHdhcyBuZXZlciBzdGFydGVkIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwg
IlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIl9zKSkpOwogCiAgICAgU3RyaW5n
IGpzb25TdHJpbmcgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7
Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShl
eGVjLCBqc29uU3RyaW5nKSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsKICAgICBzY29wZS5yZWxl
YXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmIC8v
IEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk1heEFyZ3VtZW50cyhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1heEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihKU0M6Om1heEFyZ3VtZW50
cykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0
U3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkFzeW5jVGVzdFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKCFudW1iZXJPZkFzeW5jUGFzc2VzLmlzVUludDMyKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhIHVpbnQzMiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGEgdWludDMyIl9zKTsK
IAogICAgIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzICs9IG51bWJlck9mQXN5bmNQYXNzZXMuYXNV
SW50MzIoKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoRXhlY1N0YXRlKikK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIGFzeW5jVGVzdFBhc3NlcysrOwogICAg
IHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTIzOTEsMzYgKzIzODAsMzYgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3NlZChFeGVjU3Rh
dGUqKQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2Vt
Ymx5TWVtb3J5TW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgCiAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBzaG91bGQg
b25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlvbiBpcyBzZXQiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1i
bHkgb3B0aW9uIGlzIHNldCJfcyk7CiAKLSAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMt
PmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CisgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBt
ZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNZW1vcnkqPih2bSwgb2JqZWN0KSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIG1ha2VTdHJp
bmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CiAgICAgICAgIGlmIChhdXRvKiBpbnN0YW5j
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4odm0sIG9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBtYWtlU3RyaW5n
KGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgZXhwZWN0cyBlaXRo
ZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkgb3IgV2ViQXNzZW1ibHkuSW5zdGFuY2UiX3MpOworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJseU1l
bW9yeU1vZGUgZXhwZWN0cyBlaXRoZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkgb3IgV2ViQXNzZW1i
bHkuSW5zdGFuY2UiX3MpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LT5p
c0Z1bmN0aW9uKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IAotICAgIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2sodm0sIG9iamVjdCk7CisgICAgZ2xvYmFsT2JqZWN0LT5zZXRVbmhhbmRsZWRSZWpl
Y3Rpb25DYWxsYmFjayh2bSwgb2JqZWN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC0yNjY2LDEzICsyNjU1LDEzIEBAIHN0YXRpYyB2b2lkIHJ1
bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0
aW9ucywgYm9vCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogCi0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdWxmaWxsSGFuZGxlciA9IEpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwgWyZzdWNj
ZXNzLCAmb3B0aW9ucywgaXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7Ci0gICAgICAgICAg
ICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywganNDYXN0PEdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIGlzTGFzdEZpbGUsIGZhbHNlLCBleGVjLT5hcmd1bWVudCgw
KSwgb3B0aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdWxmaWxsSGFu
ZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBT
dHJpbmcoKSwgWyZzdWNjZXNzLCAmb3B0aW9ucywgaXNMYXN0RmlsZV0oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbihjYWxsRnJhbWUsIGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpLCBpc0xhc3RGaWxlLCBmYWxzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgb3B0aW9ucywg
c3VjY2Vzcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBKU0Z1bmN0aW9uKiByZWpl
Y3RIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RGaWxlXShFeGVjU3RhdGUq
IGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihleGVjLCBqc0Nhc3Q8R2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgaXNMYXN0RmlsZSwgdHJ1
ZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAgSlNG
dW5jdGlvbiogcmVqZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwgWyZzdWNjZXNzLCAmb3B0aW9ucywgaXNMYXN0Rmls
ZV0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsK
KyAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihjYWxsRnJhbWUsIGpzQ2FzdDxHbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLCBpc0xhc3RGaWxlLCB0cnVlLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAppbmRleCAyYjczNjAyYTgzMmQw
YWQ0YWZmNDY3YjY1MWY2M2IxMmIyZTZhNDZjLi4yYTNlNzVkYzRhN2Q4ZWVlNTBlZGFjYzA2YzI3
NzYxMjVhMWZkNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKIG5hbWVzcGFjZSBMTEludCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBjMGIzMTYxYTY4YjYx
NWYyYjg0NTViZjBlZjVmMTc5MjNmN2YyOTM4Li4zNGU2NTE3N2Y3MGJlMDFhZTM5Yjk4MTQ0OGQ2
Yzk3NjViZjVmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5
cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwK
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7CiAgICAgICAgICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAgICAgICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgICAgIHZt
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxl
ZSktPmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVI
b3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLAogICAgIGlmIChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKICAgICAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5W
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVj
Q2FsbGVlKSk7CisgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFs
T2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwogICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
Q2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGMyNGMyZDg2MWE2ZGU5ZWFiZTRmYTEy
YmQ2ZjBiYTk3ODM4ZjU4NTQuLmFlNzhmNGE4YzVjMGFkZTY4NTg1ZWFkM2FjZGI0MzNhODhkMmI2
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBA
IC0zMCw3ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CiBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
NjVmOTI0ZmJkNTA1NDgzZjIwMmUxMmY5YzQ1ZTQzNmViYzI0Y2M4MC4uZTRiOGU1MDI1NTQwYzFk
YWY2Nzk0YTI5NGRlOTRjODBkZjUzMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTI2Miw3ICsy
NjIsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgc3RvcmVwIHNwLCBWTTo6dG9w
Q2FsbEZyYW1lW3ZtXQogICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BFbnRyeUZyYW1lW3ZtXQogCi0g
ICAgbWFrZUNhbGwoZW50cnksIHQzLCB0NCkKKyAgICBtYWtlQ2FsbChlbnRyeSwgcHJvdG9DYWxs
RnJhbWUsIHQzLCB0NCkKIAogICAgIGlmIEFSTXY3CiAgICAgICAgIHZtRW50cnlSZWNvcmQoY2Zy
LCB0MykKQEAgLTMxOSw3ICszMTksOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAg
cmV0CiBlbmQKIAotbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQp
CisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHByb3Rv
Q2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwg
c3AKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wLCAweGJhZDBkYzAyKQogICAg
IGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0zMzEsMjQgKzMzMiwyOCBAQCBtYWNybyBtYWtl
SmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKICAgICBzdWJwIENhbGxlckZyYW1l
QW5kUENTaXplLCBzcAogZW5kCiAKLW1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0
ZW1wMSwgdGVtcDIpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2Fs
bChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICBtb3ZlIGVudHJ5LCB0
ZW1wMQogICAgIHN0b3JlcCBjZnIsIFtzcF0KICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgot
ICAgICAgICBtb3ZlIHNwLCBhMAorICAgICAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFs
T2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICAgICAgbW92ZSBzcCwgYTEKICAgICAgICAg
c3RvcmVwIGxyLCBQdHJTaXplW3NwXQogICAgICAgICBjbG9vcENhbGxOYXRpdmUgdGVtcDEKICAg
ICBlbHNpZiBYODYgb3IgWDg2X1dJTgotICAgICAgICAjIFB1dCBjYWxsZWUgZnJhbWUgcG9pbnRl
ciBvbiBzdGFjayBhcyBhcmcwLCBhbHNvIHB1dCBpdCBpbiBlY3ggZm9yICJmYXN0Y2FsbCIgdGFy
Z2V0cworICAgICAgICAjIFB1dCBjYWxsZWUgZnJhbWUgcG9pbnRlciBvbiBzdGFjayBhcyBhcmcx
LCBhbHNvIHB1dCBpdCBpbiBlY3ggZm9yICJmYXN0Y2FsbCIgdGFyZ2V0cwogICAgICAgICBtb3Zl
IDAsIHRlbXAyCiAgICAgICAgIG1vdmUgdGVtcDIsIDRbc3BdICMgcHV0IDAgaW4gUmV0dXJuUEMK
LSAgICAgICAgbW92ZSBzcCwgYTAgIyBhMCBpcyBlY3gKLSAgICAgICAgcHVzaCB0ZW1wMiAjIFB1
c2ggZHVtbXkgYXJnMQorICAgICAgICBtb3ZlIHNwLCBhMSAjIGExIGlzIGVkeAorICAgICAgICBs
b2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAg
ICAgICAgcHVzaCBhMQogICAgICAgICBwdXNoIGEwCiAgICAgICAgIGNhbGwgdGVtcDEKICAgICAg
ICAgYWRkcCA4LCBzcAogICAgIGVsc2UKLSAgICAgICAgbW92ZSBzcCwgYTAKKyAgICAgICAgbG9h
ZHAgUHJvdG9DYWxsRnJhbWU6Omdsb2JhbE9iamVjdFtwcm90b0NhbGxGcmFtZV0sIGEwCisgICAg
ICAgIG1vdmUgc3AsIGExCiAgICAgICAgIGNhbGwgdGVtcDEKICAgICBlbmQKIGVuZApAQCAtMTk5
NywxMiArMjAwMiwxMyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zm
c2V0VG9GdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQxCiAgICAgICAg
IGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92
bVt0MV0sIHQzCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVbdDNdCi0gICAg
ICAgIG1vdmUgY2ZyLCBhMCAgIyBhMCA9IGVjeAotICAgICAgICBzdG9yZXAgYTAsIFtzcF0KLSAg
ICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQotICAgICAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEg
ICMgYTEgPSBlZHgKKyAgICAgICAgc3RvcmVwIGExLCBbc3BdCisgICAgICAgIGxvYWRpIENhbGxl
ZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTAKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9l
eGVjdXRhYmxlW2EwXSwgYTIKKyAgICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9iYWxPYmpl
Y3RbYTBdLCBhMAogICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFk
MDAwMSkKLSAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAg
ICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0KICAgICAgICAgbG9hZHAgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFz
aywgdDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9j
azo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKQEAgLTIwMjAsMTQgKzIwMjYsMTUgQEAgbWFjcm8gbmF0
aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIGFu
ZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9m
ZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MQogICAgICAgICBzdG9yZXAg
Y2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QxXQotICAgICAgICBtb3ZlIGNmciwgYTAKLSAgICAgICAg
bG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQotICAgICAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEKKyAgICAg
ICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMAorICAgICAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbYTBdLCBhMgorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25t
ZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAg
ICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQor
ICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2Ey
XQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uW3QxXQorICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0K
ICAgICAgICAgZW5kCiAgICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwg
dDMKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCkBAIC0yMDY1LDExICsyMDcyLDEy
IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9u
KQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9hZHAgTWFya2Vk
QmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwgdDMKICAg
ICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0M10KLSAgICAgICAgbW92ZSBjZnIs
IGEwICAjIGEwID0gZWN4Ci0gICAgICAgIHN0b3JlcCBhMCwgW3NwXQotICAgICAgICBsb2FkaSBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMSAgIyBh
MSA9IGVkeAorICAgICAgICBzdG9yZXAgYTEsIFtzcF0KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsg
UGF5bG9hZE9mZnNldFtjZnJdLCBhMgorICAgICAgICBsb2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjpt
X2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50
KHQzLCAweGRlYWQwMDAxKQotICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAg
ICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAg
ICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVy
OjptX3ZtW3QzXSwgdDMKQEAgLTIwODAsMTMgKzIwODgsMTQgQEAgbWFjcm8gaW50ZXJuYWxGdW5j
dGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2Vk
QmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1h
cmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MQogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6
dG9wQ2FsbEZyYW1lW3QxXQotICAgICAgICBtb3ZlIGNmciwgYTAKLSAgICAgICAgbG9hZGkgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEKKyAgICAg
ICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMgorICAgICAgICBsb2FkcCBJ
bnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgICAgIGNoZWNrU3Rh
Y2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBpZiBDX0xPT1Agb3Ig
Q19MT09QX1dJTgotICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9mZnNldE9mRnVuY3Rpb25b
dDFdCisgICAgICAgICAgICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXQorICAgICAg
ICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgICAgICBlbmQKICAgICAgICAgbG9h
ZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJs
b2NrTWFzaywgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggN2Y0ZWI4MzdmNzFlYTFmYjk1NzAxOWFkM2UzMmFh
N2Q3MWMzYzNhZi4uMWY4ZGJmYzYzZGEzNjcyNGI0YWEyNjhkZWNmYTAzYTZhMGRiNTNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTI1NSw3ICsyNTUsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAK
ICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudChleHRyYVRlbXBSZWcsIDB4YmFkMGRjMDIp
CiAKLSAgICBtYWtlQ2FsbChlbnRyeSwgdDMsIHQ0KQorICAgIG1ha2VDYWxsKGVudHJ5LCBwcm90
b0NhbGxGcmFtZSwgdDMsIHQ0KQogCiAgICAgIyBXZSBtYXkgaGF2ZSBqdXN0IG1hZGUgYSBjYWxs
IGludG8gYSBKUyBmdW5jdGlvbiwgc28gd2UgY2FuJ3QgcmVseSBvbiBzcAogICAgICMgZm9yIGFu
eXRoaW5nIGJ1dCB0aGUgZmFjdCB0aGF0IG91ciBvd24gbG9jYWxzIChpZSB0aGUgVk1FbnRyeVJl
Y29yZCkgYXJlCkBAIC0yOTcsNyArMjk3LDggQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQog
ZW5kCiAKIAotbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQpCisj
IGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2Fs
bEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xPT1Agb3Ig
Q19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CkBAIC0zMDcsMjAg
KzMwOCwyMiBAQCBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkK
ICAgICBzdWJwIDE2LCBzcAogZW5kCiAKLW1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5
LCB0ZW1wLCB1bnVzZWQpCi0gICAgbW92ZSBlbnRyeSwgdGVtcAorIyBhMCwgYTIsIHQzLCB0NAor
bWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwg
dGVtcDIpCisgICAgbW92ZSBlbnRyeSwgdGVtcDEKICAgICBzdG9yZXAgY2ZyLCBbc3BdCi0gICAg
bW92ZSBzcCwgYTAKKyAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3Rv
Q2FsbEZyYW1lXSwgYTAKKyAgICBtb3ZlIHNwLCBhMQogICAgIGlmIENfTE9PUCBvciBDX0xPT1Bf
V0lOCiAgICAgICAgIHN0b3JlcCBsciwgOFtzcF0KLSAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHRl
bXAKKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHRlbXAxCiAgICAgZWxzaWYgWDg2XzY0X1dJTgog
ICAgICAgICAjIFdlIG5lZWQgdG8gYWxsb2NhdGUgMzIgYnl0ZXMgb24gdGhlIHN0YWNrIGZvciB0
aGUgc2hhZG93IHNwYWNlLgogICAgICAgICBzdWJwIDMyLCBzcAotICAgICAgICBjYWxsIHRlbXAs
IEpTRW50cnlQdHJUYWcKKyAgICAgICAgY2FsbCB0ZW1wMSwgSlNFbnRyeVB0clRhZwogICAgICAg
ICBhZGRwIDMyLCBzcAogICAgIGVsc2UKLSAgICAgICAgY2FsbCB0ZW1wLCBKU0VudHJ5UHRyVGFn
CisgICAgICAgIGNhbGwgdGVtcDEsIEpTRW50cnlQdHJUYWcKICAgICBlbmQKIGVuZAogCkBAIC0y
MTIzLDE5ICsyMTI2LDIwIEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVP
ZmZzZXRUb0Z1bmN0aW9uKQogICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgQ19M
T09QX1dJTgogICAgICAgICBzdG9yZXAgbHIsIFJldHVyblBDW2Nmcl0KICAgICBlbmQKLSAgICBt
b3ZlIGNmciwgYTAKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKLSAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgIG1vdmUgY2ZyLCBhMQorICAgIGxvYWRwIENh
bGxlZVtjZnJdLCBhMAorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVthMF0sIGEy
CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTBdLCBhMAogICAgIGNoZWNr
U3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgIGlmIENfTE9PUCBvciBD
X0xPT1BfV0lOCi0gICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBleGVjdXRhYmxlT2Zmc2V0VG9GdW5j
dGlvblt0MV0KKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAgaWYgWDg2XzY0X1dJTgogICAgICAgICAgICAgc3Vi
cCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFd
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAgICAgICAgYWRkcCAzMiwgc3AKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0sIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25b
YTJdLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIGVuZAogICAgIGVuZAogCkBAIC0yMTYzLDE4ICsy
MTY3LDE5IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1
bmN0aW9uKQogICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgQ19MT09QX1dJTgog
ICAgICAgICBzdG9yZXAgbHIsIFJldHVyblBDW2Nmcl0KICAgICBlbmQKLSAgICBtb3ZlIGNmciwg
YTAKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKKyAgICBtb3ZlIGNmciwgYTEKKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgYTIKKyAgICBsb2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9i
amVjdFthMl0sIGEwCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAw
MDEpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgY2xvb3BDYWxsTmF0aXZl
IG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBvZmZzZXRPZkZ1
bmN0aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAgaWYgWDg2XzY0X1dJTgogICAgICAgICAgICAg
c3VicCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0sIEpTRW50
cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0sIEpTRW50cnlQ
dHJUYWcKICAgICAgICAgICAgIGFkZHAgMzIsIHNwCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0sIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNh
bGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0sIEpTRW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAg
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmgKaW5kZXggMzlmZTZiYmZmNTY2YjkxNTliYTYzNzE5M2M2ODNhM2JjYzJkYzFlZS4uZjg5YmZl
ZGNlM2ZhZmY2MzU3NGM0MTViYmU5MzA1YWU2MGUyOTM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTM2LDcgKzM2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNHbG9iYWxP
YmplY3Q7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFycmF5QnVmZmVyVmlldz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBiOTJhNzYyYTQwMDYyOTll
YjdiNDU5ODA2NDAyYzk4YTA0YTFiOTU1Li44ZDAwOTA2MjQyZTg5ZmRlNTEzMTNjOTI5ZjYxNTI5
ZDAxMTM0NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmNwcApAQCAtNTAsOCArNTAsOCBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
bgogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFy
cmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxBcnJheUNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcikKQEAg
LTg0LDExICs4NCw4IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVj
U3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9i
amVjdCwgbiwgbmV3VGFyZ2V0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNBcnJheSogY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cywgSlNWYWx1ZSBuZXdUYXJnZXQpCitzdGF0aWMgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFy
cmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2
bSk7Ci0KICAgICAvLyBhIHNpbmdsZSBudW1lcmljIGFyZ3VtZW50IGRlbm90ZXMgdGhlIGFycmF5
IHNpemUgKCEpCiAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCBhcmdz
LmF0KDApLCBuZXdUYXJnZXQpOwpAQCAtOTcsMTYgKzk0LDE2IEBAIHN0YXRpYyBpbmxpbmUgSlNB
cnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9i
amVjdCwgYXJncywgbmV3VGFyZ2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MsIGV4ZWMtPm5ld1Rhcmdl
dCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsIGFyZ3MsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5Q29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MsIEpTVmFsdWUoKSkpOworICAgIEFy
Z0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBKU1Zh
bHVlKCkpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0FycmF5U2xvd0lubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0KiBwcm94eSkKQEAgLTE0MCwxMCArMTM3LDEw
IEBAIGJvb2wgaXNBcnJheVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm94eU9iamVjdCogYXJndW1l
bnQpCiAKIC8vIEVTNiA3LjIuMgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtaXNhcnJheQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9y
UHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFT
U0VSVChqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1l
bnQoMCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0FycmF5U2xv
d0lubGluZShleGVjLCBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSkpKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8
UHJveHlPYmplY3QqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0FycmF5U2xvd0lubGlu
ZShjYWxsRnJhbWUsIGpzQ2FzdDxQcm94eU9iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCA3NWFjNDU5MjEzNjE0
YTM2NTVmMDZmMmQ0ZTNiNDJjYzMwNzI2MzUwLi43NzIzM2FkZTdiMzlhZWQ1ZWU4ZjE2YzA5ODAz
OGIwMTE4YjJiYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEFycmF5Q29uc3RydWN0b3Ig
ZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKIEpTQXJyYXkqIGNvbnN0cnVjdEFy
cmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBwcm90b3R5cGUgPSBKU1ZhbHVl
KCkpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2
YXRlRnVuY0lzQXJyYXlTbG93KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogYm9vbCBpc0FycmF5U2xvdyhFeGVjU3RhdGUqLCBQcm94eU9iamVj
dCogYXJndW1lbnQpOwogCiAvLyBFUzYgNy4yLjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlZGI3NjE5YjUxMGFjNjNjNDE3ODg2
NzIyMDQyYTkyMDRiMGYyNTIxLi43OTQ4NDIxYWE1ZWM3ZTU5ODJhNzBlMGRlOThiYjI4MWQ0MGM0
NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC00OCwxNyArNDgsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Bv
cChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNQdXNoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU2hpZnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5k
ZXhPZihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNQb3AoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhP
ZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTI2NywxNCArMjY3LDE0IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVj
dCo+IHNwZWNpZXNDb25zdHJ1CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNpZXNDb25z
dHJ1Y3RSZXN1bHQ6OkNyZWF0ZWRPYmplY3QsIG5ld09iamVjdCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVz
Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwot
ICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS5hc051bWJlcigpKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgdWludDY0X3QgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSku
YXNOdW1iZXIoKSk7CiAKLSAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNP
YmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIG9iamVj
dCwgbGVuZ3RoKTsKKyAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmpl
Y3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgb2Jq
ZWN0LCBsZW5ndGgpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRp
b24pKTsKICAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29u
c3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjgyLDEx
ICsyODIsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Nw
ZWNpZXNDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHNwZWNpZXNSZXN1bHQuc2Vjb25kKTsKIAogICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50
ZWdlci4iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFy
cmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihsZW5ndGgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRy
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSB1
bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEV4ZWNTdGF0ZSogZXhl
YywgaW50IGFyZ3VtZW50LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVl
ID0gMCkKQEAgLTU5MywxOSArNTkzLDE5IEBAIGlubGluZSBib29sIGNhblVzZURlZmF1bHRBcnJh
eUpvaW5Gb3JUb1N0cmluZyhWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQogICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKICAgICAvLyAxLiBMZXQgYXJyYXkgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoIWNh
blVzZURlZmF1bHRBcnJheUpvaW5Gb3JUb1N0cmluZyh2bSwgdGhpc09iamVjdCkpIHsKICAgICAg
ICAgLy8gMi4gTGV0IGZ1bmMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldF1dIGlu
dGVybmFsIG1ldGhvZCBvZiBhcnJheSB3aXRoIGFyZ3VtZW50ICJqb2luIi4KLSAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IEpTVmFsdWUodGhpc09iamVjdCkuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPmpvaW4pOworICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gSlNWYWx1ZSh0aGlzT2Jq
ZWN0KS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgLy8g
My4gSWYgSXNDYWxsYWJsZShmdW5jKSBpcyBmYWxzZSwgdGhlbiBsZXQgZnVuYyBiZSB0aGUgc3Rh
bmRhcmQgYnVpbHQtaW4gbWV0aG9kIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKDE1LjIuNC4y
KS4KQEAgLTYxOCwxMSArNjE4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjdXN0b21K
b2luQ2FzZSA9IHRydWU7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkK
LSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKSk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2
aWFsU3RyaW5nKGNhbGxGcmFtZSwgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKSk7CiAKICAgICAgICAgLy8gNC4g
UmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9k
IG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBh
cmd1bWVudHMgbGlzdC4KICAgICAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09iamVjdCkgfHwgY2Fs
bFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uICE9IGFy
cmF5UHJvdG9GdW5jSm9pbikKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc09iamVjdCwgKnZtLmVtcHR5TGlzdCkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSkpOwogICAgIH0KIAog
ICAgIEFTU0VSVChpc0pTQXJyYXkodGhpc1ZhbHVlKSk7CkBAIC02MzAsNyArNjMwLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNBcnJheS0+bGVuZ3RoKCk7CiAK
LSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc0FycmF5KTsKKyAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzQXJyYXkpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIuZWFybHlS
ZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tl
ci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFy
bHlSZXR1cm5WYWx1ZSk7CkBAIC02NDksNyArNjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgc2F3SG9sZXMgPSBmYWxzZTsKLSAgICAgICAgSlNWYWx1ZSByZXN1
bHQgPSBmYXN0Sm9pbigqZXhlYywgdGhpc0FycmF5LCB7ICZjb21tYSwgMSB9LCBsZW5ndGgsICZz
YXdIb2xlcyk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEpvaW4oKmNhbGxGcmFtZSwg
dGhpc0FycmF5LCB7ICZjb21tYSwgMSB9LCBsZW5ndGgsICZzYXdIb2xlcyk7CiAKICAgICAgICAg
aWYgKCFzYXdIb2xlcyAmJiByZXN1bHQgJiYgaXNKU1N0cmluZyhyZXN1bHQpICYmIGlzQ29XKSB7
CiAgICAgICAgICAgICBBU1NFUlQoSlNJbW11dGFibGVCdXR0ZXJmbHk6OmZyb21CdXR0ZXJmbHko
dGhpc0FycmF5LT5idXR0ZXJmbHkoKSkgPT0gaW1tdXRhYmxlQnV0dGVyZmx5KTsKQEAgLTY1OSw2
OCArNjU5LDY4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKICAgICB9CiAKLSAgICBKU1N0cmluZ0pvaW5lciBqb2luZXIoKmV4ZWMsICcsJywg
bGVuZ3RoKTsKKyAgICBKU1N0cmluZ0pvaW5lciBqb2luZXIoKmNhbGxGcmFtZSwgJywnLCBsZW5n
dGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIEpT
VmFsdWUgZWxlbWVudCA9IHRoaXNBcnJheS0+dHJ5R2V0SW5kZXhRdWlja2x5KGkpOwogICAgICAg
ICBpZiAoIWVsZW1lbnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzQXJyYXktPmdldChl
eGVjLCBpKTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzQXJyYXktPmdldChjYWxsRnJhbWUs
IGkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgam9pbmVyLmFwcGVuZCgqZXhlYywgZWxlbWVudCk7
CisgICAgICAgIGpvaW5lci5hcHBlbmQoKmNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpvaW5lci5qb2luKCpl
eGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpv
aW5lci5qb2luKCpjYWxsRnJhbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1l
LCBTdHJpY3RNb2RlKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRv
T2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iamVj
dCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqZWN0KTsKKyAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5
UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNr
ZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVh
cmx5UmV0dXJuVmFsdWUpOwogCi0gICAgSlNTdHJpbmdKb2luZXIgc3RyaW5nSm9pbmVyKCpleGVj
LCAnLCcsIGxlbmd0aCk7CisgICAgSlNTdHJpbmdKb2luZXIgc3RyaW5nSm9pbmVyKCpjYWxsRnJh
bWUsICcsJywgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEFyZ0xpc3QgYXJndW1lbnRzKGV4
ZWMpOworICAgIEFyZ0xpc3QgYXJndW1lbnRzKGNhbGxGcmFtZSk7CiAjZW5kaWYKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSBlbGVt
ZW50ID0gdGhpc09iamVjdC0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIEpTVmFsdWUgZWxl
bWVudCA9IHRoaXNPYmplY3QtPmdldEluZGV4KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoZWxl
bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgZWxlbWVudCA9IGpzRW1wdHlT
dHJpbmcodm0pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFsdWUgY29udmVyc2lv
bkZ1bmN0aW9uID0gZWxlbWVudC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9Mb2NhbGVT
dHJpbmcpOworICAgICAgICAgICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBlbGVtZW50
LmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKHZtLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAg
ICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewogI2lmIEVOQUJMRShJTlRM
KQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBjYWxsKGNhbGxGcmFtZSwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50cyk7CiAjZWxzZQotICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBlbGVtZW50LCAqdm0uZW1wdHlMaXN0KTsKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
Y2FsbChjYWxsRnJhbWUsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBl
bGVtZW50LCAqdm0uZW1wdHlMaXN0KTsKICNlbmRpZgogICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoKmV4ZWMsIGVsZW1lbnQpOworICAg
ICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKCpjYWxsRnJhbWUsIGVsZW1lbnQpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdHJpbmdKb2luZXIu
am9pbigqZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdHJpbmdKb2luZXIuam9pbigqY2FsbEZyYW1lKSkpOwogfQogCiBzdGF0aWMgSlNWYWx1
ZSBzbG93Sm9pbihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1N0cmlu
Zyogc2VwYXJhdG9yLCB1aW50NjRfdCBsZW5ndGgpCkBAIC03NzEsMjggKzc3MSwyOCBAQCBzdGF0
aWMgSlNWYWx1ZSBzbG93Sm9pbihFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1N0cmluZyogc2VwYXJhdAogICAgIHJldHVybiByOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2Jq
ZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1l
LCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQo
ISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBTdHJp
bmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iamVjdCk7CisgICAgU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZh
bHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5
UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVy
blZhbHVlKTsKIAogICAgIC8vIDIuIExldCBsZW4gYmUgPyBUb0xlbmd0aCg/IEdldChPLCAibGVu
Z3RoIikpLgotICAgIGRvdWJsZSBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsK
KyAgICBkb3VibGUgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8v
IDMuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIGxldCBzZXBhcmF0b3IgYmUgdGhlIHNpbmds
ZS1lbGVtZW50IFN0cmluZyAiLCIuCi0gICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgIGNvbnN0IExDaGFyIGNvbW1hID0gJywnOwogCkBAIC04MDIsMTE3ICs4MDIsMTE3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKHZtLCBjb21tYSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIGpzU2Vw
YXJhdG9yLCBsZW5ndGg2NCkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3QsIGpzU2Vw
YXJhdG9yLCBsZW5ndGg2NCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVkIHVuc2ln
bmVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxkb3VibGU+KHVuc2lnbmVkTGVuZ3RoKSA9PSBsZW5ndGgpOwogCi0gICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpl
eGVjLCB0aGlzT2JqZWN0LCB7ICZjb21tYSwgMSB9LCB1bnNpZ25lZExlbmd0aCkpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZmFzdEpvaW4oKmNh
bGxGcmFtZSwgdGhpc09iamVjdCwgeyAmY29tbWEsIDEgfSwgdW5zaWduZWRMZW5ndGgpKSk7CiAg
ICAgfQogCiAgICAgLy8gNC4gTGV0IHNlcCBiZSA/IFRvU3RyaW5nKHNlcGFyYXRvcikuCi0gICAg
SlNTdHJpbmcqIGpzU2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhlYyk7Cisg
ICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgfHwgIWNhblVzZUZhc3RKb2luKHRoaXNPYmplY3QpKSkgewogICAgICAgICB1aW50
NjRfdCBsZW5ndGg2NCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpOwogICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPihsZW5ndGg2NCkgPT0gbGVuZ3RoKTsKIAotICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqZXhl
YywgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqY2FsbEZyYW1lLCB0
aGlzT2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CiAgICAgfQogCi0gICAgYXV0byB2
aWV3V2l0aFN0cmluZyA9IGpzU2VwYXJhdG9yLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhl
Yyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGpzU2VwYXJhdG9yLT52aWV3V2l0aFVuZGVy
bHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGZhc3RKb2luKCpleGVjLCB0aGlzT2JqZWN0LCB2aWV3V2l0aFN0cmluZy52aWV3
LCBsZW5ndGgpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoZmFzdEpvaW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwgdmlld1dpdGhTdHJpbmcudmlldywg
bGVuZ3RoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNQb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogCiAgICAgaWYgKGlzSlNBcnJh
eSh0aGlzVmFsdWUpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChleGVjKSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBv
cChjYWxsRnJhbWUpKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChj
YWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhp
c09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2Jq
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGlmIChsZW5ndGggPT0gMCkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoKSk7CisgICAgICAg
IHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGgpKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAxKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdldChjYWxsRnJhbWUsIGxlbmd0aCAtIDEpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGJvb2wg
c3VjY2VzcyA9IHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpOworICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmot
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGNhbGxGcmFt
ZSwgbGVuZ3RoIC0gMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0
eUVycm9yKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpzTnVtYmVy
KGxlbmd0aCAtIDEpKTsKKyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwganNO
dW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1B1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKIAotICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRo
aXNWYWx1ZSkgJiYgZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CisgICAgaWYgKExJS0VM
WShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAx
KSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBhcnJheS0+cHVzaElubGluZShleGVjLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAgIGFycmF5LT5wdXNoSW5saW5lKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CiAgICAgfQogICAgIAot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgZm9yICh1bnNpZ25lZCBu
ID0gMDsgbiA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgbisrKSB7CisgICAgZm9yICh1bnNpZ25l
ZCBuID0gMDsgbiA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyBuKyspIHsKICAgICAgICAg
Ly8gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3c7IHdoZXJlIHNhZmUgd2UgY2FuIGRvIGEgZmFz
dCBwdXQgYnkgaW5kZXguCiAgICAgICAgIGlmIChsZW5ndGggKyBuID49IGxlbmd0aCkKLSAgICAg
ICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBsZW5ndGggKyBuLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgdHJ1ZSk7CisgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpc09iaiwgY2FsbEZy
YW1lLCBsZW5ndGggKyBuLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
KTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKLSAgICAgICAgICAgIHRoaXNP
YmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOworICAgICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU1ZhbHVlKHN0YXRpY19j
YXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKSk7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1
dCh0aGlzT2JqLCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChuKSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgbmV3
TGVuZ3RoKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90
PihleGVjLT5hcmd1bWVudENvdW50KCkpKTsKKyAgICBKU1ZhbHVlIG5ld0xlbmd0aChzdGF0aWNf
Y2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVuZ3RoKGV4
ZWMsIHZtLCB0aGlzT2JqLCBuZXdMZW5ndGgpOworICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZt
LCB0aGlzT2JqLCBuZXdMZW5ndGgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3TGVu
Z3RoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Jl
dmVyc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRv
TGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB0aGlzT2JqZWN0LT5lbnN1cmVXcml0YWJs
ZSh2bSk7CkBAIC05NTcsNDIgKzk1Nyw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgbWlk
ZGxlID0gbGVuZ3RoIC8gMjsKICAgICBmb3IgKHVuc2lnbmVkIGxvd2VyID0gMDsgbG93ZXIgPCBt
aWRkbGU7IGxvd2VyKyspIHsKICAgICAgICAgdW5zaWduZWQgdXBwZXIgPSBsZW5ndGggLSBsb3dl
ciAtIDE7Ci0gICAgICAgIGJvb2wgbG93ZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0
eShleGVjLCBsb3dlcik7CisgICAgICAgIGJvb2wgbG93ZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5o
YXNQcm9wZXJ0eShjYWxsRnJhbWUsIGxvd2VyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWUgbG93ZXJWYWx1ZTsK
ICAgICAgICAgaWYgKGxvd2VyRXhpc3RzKSB7Ci0gICAgICAgICAgICBsb3dlclZhbHVlID0gdGhp
c09iamVjdC0+Z2V0KGV4ZWMsIGxvd2VyKTsKKyAgICAgICAgICAgIGxvd2VyVmFsdWUgPSB0aGlz
T2JqZWN0LT5nZXQoY2FsbEZyYW1lLCBsb3dlcik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgdXBwZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCB1cHBlcik7Cisg
ICAgICAgIGJvb2wgdXBwZXJFeGlzdHMgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShjYWxsRnJh
bWUsIHVwcGVyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWUgdXBwZXJWYWx1ZTsKICAgICAgICAgaWYgKHVwcGVy
RXhpc3RzKSB7Ci0gICAgICAgICAgICB1cHBlclZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMs
IHVwcGVyKTsKKyAgICAgICAgICAgIHVwcGVyVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZy
YW1lLCB1cHBlcik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh1cHBlckV4aXN0cykgewot
ICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0QnlJbmRleElubGluZShleGVjLCBsb3dlciwgdXBw
ZXJWYWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5saW5l
KGNhbGxGcmFtZSwgbG93ZXIsIHVwcGVyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBsb3dlcik7CisgICAgICAg
ICAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIGxvd2VyKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJv
cGVydHlFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobG93ZXJFeGlzdHMpIHsKLSAg
ICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdXBwZXIsIGxvd2Vy
VmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0QnlJbmRleElubGluZShj
YWxsRnJhbWUsIHVwcGVyLCBsb3dlclZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgdXBwZXIpOworICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgY2FsbEZyYW1lLCB1cHBlcik7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3Bl
cnR5RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDAwLDYxICsxMDAwLDYxIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChl
eGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChV
TkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAobGVuZ3RoID09IDAp
IHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXRMZW5ndGgoZXhlYywgdm0s
IHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOworICAgICAgICBwdXRMZW5ndGgoY2FsbEZyYW1l
LCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
aGlzT2JqLT5nZXRJbmRleChleGVjLCAwKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmot
PmdldEluZGV4KGNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNoaWZ0
PihleGVjLCB0aGlzT2JqLCAwLCAxLCAwLCBsZW5ndGgpOworICAgIHNoaWZ0PEpTQXJyYXk6OlNo
aWZ0Q291bnRGb3JTaGlmdD4oY2FsbEZyYW1lLCB0aGlzT2JqLCAwLCAxLCAwLCBsZW5ndGgpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpzTnVtYmVy
KGxlbmd0aCAtIDEpKTsKKyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwganNO
dW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5w
cm90b3R5cGUuc2xpY2UKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1
cm4geyB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGJlZ2luID0g
YXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAwLCBsZW5ndGgpOworICAg
IHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChjYWxs
RnJhbWUsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4
ZWMsIDEsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1w
ZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMSwgbGVuZ3RoLCBsZW5ndGgpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGVuZCA8IGJlZ2luKQog
ICAgICAgICBlbmQgPSBiZWdpbjsKIAotICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVz
dWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhl
YywgdGhpc09iaiwgZW5kIC0gYmVnaW4pOworICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0
UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXko
Y2FsbEZyYW1lLCB0aGlzT2JqLCBlbmQgLSBiZWdpbik7CiAgICAgLy8gV2UgY2FuIG9ubHkgZ2V0
IGFuIGV4Y2VwdGlvbiBpZiB3ZSBjYWxsIHNvbWUgdXNlciBmdW5jdGlvbi4KICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0g
U3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKHNw
ZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVz
UmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNB
cnJheSh0aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAg
Ym9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0
cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxlbmd0aCA9PSB0
b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgaWYgKExJS0VMWShva1RvRG9GYXN0UGF0aCkpIHsKLSAgICAgICAgaWYg
KEpTQXJyYXkqIHJlc3VsdCA9IGFzQXJyYXkodGhpc09iaiktPmZhc3RTbGljZSgqZXhlYywgYmVn
aW4sIGVuZCAtIGJlZ2luKSkKKyAgICAgICAgaWYgKEpTQXJyYXkqIHJlc3VsdCA9IGFzQXJyYXko
dGhpc09iaiktPmZhc3RTbGljZSgqY2FsbEZyYW1lLCBiZWdpbiwgZW5kIC0gYmVnaW4pKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMTA2
Miw3ICsxMDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBT
cGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICByZXN1bHQgPSBz
cGVjaWVzUmVzdWx0LnNlY29uZDsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBlbmQgLSBiZWdpbik7CisgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBlbmQgLSBiZWdpbik7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCkBAIC0x
MDcyLDM0ICsxMDcyLDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNpZ25lZCBuID0gMDsKICAgICBm
b3IgKHVuc2lnbmVkIGsgPSBiZWdpbjsgayA8IGVuZDsgaysrLCBuKyspIHsKLSAgICAgICAgSlNW
YWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayk7CisgICAgICAgIEpTVmFsdWUg
diA9IGdldFByb3BlcnR5KGNhbGxGcmFtZSwgdGhpc09iaiwgayk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICh2KSB7Ci0gICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG4sIHYsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxk
VGhyb3cpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIG4s
IHYsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCByZXN1bHQsIG4pOworICAgIHNldExlbmd0
aChjYWxsRnJhbWUsIHZtLCByZXN1bHQsIG4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIC8vIDE1LjQuNC4xMgogCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVj
LT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Cisg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxs
RnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50
KCkpIHsKLSAgICAgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0
Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlzT2JqLCAw
KTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAgIHN0ZDo6
cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBz
cGVjaWVzQ29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCB0aGlzT2JqLCAwKTsKICAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0
ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNl
cHRpb24pKQogICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMTA4LDIz
ICsxMTA4LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
cGxpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9
PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICAgICAgcmVz
dWx0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCByZXN1bHQsIDApOworICAgICAg
ICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCAwKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCBsZW5ndGgpOworICAg
ICAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGFj
dHVhbFN0YXJ0ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAwLCBs
ZW5ndGgpOworICAgIHVuc2lnbmVkIGFjdHVhbFN0YXJ0ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChjYWxsRnJhbWUsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB1bnNpZ25lZCBhY3R1YWxEZWxl
dGVDb3VudCA9IGxlbmd0aCAtIGFjdHVhbFN0YXJ0OwotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPiAxKSB7Ci0gICAgICAgIGRvdWJsZSBkZWxldGVDb3VudCA9IGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPiAxKSB7CisgICAgICAgIGRvdWJsZSBkZWxldGVDb3VudCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoZGVs
ZXRlQ291bnQgPCAwKQogICAgICAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAwOwpAQCAtMTEz
NCw4MyArMTEzNCw4MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbGV0ZUNvdW50KTsKICAgICB9CiAKLSAgICBzdGQ6
OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0g
c3BlY2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIGFjdHVhbERlbGV0ZUNvdW50KTsK
KyAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVz
UmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhpc09iaiwgYWN0dWFs
RGVsZXRlQ291bnQpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRp
b24pKTsKICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gbnVsbHB0cjsKLSAgICBib29sIG9rVG9E
b0Zhc3RQYXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpGYXN0UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGV4
ZWMsIHRoaXNPYmopOworICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVzUmVzdWx0LmZp
cnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNBcnJheSh0aGlz
T2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoTElLRUxZ
KG9rVG9Eb0Zhc3RQYXRoKSkKLSAgICAgICAgcmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+ZmFz
dFNsaWNlKCpleGVjLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQpOworICAgICAgICBy
ZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmNhbGxGcmFtZSwgYWN0dWFsU3Rh
cnQsIGFjdHVhbERlbGV0ZUNvdW50KTsKIAogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGlm
IChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkNyZWF0ZWRP
YmplY3QpCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGFjdHVhbERlbGV0ZUNvdW50KTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgYWN0dWFsRGVsZXRlQ291bnQpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFyZXN1bHQpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFj
dHVhbERlbGV0ZUNvdW50OyArK2spIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3Bl
cnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBhY3R1YWxTdGFydCk7CisgICAgICAgICAgICBKU1ZhbHVl
IHYgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmosIGsgKyBhY3R1YWxTdGFydCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdikpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGssIHYsIDAsIFB1dERp
cmVjdEluZGV4U2hvdWxkVGhyb3cpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChjYWxsRnJhbWUsIGssIHYsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB1bnNpZ25lZCBpdGVtQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOworICAgIHVuc2lnbmVkIGl0ZW1Db3VudCA9IHN0
ZDo6bWF4PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKICAgICBpZiAo
aXRlbUNvdW50IDwgYWN0dWFsRGVsZXRlQ291bnQpIHsKLSAgICAgICAgc2hpZnQ8SlNBcnJheTo6
U2hpZnRDb3VudEZvclNwbGljZT4oZXhlYywgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFjdHVhbERl
bGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CisgICAgICAgIHNoaWZ0PEpTQXJyYXk6OlNo
aWZ0Q291bnRGb3JTcGxpY2U+KGNhbGxGcmFtZSwgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFjdHVh
bERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoaXRlbUNvdW50
ID4gYWN0dWFsRGVsZXRlQ291bnQpIHsKLSAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpTaGlmdENv
dW50Rm9yU3BsaWNlPihleGVjLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291
bnQsIGl0ZW1Db3VudCwgbGVuZ3RoKTsKKyAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpTaGlmdENv
dW50Rm9yU3BsaWNlPihjYWxsRnJhbWUsIHRoaXNPYmosIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxl
dGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGl0ZW1Db3VudDsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxp
bmUoZXhlYywgayArIGFjdHVhbFN0YXJ0LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrICsgMiks
IHRydWUpOworICAgICAgICB0aGlzT2JqLT5wdXRCeUluZGV4SW5saW5lKGNhbGxGcmFtZSwgayAr
IGFjdHVhbFN0YXJ0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAyKSwgdHJ1ZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIH0KICAgICAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgc2V0TGVuZ3RoKGV4ZWMsIHZt
LCB0aGlzT2JqLCBsZW5ndGggLSBhY3R1YWxEZWxldGVDb3VudCArIGl0ZW1Db3VudCk7CisgICAg
c2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGxlbmd0aCAtIGFjdHVhbERlbGV0ZUNv
dW50ICsgaXRlbUNvdW50KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNVblNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAvLyAxNS40LjQuMTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVl
KCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJp
Y3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgZG91YmxlIGRvdWJsZUxlbmd0
aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIGRvdWJsZSBkb3VibGVMZW5ndGggPSB0
b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGRvdWJs
ZUxlbmd0aDsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIHVuc2lnbmVkIG5yQXJncyA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1
bnNpZ25lZCBuckFyZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAobnJB
cmdzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShkb3VibGVMZW5ndGggKyBzdGF0aWNfY2FzdDxk
b3VibGU+KG5yQXJncykgPiBtYXhTYWZlSW50ZWdlcigpKSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQ2Fubm90IHNoaWZ0IHRvIG9mZnNldCBncmVh
dGVyIHRoYW4gKDIgKiogNTMpIC0gMSJfcyk7Ci0gICAgICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hp
ZnRDb3VudEZvclNoaWZ0PihleGVjLCB0aGlzT2JqLCAwLCAwLCBuckFyZ3MsIGxlbmd0aCk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQ2Fu
bm90IHNoaWZ0IHRvIG9mZnNldCBncmVhdGVyIHRoYW4gKDIgKiogNTMpIC0gMSJfcyk7CisgICAg
ICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZvclNoaWZ0PihjYWxsRnJhbWUsIHRoaXNP
YmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IDA7
IGsgPCBuckFyZ3M7ICsraykgewotICAgICAgICB0aGlzT2JqLT5wdXRCeUluZGV4SW5saW5lKGV4
ZWMsIGssIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLCB0cnVlKTsKKyAgICAgICAgdGhpc09i
ai0+cHV0QnlJbmRleElubGluZShjYWxsRnJhbWUsIGssIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoayksIHRydWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihsZW5n
dGggKyBuckFyZ3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywg
dm0sIHRoaXNPYmosIHJlc3VsdCk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNP
YmosIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBA
IC0xMzE1LDM2ICsxMzE1LDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBmYXN0SW5kZXhPZihF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNBcnJheSogYXJyYXksIHVuc2lnCiAgICAgfQogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwg
U3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9M
ZW5ndGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgo
Y2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCi0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFy
dE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CisgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMSwgbGVuZ3RoKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmplY3QpKSB7Ci0gICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6Rm9yd2Fy
ZD4oZXhlYywgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0aCwgc2VhcmNoRWxlbWVudCwg
aW5kZXgpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPEluZGV4T2ZEaXJl
Y3Rpb246OkZvcndhcmQ+KGNhbGxGcmFtZSwgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0
aCwgc2VhcmNoRWxlbWVudCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsg
KytpbmRleCkgewotICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2Jq
ZWN0LCBpbmRleCk7CisgICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGNhbGxGcmFtZSwg
dGhpc09iamVjdCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYm9v
bCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVudCwgZSk7
CisgICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKGNhbGxGcmFtZSwg
c2VhcmNoRWxlbWVudCwgZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgICAgIGlmIChpc0VxdWFsKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihpbmRleCkpOwpAQCAtMTM1MywyNCArMTM1MywyNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJ
bmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVl
KCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBT
dHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xl
bmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChj
YWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkgfHwgIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigt
MSkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBsZW5ndGggLSAxOwotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPj0gMikgewotICAgICAgICBKU1ZhbHVlIGZyb21WYWx1ZSA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgICAgICBkb3VibGUgZnJvbURvdWJsZSA9IGZyb21W
YWx1ZS50b0ludGVnZXIoZXhlYyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKKyAgICAgICAgSlNWYWx1ZSBmcm9tVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpOworICAgICAgICBkb3VibGUgZnJvbURvdWJsZSA9IGZyb21WYWx1ZS50b0lu
dGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICAgICAgaWYgKGZyb21Eb3VibGUgPCAwKSB7CiAgICAgICAgICAgICBmcm9tRG91Ymxl
ICs9IGxlbmd0aDsKQEAgLTEzODEsMTAgKzEzODEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21Eb3VibGUpOwogICAgIH0K
IAotICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgc2VhcmNoRWxlbWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKICAgICBpZiAo
aXNKU0FycmF5KHRoaXNPYmplY3QpKSB7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdElu
ZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6QmFja3dhcmQ+KGV4ZWMsIHZtLCBhc0FycmF5KHRoaXNP
YmplY3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBmYXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9uOjpCYWNrd2FyZD4oY2FsbEZyYW1l
LCB2bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRleCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmIChy
ZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0x
MzkyLDExICsxMzkyLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBkbyB7CiAgICAgICAgIEFT
U0VSVChpbmRleCA8IGxlbmd0aCk7Ci0gICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4
ZWMsIHRoaXNPYmplY3QsIGluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJvcGVydHko
Y2FsbEZyYW1lLCB0aGlzT2JqZWN0LCBpbmRleCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBzZWFyY2hF
bGVtZW50LCBlKTsKKyAgICAgICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
Y2FsbEZyYW1lLCBzZWFyY2hFbGVtZW50LCBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKGlzRXF1YWwpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7CkBAIC0xNTAwLDEzICsxNTAwLDEzIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5RWxlbWVudHMoVCogYnVmZmVyLCB1bnNpZ25lZCBvZmZz
ZXQsIHZvaWQqIHNvdXJjZSwgdW5zaWduCiAgICAgICAgIGNsZWFyRWxlbWVudDxUPihidWZmZXJb
aSArIG9mZnNldF0pOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNBcnJheSogZmlyc3RBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTQXJyYXkqIGZpcnN0QXJyYXkgPSBq
c0Nhc3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIAog
ICAgIC8vIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgbmVpdGhlciBhcnJheSBoYXMgc2V0IFN5bWJv
bC5pc0NvbmNhdFNwcmVhZGFibGUuIElmIHRoZSBmaXJzdCBhcnJheQogICAgIC8vIGhhcyBpbmRl
eGVkIGFjY2Vzc29ycyB0aGVuIG9uZSBvZiB0aG9zZSBhY2Nlc3NvcnMgbWlnaHQgY2hhbmdlIHRo
ZSB2YWx1ZSBvZiBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlCkBAIC0xNTE1LDE0ICsxNTE1LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29u
Y2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIHRoZSBzcGVjaWVzIGNvbnN0
cnVjdG9yIGhlcmUgc2luY2UgY2hlY2tpbmcgaXQgaW4gdGhlIEpTIHdyYXBwZXIgaXMgdG9vIGV4
cGVuc2l2ZSBmb3IgdGhlIG5vbi1vcHRpbWl6aW5nIHRpZXJzLgotICAgIGJvb2wgaXNWYWxpZCA9
IHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChleGVjLCBmaXJzdEFycmF5KTsKKyAgICBib29sIGlz
VmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoY2FsbEZyYW1lLCBmaXJzdEFycmF5KTsK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIGlmIChVTkxJS0VMWSghaXNWYWxp
ZCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0gICAgSlNW
YWx1ZSBzZWNvbmQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHNl
Y29uZCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgaWYgKCFpc0pTQXJy
YXkoc2Vjb25kKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25jYXRBcHBl
bmRPbmUoZXhlYywgdm0sIGZpcnN0QXJyYXksIHNlY29uZCkpOworICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGNvbmNhdEFwcGVuZE9uZShjYWxsRnJhbWUsIHZtLCBmaXJzdEFycmF5
LCBzZWNvbmQpKTsKIAogICAgIEpTQXJyYXkqIHNlY29uZEFycmF5ID0ganNDYXN0PEpTQXJyYXkq
PihzZWNvbmQpOwogICAgIApAQCAtMTUzNiw3ICsxNTM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGNoZWNrZWRSZXN1bHRTaXplICs9IHNlY29uZEFycmF5U2l6ZTsKIAogICAgIGlm
IChVTkxJS0VMWShjaGVja2VkUmVzdWx0U2l6ZS5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CiAgICAgfQogCkBAIC0xNTQ1LDE0ICsxNTQ1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBJbmRleGluZ1R5cGUgc2Vjb25kVHlwZSA9IHNlY29uZEFycmF5LT5pbmRleGlu
Z1R5cGUoKTsKICAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0QXJyYXktPm1lcmdlSW5kZXhp
bmdUeXBlRm9yQ29weWluZyhzZWNvbmRUeXBlKTsKICAgICBpZiAodHlwZSA9PSBOb25BcnJheSB8
fCAhZmlyc3RBcnJheS0+Y2FuRmFzdENvcHkodm0sIHNlY29uZEFycmF5KSB8fCByZXN1bHRTaXpl
ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCByZXN1bHRTaXplKTsKKyAgICAgICAg
SlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIs
IHJlc3VsdFNpemUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgICAgICBib29sIHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMoZXhlYywg
dm0sIHJlc3VsdCwgMCwgZmlyc3RBcnJheSwgZmlyc3RBcnJheVNpemUpOworICAgICAgICBib29s
IHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCAwLCBmaXJzdEFy
cmF5LCBmaXJzdEFycmF5U2l6ZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKQog
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBt
b3ZlRWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdCwgZmlyc3RBcnJheVNpemUsIHNlY29uZEFycmF5
LCBzZWNvbmRBcnJheVNpemUpOworICAgICAgICBzdWNjZXNzID0gbW92ZUVsZW1lbnRzKGNhbGxG
cmFtZSwgdm0sIHJlc3VsdCwgZmlyc3RBcnJheVNpemUsIHNlY29uZEFycmF5LCBzZWNvbmRBcnJh
eVNpemUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBz
dWNjZXNzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkKICAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTU2MCwxNiArMTU2MCwxNSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGxl
eGljYWxHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbih0eXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUp
OwogICAgIGlmIChVTkxJS0VMWShoYXNBbnlBcnJheVN0b3JhZ2UocmVzdWx0U3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKIAotICAgIEFTU0VSVCghbGV4aWNhbEdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgp
KTsKKyAgICBBU1NFUlQoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKTsKICAgICBP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlIGluaXRpYWxpemF0aW9uU2NvcGUodm0pOwogICAgIEpT
QXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVk
KGluaXRpYWxpemF0aW9uU2NvcGUsIHJlc3VsdFN0cnVjdHVyZSwgcmVzdWx0U2l6ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xNTg4
LDI0ICsxNTg3LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1By
aXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMyk7CisgICAgQVNTRVJUKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID09IDMpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTQXJyYXkqIHJlc3VsdEFycmF5ID0ganNDYXN0PEpTQXJy
YXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNBcnJheSogb3RoZXJBcnJh
eSA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwotICAgIEpT
VmFsdWUgc3RhcnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOworICAgIEpTQXJy
YXkqIHJlc3VsdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKKyAgICBKU0FycmF5KiBvdGhlckFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIEFTU0VSVChzdGFydFZhbHVl
LmlzVUludDMyQXNBbnlJbnQoKSk7CiAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHN0YXJ0VmFs
dWUuYXNVSW50MzJBc0FueUludCgpOwotICAgIGJvb2wgc3VjY2VzcyA9IHJlc3VsdEFycmF5LT5h
cHBlbmRNZW1jcHkoZXhlYywgdm0sIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXkpOworICAgIGJvb2wg
c3VjY2VzcyA9IHJlc3VsdEFycmF5LT5hcHBlbmRNZW1jcHkoY2FsbEZyYW1lLCB2bSwgc3RhcnRJ
bmRleCwgb3RoZXJBcnJheSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgIXN1Y2Nlc3MpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBtb3ZlRWxlbWVu
dHMoZXhlYywgdm0sIHJlc3VsdEFycmF5LCBzdGFydEluZGV4LCBvdGhlckFycmF5LCBvdGhlckFy
cmF5LT5sZW5ndGgoKSk7CisgICAgbW92ZUVsZW1lbnRzKGNhbGxGcmFtZSwgdm0sIHJlc3VsdEFy
cmF5LCBzdGFydEluZGV4LCBvdGhlckFycmF5LCBvdGhlckFycmF5LT5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKaW5kZXggNzVhYzlkMmFkNGFk
YTZlMzgzYWZkOTQ4MDU1NGU0Zjg0NjZlODRmYi4uNmIyZGY2M2FlYmQxYjE2MDcyOGI1NWI4MDRk
MThmNjY3NTljN2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5oCkBAIC01MCwxMCArNTAsMTAgQEAgY2xhc3MgQXJyYXlQcm90b3R5cGUgZmlu
YWwgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jU3BlY2llc0NyZWF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZh
dGVGdW5jQXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRN
ZW1jcHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
aW5kZXggYzc3OGEwMGM4OTBhOThhYzQyZWQwYWIwODBkOWY2NDcxMTkzYTdjMC4uN2I4ZmFhYmQw
M2M5ZWNkY2I1MTYzY2U2MzVhNDE2YjRlYTliYmVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xp
c3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0
aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpB
c3luYykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0o
KSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKKyAgICBBcmdMaXN0
IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkFzeW5jKSk7CiB9CiAKIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA5YTM5Mzg3NmU4ZTM1MzFlYjI5N2IyYTRj
NTQyNmI1MDg3YjA4NTJkLi44ZjdhODJkMWQyMDU5NDM3YzJiYTYxYTYxMmExNmJmZTRjMWIxN2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDE2ICszNiwx
NiBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxB
c3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMt
PnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJhdG9yKSk7
CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xp
c3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0
aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpB
c3luY0dlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKIH0K
IAogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggMzY4ZWE4ZmE2
Y2NiOTc2ZTFjNTFkOGUwYjQ3NjU2ZmYyNTlkMzIwNi4uYTZkMDk3NDU3ZTk0MzkzMjMyMjAwNDc2
OWE5MmI5NTE0YTU5YzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXRvbWljc09iamVjdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEF0b21pY3NPYmplY3QpOwogICAgIG1hY3JvKHhvciwgWG9yLCAz
KQogCiAjZGVmaW5lIERFQ0xBUkVfRlVOQ19QUk9UTyhsb3dlck5hbWUsIHVwcGVyTmFtZSwgY291
bnQpICAgICAgICAgICAgICAgICBcCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
dG9taWNzRnVuYyAjIyB1cHBlck5hbWUoRXhlY1N0YXRlKik7CisgICAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuYyAjIyB1cHBlck5hbWUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIEZPUl9FQUNIX0FUT01JQ1NfRlVOQyhERUNMQVJFX0ZVTkNfUFJPVE8pCiAj
dW5kZWYgREVDTEFSRV9GVU5DX1BST1RPCiAKQEAgLTE4NiwxMiArMTg2LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBKU1ZhbHVlKiBhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci1FbmNvZGVkSlNW
YWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZ1bmMm
IGZ1bmMpCitFbmNvZGVkSlNWYWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgRnVuYyYgZnVu
YykKIHsKICAgICBKU1ZhbHVlIGFyZ3NbMiArIEZ1bmM6Om51bUV4dHJhQXJnc107CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMiArIEZ1bmM6Om51bUV4dHJhQXJnczsgaS0tOykKLSAgICAgICAgYXJn
c1tpXSA9IGV4ZWMtPmFyZ3VtZW50KGkpOwotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRo
QXJncyhleGVjLT52bSgpLCBleGVjLCBhcmdzLCBmdW5jKTsKKyAgICAgICAgYXJnc1tpXSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoaSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdz
KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLCBhcmdzLCBmdW5jKTsKIH0KIAogc3RydWN0
IEFkZEZ1bmMgewpAQCAtMzEzLDgwICszMTMsODAgQEAgRW5jb2RlZEpTVmFsdWUgaXNMb2NrRnJl
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJnKQogCiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0FkZChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQWRkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBBZGRGdW5jKCkpOworICAgIHJl
dHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgQWRk
RnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0Fu
ZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NG
dW5jQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBBbmRGdW5jKCkp
OworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgQW5kRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9t
aWNzRnVuY0NvbXBhcmVFeGNoYW5nZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQ29tcGFyZUV4Y2hhbmdlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNP
cGVyYXRpb25XaXRoQXJncyhleGVjLCBDb21wYXJlRXhjaGFuZ2VGdW5jKCkpOworICAgIHJldHVy
biBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgQ29tcGFy
ZUV4Y2hhbmdlRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9t
aWNzRnVuY0V4Y2hhbmdlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXRvbWljc0Z1bmNFeGNoYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFy
Z3MoZXhlYywgRXhjaGFuZ2VGdW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRo
QXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgRXhjaGFuZ2VGdW5jKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jSXNMb2NrRnJlZShFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jSXNMb2NrRnJl
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBp
c0xvY2tGcmVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gaXNMb2NrRnJl
ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jTG9hZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jTG9hZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3Bl
cmF0aW9uV2l0aEFyZ3MoZXhlYywgTG9hZEZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJh
dGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBMb2FkRnVuYygpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY09yKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNPcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
YXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgT3JGdW5jKCkpOworICAgIHJldHVybiBhdG9t
aWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgT3JGdW5jKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3RvcmUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1N0b3Jl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBTdG9yZUZ1bmMoKSk7Cisg
ICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBTdG9yZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWlj
c0Z1bmNTdWIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
dG9taWNzRnVuY1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgU3Vi
RnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIFN1YkZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXRvbWljc0Z1bmNXYWl0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXRvbWljc0Z1bmNXYWl0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAKLSAgICBKU0ludDMyQXJyYXkqIHR5cGVkQXJyYXkgPSBqc0R5bmFt
aWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNJbnQz
MkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCF0eXBlZEFycmF5KSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0
IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCBiZSBhbiBJbnQzMkFycmF5
LiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmICghdHlwZWRBcnJheS0+aXNTaGFyZWQoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVz
dCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCB3cmFwIGEg
U2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlk
YXRlZEFjY2Vzc0luZGV4KHZtLCBleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgdHlwZWRBcnJheSk7
CisgICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRBY2Nlc3NJbmRleCh2bSwgY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0eXBlZEFycmF5KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAg
IAogICAgIGludDMyX3QqIHB0ciA9IHR5cGVkQXJyYXktPnR5cGVkVmVjdG9yKCkgKyBhY2Nlc3NJ
bmRleDsKICAgICAKLSAgICBpbnQzMl90IGV4cGVjdGVkVmFsdWUgPSBleGVjLT5hcmd1bWVudCgy
KS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgZXhwZWN0ZWRWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMikudG9JbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCi0gICAgZG91Ymxl
IHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IGV4ZWMtPmFyZ3VtZW50KDMpLnRvTnVtYmVyKGV4ZWMp
OworICAgIGRvdWJsZSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDMpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAgICBpZiAoIXZtLm1fdHlw
ZWRBcnJheUNvbnRyb2xsZXItPmlzQXRvbWljc1dhaXRBbGxvd2VkT25DdXJyZW50VGhyZWFkKCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBdG9taWNzLndhaXQgY2Fu
bm90IGJlIGNhbGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQuIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0zOTgsNyArMzk4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dhaXQoRXhlY1N0YXRlKiBl
eGVjKQogICAgIC8vICAgICBhLiBMZXQgcSBiZSA/IFRvTnVtYmVyKHRpbWVvdXQpLgogICAgIC8v
ICAgICBiLiBJZiBxIGlzIE5hTiB0aGVuIGxldCB0IGJlICtpbmYsIG90aGVyd2lzZSBsZXQgdCBi
ZSBtYXgoMCwgcSkuCiAgICAgLy8KLSAgICAvLyBleGVjLT5hcmd1bWVudCgzKSByZXR1cm5zIHVu
ZGVmaW5lZCBpZiBpdCdzIG5vdCBwcm92aWRlZCBhbmQgVG9OdW1iZXIodW5kZWZpbmVkKSByZXR1
cm5zIE5hTiwKKyAgICAvLyBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpIHJldHVybnMgdW5kZWZpbmVk
IGlmIGl0J3Mgbm90IHByb3ZpZGVkIGFuZCBUb051bWJlcih1bmRlZmluZWQpIHJldHVybnMgTmFO
LAogICAgIC8vIHNvIE5hTiBpcyB0aGUgb25seSBzcGVjaWFsIGNhc2UuCiAgICAgaWYgKCFzdGQ6
OmlzbmFuKHRpbWVvdXQpKQogICAgICAgICB0aW1lb3V0ID0gc3RkOjptYXgoMF9zLCB0aW1lb3V0
KTsKQEAgLTQyOCwzMSArNDI4LDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRv
bWljc0Z1bmNXYWl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJheSA9IGpz
RHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBK
U0ludDMyQXJyYXkqIHR5cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZt
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXR5cGVkQXJyYXkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtl
IG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFuIEludDMy
QXJyYXkuIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCF0eXBlZEFycmF5LT5pc1NoYXJlZCgpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2Fr
ZSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IHdy
YXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0g
dmFsaWRhdGVkQWNjZXNzSW5kZXgodm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCB0eXBlZEFy
cmF5KTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZt
LCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHR5cGVkQXJyYXkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7
CiAgICAgCiAgICAgaW50MzJfdCogcHRyID0gdHlwZWRBcnJheS0+dHlwZWRWZWN0b3IoKSArIGFj
Y2Vzc0luZGV4OwogICAgIAotICAgIEpTVmFsdWUgY291bnRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDIpOworICAgIEpTVmFsdWUgY291bnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAg
ICAgdW5zaWduZWQgY291bnQgPSBVSU5UX01BWDsKICAgICBpZiAoIWNvdW50VmFsdWUuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICBpbnQzMl90IGNvdW50SW50ID0gY291bnRWYWx1ZS50b0ludDMy
KGV4ZWMpOworICAgICAgICBpbnQzMl90IGNvdW50SW50ID0gY291bnRWYWx1ZS50b0ludDMyKGNh
bGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgICAgIGNvdW50ID0gc3RkOjptYXgoMCwgY291bnRJ
bnQpOwogICAgIH0KQEAgLTQ2MCw5ICs0NjAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGF0b21pY3NGdW5jV2FrZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihQYXJraW5nTG90Ojp1bnBhcmtDb3VudChwdHIsIGNvdW50KSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jWG9yKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNYb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIFhvckZ1bmMoKSk7CisgICAgcmV0
dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBYb3JG
dW5jKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21p
Y3NBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1
ZSBpbmRleCwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAppbmRleCAxOWEzMjVlMmI0Y2Ez
NzViMTFjM2I1MWZmOTU4YTE2MDFlZGE5MjJjLi45YWE2NTg3YTExNzZhNzg3NmRhNjM2Nzc3ZTYw
ZDcyMjVkM2M0NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3Rv
ckZ1bmNBc1VpbnROKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0
IENsYXNzSW5mbyBCaWdJbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCAmYmlnSW50CiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogQmlnSW50Q29uc3RydWN0b3I6OkJpZ0ludENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUsIGNhbGxCaWdJbnRDb25zdHJ1Y3RvciwgbnVsbHB0cikKQEAgLTExMCwx
OCArMTEwLDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIH0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJpbWl0
aXZlID0gdmFsdWUudG9QcmltaXRpdmUoc3RhdGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9Qcmlt
aXRpdmUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewogICAgICAgICBp
ZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCAiTm90IHNhZmUgaW50
ZWdlciJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsK
ICAgICAgICAgCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgaWYgKHByaW1pdGl2
ZS5pc0ludDMyKCkpCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQogICAgIAot
ICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KCpzdGF0ZSwgcHJpbWl0aXZlKTsK
KyAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludCgqY2FsbEZyYW1lLCBwcmltaXRp
dmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQg
QmlnSW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTQ0CkBAIC0xNDYsNyArMTQ2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEV4ZWNT
dGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihFeGVj
U3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1
bmNBc0ludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIC8vIEZJWE1FOiBb
RVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNVaW50
TgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNDQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3Bw
CmluZGV4IDRmMWUyNWE3MDdjMmViNjgxMWRmYWM4YTljN2E5YWI0ZmJjNDRmMjAuLmJhMGNlNzM5
MTcwMDM2ZjVjOTFiMzE1ZWUzMzQ4NDhhNTZhZGEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtNDEsOSArNDEsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1Zh
bHVlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
aWdJbnRQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfQogCkBAIC05MCw0MiArOTAsNDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBKU1ZhbHVl
IGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlzQmlnSW50VmFs
dWUodm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlz
QmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdmFsdWUp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIid0aGlzJyB2
YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7Ci0gICAgCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11
c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKKwogICAgIEFTU0VSVCh2YWx1ZSk7
CiAKLSAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVudChzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzY29wZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29w
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFN0cmluZyBy
ZXN1bHRTdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmcoc3RhdGUsIHJhZGl4KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBTdHJpbmcgcmVzdWx0
U3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKGNhbGxGcmFtZSwgcmFkaXgpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmIChy
ZXN1bHRTdHJpbmcubGVuZ3RoKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHJlc3VsdFN0cmluZ1swXSkp
OworICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhy
ZXN1bHRTdHJpbmdbMF0pOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcodm0sIHJlc3VsdFN0cmluZykpOworICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHJlc3VsdFN0cmluZyk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQ
cm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoc3Rh
dGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJ
bXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwotICAgIGlmIChKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1
ZSh2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgaWYgKEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7CiAgICAgCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0
IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9y
IEJpZ0ludE9iamVjdCJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NGViOTYwMDc3MGM2NGM0MjJmMTFlNDE1YmVkOGQ4OGY5ODg1Zjk4Mi4uNTk5Yjg4NTRlOGY1YTlh
NTEwOGFlZWMwMzA2ZmFiNDQ4ZDA2YjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCkBAIC0zMiwxOCArMzIsMTggQEAg
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEJvb2xlYW5Db25zdHJ1Y3Rv
cik7CiBjb25zdCBDbGFzc0luZm8gQm9vbGVhbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoQm9vbGVhbkNvbnN0cnVjdG9yKSB9OwogCiAvLyBFQ01BIDE1LjYuMQotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQm9vbGVhbkNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29s
ZWFuKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKSkpOwogfQogCiAvLyBFQ01BIDE1
LjYuMgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEJv
b2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIGJvb2xlYW4gPSBq
c0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKTsKLSAgICBTdHJ1Y3R1
cmUqIGJvb2xlYW5TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+Ym9vbGVhbk9iamVjdFN0cnVj
dHVyZSgpKTsKKyAgICBKU1ZhbHVlIGJvb2xlYW4gPSBqc0Jvb2xlYW4oY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKSk7CisgICAgU3RydWN0dXJlKiBib29sZWFuU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPmJvb2xlYW5PYmplY3RT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gQm9vbGVhbk9iamVjdDo6Y3JlYXRlKHZt
LCBib29sZWFuU3RydWN0dXJlKTsKICAgICBvYmotPnNldEludGVybmFsVmFsdWUodm0sIGJvb2xl
YW4pOwpAQCAtNjIsOSArNjIsOSBAQCB2b2lkIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi1KU09iamVjdCogY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVC
b29sZWFuKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBpbW1lZGlhdGVCb29sZWFuVmFsdWUpCitKU09iamVjdCogY29uc3RydWN0Qm9vbGVhbkZy
b21JbW1lZGlhdGVCb29sZWFuKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgaW1tZWRpYXRlQm9vbGVhblZhbHVlKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEJvb2xlYW5PYmpl
Y3QqIG9iaiA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5ib29sZWFu
T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iai0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwgaW1tZWRp
YXRlQm9vbGVhblZhbHVlKTsKICAgICByZXR1cm4gb2JqOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCAwNmY5ZmQzMGFkNTI3
ODk4MGE1MzEyODQ3ZDM2YWYwNTZjMTI3OWM2Li4zZjliNWRmZGJmZDg1NGQ0NDFkN2I2OTIxMDRh
YzM3ODQ5NjM0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApA
QCAtNjUsMTEgKzY1LDExIEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihm
YWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJpbmdzLmZh
bHNlU3RyaW5nKCkpOwogCkBAIC03OCw3ICs3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJvb2xlYW5PYmplY3QqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFs
dWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKQEAgLTg3LDE3ICs4NywxNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MudHJ1
ZVN0cmluZygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJv
dG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAodGhpc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZSk7CiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCb29s
ZWFuT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCmluZGV4IDA4Zjc5ZGY0ZDY3ODAxMzQ0
NGE2YTYzOWFiNGZmYTQ5YWU3MWI1YTAuLmU5NzE0ODg1MmQwYjhlNjc0NTQ3OGVmZjkyMDUzM2E0
YzViM2FmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAt
MzMsMTIgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBBcmdMaXN0OwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Njb3BlOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBlbnVtIGNsYXNzIENhbGxUeXBlIDogdW5zaWdu
ZWQgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCmluZGV4IGQ1ZDZmN2UyNDAwZGI3YzkwZWQxZjM2OWViZjgzMjc4MjZkOTRh
MWIuLjFmNzVjYjUwOWVhNjM1YWJlMjM3NTUxMDc1YTJhMTU0MjUyZTNiNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zMDYsNyAr
MzA2LDggQEAgaW5saW5lIEpTQXJyYXkqIGFsbG9jYXRlTmV3QXJyYXlCdWZmZXIoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNJbW11dGFibGUKIAogfSAvLyBuYW1lc3BhY2UgQ29tbW9u
U2xvd1BhdGhzCiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogI2RlZmluZSBTTE9X
X1BBVEgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRleCBi
MWU4ZTI5YjUwMmM3NzMwYjEzYjYzMGJjMzk3YmY5MTE2M2ViMzhhLi4yMTZkNjZkYzcxOGNiMmZh
OTUzNmQ5OWViNjk4MmUzOGI2YzZlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oCkBAIC0zMSwxNCArMzEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEJ5dGVjb2RlQ2FjaGVFcnJvcjsKIGNsYXNzIENhY2hlZEJ5dGVjb2RlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNPYmpl
Y3Q7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTeW1ib2w7
CiBjbGFzcyBWTTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29u
c3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNo
ZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRp
b24gPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNv
bGVDbGllbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQu
aAppbmRleCAxOThlZmYzYTM2ZjIwYzE3NzE1NzM1ODIxNDYyZjEzODBlNzU1MTE1Li45ODM4ZDk1
MjgzZDA4MzdmNTE2N2ZlOTJiM2NlMTRlM2VhNmFmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oCkBAIC0zNCw3ICszNCw4IEBAIGNsYXNzIFNj
cmlwdEFyZ3VtZW50czsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgQ29u
c29sZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zb2xlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnNvbGVPYmplY3QuY3BwCmluZGV4IDdmNGNmN2U0NjNmZWM5YjNkNTU2MTc2Y2MzNTNjYjhh
YjAyMGQ4YjYuLjZhNzIxMzFmNjI2OTc3NmViMmVhZTk2OGNiZGFjNjBhYWYwNzNkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCkBAIC00
OCwzMiArNDgsMzIgQEAgc3RhdGljIFN0cmluZyB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KENvbnNvbGVPYmplY3QpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jRGVidWcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0luZm8oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jV2FybihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
RGlyWE1MKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RyYWNlKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNDb3VudChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
UHJvZmlsZUVuZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jVGltZUxvZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNH
cm91cChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNS
ZWNvcmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1NjcmVlbnNob3QoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGVi
dWcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0xvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNXYXJuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RyYWNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jQ291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jUHJvZmlsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGVF
bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVMb2coSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
VGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3Vw
RW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jUmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gQ29uc29sZU9iamVj
dDo6c19pbmZvID0geyAiQ29uc29sZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoQ29uc29sZU9iamVjdCkgfTsKIApAQCAtMTI2LDMwOSArMTI2
LDMwOSBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2soRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbAogICAgIHJldHVybiB2YWx1ZS50b1dURlN0
cmluZyhleGVjKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbnNvbGVMb2dXaXRoTGV2
ZWwoRXhlY1N0YXRlKiBleGVjLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZUxldmVsIGxldmVsKQogewotICAgIENvbnNvbGVD
bGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVu
dCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNs
aWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5sb2dXaXRoTGV2ZWwoZXhlYywgSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCksIGxldmVsKTsKKyAgICBjbGllbnQt
PmxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGNhbGxGcmFtZSwgMCksIGxldmVsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jRGVidWcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjb25zb2xlTG9n
V2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6RGVidWcpOworICAgIHJldHVybiBjb25zb2xl
TG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkRlYnVn
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZl
bChleGVjLCBNZXNzYWdlTGV2ZWw6OkVycm9yKTsKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhM
ZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTWVzc2FnZUxldmVsOjpFcnJvcik7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2co
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0xvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVjLCBNZXNz
YWdlTGV2ZWw6OkxvZyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6TG9nKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0luZm8oRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0lu
Zm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpJbmZv
KTsKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgTWVzc2FnZUxldmVsOjpJbmZvKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGNvbnNvbGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpXYXJuaW5nKTsKKyAgICBy
ZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQo
KTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGll
bnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Y2xlYXIoZXhlYyk7CisgICAgY2xpZW50LT5j
bGVhcihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNEaXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNs
aWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAot
ICAgIGNsaWVudC0+ZGlyKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4
ZWMsIDApKTsKKyAgICBjbGllbnQtPmRpcihjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2Ny
aXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQo
KTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGll
bnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+ZGlyWE1MKGV4ZWMsIEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmRpclhNTChjYWxsRnJh
bWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jVGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnRhYmxl
KGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBj
bGllbnQtPnRhYmxlKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMo
Y2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY1RyYWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xl
Q2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAo
IWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IAotICAgIGNsaWVudC0+dHJhY2UoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVu
dHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dHJhY2UoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNBc3NlcnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwor
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgp
OwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCi0gICAgYm9vbCBjb25kaXRpb24gPSBleGVjLT5hcmd1bWVudCgwKS50b0Jv
b2xlYW4oZXhlYyk7CisgICAgYm9vbCBjb25kaXRpb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvQm9vbGVhbihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+YXNzZXJ0aW9uKGV4
ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAgICBjbGll
bnQtPmFzc2VydGlvbihjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGNhbGxGcmFtZSwgMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNDb3VudChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGllbnQgPSBnbG9i
YWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gbGFiZWwgPSB2
YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9y
RGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPmNvdW50KGV4ZWMsIGxhYmVs
KTsKKyAgICBjbGllbnQtPmNvdW50KGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3Vu
dFJlc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwot
ICAgIGF1dG8qIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNs
aWVudCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVj
dC0+dm0oKSk7CisgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50
KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmlu
ZyhleGVjKTsKKyAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgY2xpZW50LT5jb3VudFJlc2V0KGV4ZWMsIGxhYmVsKTsKKyAgICBjbGllbnQtPmNv
dW50UmVzZXQoY2FsbEZyYW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY1Byb2ZpbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAg
IGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICBzaXplX3QgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYg
KCFhcmdzQ291bnQpIHsKLSAgICAgICAgY2xpZW50LT5wcm9maWxlKGV4ZWMsIFN0cmluZygpKTsK
KyAgICAgICAgY2xpZW50LT5wcm9maWxlKGNhbGxGcmFtZSwgU3RyaW5nKCkpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGNvbnN0
IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVj
LCBleGVjLT5hcmd1bWVudCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGNsaWVudC0+cHJvZmlsZShleGVjLCB0aXRsZSk7CisgICAgY2xpZW50LT5wcm9m
aWxlKGNhbGxGcmFtZSwgdGl0bGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNQcm9maWxlRW5kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGll
bnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAg
ICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7Cisg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlm
ICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJvZmlsZUVuZChleGVjLCBTdHJpbmco
KSk7CisgICAgICAgIGNsaWVudC0+cHJvZmlsZUVuZChjYWxsRnJhbWUsIFN0cmluZygpKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZh
bHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnByb2ZpbGVFbmQoZXhlYywgdGl0bGUpOworICAgIGNs
aWVudC0+cHJvZmlsZUVuZChjYWxsRnJhbWUsIHRpdGxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFr
ZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2Jq
ZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBzaXplX3QgYXJnc0NvdW50ID0g
ZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoIWFyZ3NDb3VudCkgewotICAgICAgICBjbGllbnQt
PnRha2VIZWFwU25hcHNob3QoZXhlYywgU3RyaW5nKCkpOworICAgICAgICBjbGllbnQtPnRha2VI
ZWFwU25hcHNob3QoY2FsbEZyYW1lLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiB0aXRs
ZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKSk7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xp
ZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIHRpdGxlKTsKKyAgICBjbGllbnQtPnRha2VIZWFw
U25hcHNob3QoY2FsbEZyYW1lLCB0aXRsZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY1RpbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGll
bnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8g
bGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwg
PSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRpbWUoZXhl
YywgbGFiZWwpOworICAgIGNsaWVudC0+dGltZShjYWxsRnJhbWUsIGxhYmVsKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
VGltZUxvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
LSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmpl
Y3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVu
dCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGNsaWVudC0+dGltZUxvZyhleGVjLCBsYWJlbCwgSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOworICAgIGNsaWVudC0+dGltZUxvZyhjYWxsRnJhbWUs
IGxhYmVsLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDEpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jVGltZUVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVj
LT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29u
c29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0
TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFiZWxT
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGltZUVuZChleGVjLCBsYWJlbCk7CisgICAgY2xp
ZW50LT50aW1lRW5kKGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNv
bGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNv
bnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+dGltZVN0YW1wKGV4ZWMsIElu
c3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnRp
bWVTdGFtcChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxG
cmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNH
cm91cChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVu
dCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGll
bnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAg
ICBjbGllbnQtPmdyb3VwKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4
ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxh
cHNlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxP
YmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Z3JvdXBDb2xs
YXBzZWQoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwor
ICAgIGNsaWVudC0+Z3JvdXBDb2xsYXBzZWQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNv
bGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNs
aWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29s
ZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cEVuZChleGVjLCBJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5ncm91cEVu
ZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwg
MCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1JlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBj
bGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNs
aWVudC0+cmVjb3JkKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMs
IDApKTsKKyAgICBjbGllbnQtPnJlY29yZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2Ny
aXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25z
b2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNv
bGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+cmVjb3JkRW5kKGV4ZWMsIEluc3Bl
Y3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnJlY29y
ZEVuZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFt
ZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNTY3Jl
ZW5zaG90KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNv
bGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCi0gICAgY2xpZW50LT5zY3JlZW5zaG90KGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnNjcmVlbnNob3QoY2FsbEZyYW1lLCBJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggNTkzOGE5MGQ4OWY5NmMzOTE1
MTBlMDQzYzFhZDI1OTNmOTMxMDgwZC4uOTY3MzU4NTE0YjFkODMwNGU5MmJkYzY5MDNhNGRjMGZi
NWVlNDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERh
dGEuaApAQCAtMzUsMTAgKzM1LDExIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXJnTGlz
dDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNTY29wZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RUeXBlIDogdW5zaWduZWQgewog
ICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAppbmRleCBmNmI4ZmVlMDZhN2JjZTIwMDU1YTM0OTc3ODRkYWYyNzliZjBkZWNm
Li5mMGM1YjIwOTk5ZGM0ZTExYjVhMDZlYTI4NGI0NTIwZTFlM2M1ZTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDgg
KzQ1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlVVRDKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFy
c2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVVUQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IH0KIApAQCAtNjgsOCArNjksOCBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZgogCiBTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRGF0ZUNvbnN0cnVjdG9yKTsKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERhdGUoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0s
IHN0cnVjdHVyZSwgY2FsbERhdGUsIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpCkBAIC0x
NTAsMzggKzE1MSw0MyBAQCBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbgogICAgIHJldHVybiBEYXRl
SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZGF0ZVN0cnVjdHVyZSwgdmFsdWUpOwogfQogICAgIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdERhdGUoZXhlYywganNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkp
LCBleGVjLT5uZXdUYXJnZXQoKSwgYXJncykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RGF0ZShjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgYXJncykpOwogfQogCiAvLyBFQ01B
IDE1LjkuMgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERhdGUoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBH
cmVnb3JpYW5EYXRlVGltZSB0czsKICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUodm0sIFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBXVEY6OkxvY2Fs
VGltZSwgdHMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5n
KHZtLCBmb3JtYXREYXRlVGltZSh0cywgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgZmFsc2Up
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBTdHJpbmcgZGF0ZVN0ciA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBkYXRlU3Ry
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBhcnNlRGF0ZShleGVj
LCB2bSwgZGF0ZVN0cikpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGNhbGxGcmFtZSwgdm0sIGRhdGVTdHIpKSkpOwor
fQorCitKU1ZhbHVlIGRhdGVOb3dJbXBsKCkKK3sKKyAgICByZXR1cm4ganNOdW1iZXIoanNDdXJy
ZW50VGltZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4
ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoanNDdXJyZW50VGltZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVVUQyhFeGVjU3RhdGUqIGV4ZWMpIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlVVRDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZG91
YmxlIG1zID0gbWlsbGlzZWNvbmRzRnJvbUNvbXBvbmVudHMoZXhlYywgQXJnTGlzdChleGVjKSwg
V1RGOjpVVENUaW1lKTsKKyAgICBkb3VibGUgbXMgPSBtaWxsaXNlY29uZHNGcm9tQ29tcG9uZW50
cyhjYWxsRnJhbWUsIEFyZ0xpc3QoY2FsbEZyYW1lKSwgV1RGOjpVVENUaW1lKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRpbWVDbGlwKG1zKSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4IGMxNjI1
MGQzOTk3MjEzMWQzMjkzMGNkOWI0ZjAzMTZkM2QzNTA3ZjQuLmJlYzQwYTVjMzA4ZjgyOTk0N2Iy
NjVkZjg0NzQzMTJhMzk1MjI4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01NCw3ICs1NCw2IEBAIGNsYXNzIERhdGVDb25zdHJ1
Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIH07CiAKIEpTT2JqZWN0KiBj
b25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBuZXdUYXJn
ZXQsIGNvbnN0IEFyZ0xpc3QmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
Tm93KEV4ZWNTdGF0ZSopOworSlNWYWx1ZSBkYXRlTm93SW1wbCgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKaW5kZXggMTg1MjJkMTAwNDRkZTEzYTUwMjljNjU3NjM0OTIwNTNjOWFiYzk3My4uOTE3NzE2
ZDFlMTY4MDg4OTcyNWUzNTVhMjM3ZjUxZWYwNjlkYmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTcxLDUwICs3MSw1MCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91
cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3VycyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01p
bGxpc2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZZWFyKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0
RGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldEZ1bGxZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaW51dGVzKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
TWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0VVRDTWludXRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0RhdGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0
cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNP
U3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF5KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0TW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRp
bWV6b25lT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENEYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dEhvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dE1pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRTZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
TWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVU
Q1NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0
cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC01MjUsMzEgKzUyNSwzMSBAQCB2b2lkIERhdGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIAogLy8gRnVuY3Rpb25zCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKLSAg
ICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRU
aW1lLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGNhbGxG
cmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50KTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9V
VENTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBj
b25zdCBib29sIGFzVVRDVmFyaWFudCA9IHRydWU7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5z
dGFuY2UoZXhlYywgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50KTsKKyAg
ICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0RGF0
ZUFuZFRpbWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgCiAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52
YWxpZCBEYXRlIl9zKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJJbnZhbGlkIERhdGUiX3MpKTsKIAot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVV
VEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nKCJJbnZhbGlk
IERhdGUiX3MpKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVlZCBpbiBi
dWZmZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAqIDUgKDIgY2hhcmFjdGVycyBlYWNo
IGZvciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCkgKyA0ICguICsgMyBkaWdpdHMg
Zm9yIG1pbGxpc2Vjb25kcykKQEAgLTU3MywzMDYgKzU3MywzMDYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmco
YnVmZmVyLCBjaGFyYWN0ZXJzV3JpdHRlbikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNVVENW
YXJpYW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhlYywgRGF0
ZVRpbWVGb3JtYXREYXRlLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUlu
c3RhbmNlKGNhbGxGcmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlLCBhc1VUQ1ZhcmlhbnQpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmco
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jVG9UaW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gZm9ybWF0
ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdFRpbWUsIGFzVVRDVmFyaWFudCk7Cisg
ICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRlVGltZUZvcm1hdFRp
bWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRl
T2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShjYWxsRnJhbWUsIHRoaXNEYXRlT2JqLCB0
aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZUFuZFRpbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3Jt
YXRMb2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1i
ZXIoKSwgTG9jYWxlRGF0ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9j
YWxlRGF0ZShjYWxsRnJhbWUsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1i
ZXIoKSwgTG9jYWxlRGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8
RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0
ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmos
IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGNhbGxGcmFtZSwgdGhpc0RhdGVPYmos
IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvUHJpbWl0aXZlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8
IHRvIGJlIGFuIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0
ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJE
YXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3QgYXJndW1l
bnQuIik7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5
bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAotICAgIEpT
VmFsdWUgaGludFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4ZWMsIGhp
bnRWYWx1ZSk7CisgICAgSlNWYWx1ZSBoaW50VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOworICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJlZmVycmVk
UHJpbWl0aXZlVHlwZShjYWxsRnJhbWUsIGhpbnRWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAodHlwZSA9PSBOb1ByZWZl
cmVuY2UpCiAgICAgICAgIHR5cGUgPSBQcmVmZXJTdHJpbmc7CiAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5vcmRpbmFyeVRvUHJpbWl0
aXZlKGV4ZWMsIHR5cGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShjYWxsRnJhbWUsIHR5cGUp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRp
bWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVP
YmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzRGF0
ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0
YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3Jl
Z29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlh
bkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5E
YXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAg
IGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5E
YXRlVGltZS0+eWVhcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlh
bkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdv
cmlhbkRhdGVUaW1lLT55ZWFyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUg
PSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1vbnRoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
KiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhl
eGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1vbnRoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXREYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0
aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAg
Y29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmot
PmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGlt
ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Rh
dGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0Rh
dGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRh
dGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5n
cmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGhEYXkoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXko
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0RGF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9
IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUg
PSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRh
dGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT53ZWVrRGF5KCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Rh
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFt
aWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
Ci0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+d2Vla0RheSgpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nh
c3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
RGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9i
ai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxG
cmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRl
SW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2Jq
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVn
b3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZy
YW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Z3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5z
dGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPm1pbnV0ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRlcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0
YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3Jl
Z29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlh
bkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3Jp
YW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUp
OwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVn
b3JpYW5EYXRlVGltZS0+bWludXRlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRh
dGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAg
aWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRh
dGVUaW1lLT5zZWNvbmQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFu
Y2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsK
ICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29y
aWFuRGF0ZVRpbWUtPnNlY29uZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRl
T2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIGRv
dWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwogICAgIGlmIChzdGQ6
OmlzbmFuKG1pbGxpKSkKQEAgLTg4MywxNCArODgzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtcykpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKTsKICAgICBpZiAoc3RkOjppc25hbihtaWxsaSkpCkBAIC05MDEsMzEgKzkwMSwzMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIobXMpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0VGltZXpvbmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2Uq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRl
VGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAo
IWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFO
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLWdyZWdvcmlhbkRhdGVU
aW1lLT51dGNPZmZzZXQoKSAvIG1pbnV0ZXNQZXJIb3VyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRpbWUoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJ
bnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmop
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgZG91Ymxl
IG1pbGxpID0gdGltZUNsaXAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOworICAg
IGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsTnVtYmVyKG1pbGxpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1pbGxpKSk7CkBAIC0xMDE0LDg2ICsxMDE0
LDg2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVj
U3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21UaW1lQXJncyhleGVjLCAxLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1Zh
bHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMSwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDEsIFdURjo6
VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwg
MSwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0U2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4
ZWMsIDIsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFy
Z3MoY2FsbEZyYW1lLCAyLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXRO
ZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAyLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6VVRDVGltZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
U2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAzLCBXVEY6OkxvY2FsVGltZSk7
CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMywgV1RGOjpM
b2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhl
YywgMywgV1RGOjpVVENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3Mo
Y2FsbEZyYW1lLCAzLCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRIb3VycyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1l
QXJncyhleGVjLCA0LCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJv
bVRpbWVBcmdzKGNhbGxGcmFtZSwgNCwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENIb3VycyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENIb3Vy
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCA0LCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVy
biBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDQsIFdURjo6VVRDVGltZSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldERhdGUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
U2V0RGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAxLCBXVEY6OkxvY2FsVGltZSk7Cisg
ICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNhbGxGcmFtZSwgMSwgV1RGOjpMb2Nh
bFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMSwgV1RG
OjpVVENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1l
LCAxLCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVj
LCAyLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdz
KGNhbGxGcmFtZSwgMiwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhleGVjLCAyLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXROZXdW
YWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEZ1bGxZZWFyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEZ1
bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDMsIFdURjo6TG9jYWxUaW1lKTsKKyAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6OkxvY2Fs
VGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMs
IDMsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNh
bGxGcmFtZSwgMywgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSkgeyAKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7IAog
ICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxOdW1iZXIoUE5hTik7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgfQpAQCAtMTEwOSwxMSArMTEwOSwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBlbHNlIHsKICAgICAgICAgZG91YmxlIHNlY3MgPSBmbG9vciht
aWxsaSAvIG1zUGVyU2Vjb25kKTsKICAgICAgICAgbXMgPSBtaWxsaSAtIHNlY3MgKiBtc1BlclNl
Y29uZDsKLSAgICAgICAgaWYgKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBvdGhlciA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKSkKKyAgICAgICAgaWYgKGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBvdGhlciA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxs
RnJhbWUpKQogICAgICAgICAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUuY29weUZyb20oKm90aGVyKTsK
ICAgICB9CiAKLSAgICBkb3VibGUgeWVhciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50ZWdlclBy
ZXNlcnZlTmFOKGV4ZWMpOworICAgIGRvdWJsZSB5ZWFyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b0ludGVnZXJQcmVzZXJ2ZU5hTihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh5ZWFy
KSkgewogICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxOdW1iZXIoUE5hTik7CkBAIC0x
MTI3LDE2ICsxMTI3LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldFllYXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMp
OworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFu
RGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAKQEAg
LTExNDQsMjggKzExNDQsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpIC0gMTkwMCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlz
VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3Qo
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAotICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50b1ByaW1pdGl2ZShleGVj
LCBQcmVmZXJOdW1iZXIpOworICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50b1ByaW1p
dGl2ZShjYWxsRnJhbWUsIFByZWZlck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKHRpbWVWYWx1ZS5pc051bWJlcigpICYm
ICFzdGQ6OmlzZmluaXRlKHRpbWVWYWx1ZS5hc051bWJlcigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBKU1ZhbHVlIHRvSVNPVmFsdWUgPSBvYmpl
Y3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0lTT1N0cmluZyk7CisgICAgSlNWYWx1
ZSB0b0lTT1ZhbHVlID0gb2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b0lTT1N0cmluZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCB0b0lTT1ZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5v
dCBhIGZ1bmN0aW9uIl9zKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBhc09i
amVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsICp2bS5lbXB0eUxp
c3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5oCmluZGV4IDAwYmUyNjZmNWMzOGE2MzU1MjZlYjQ2MTkzOWI2
NTBhZjdiZjlkNzMuLmNhYzVhYjVlZGI2YzI0NDdkMTM1Y2JhN2JmN2E2NDYxNGNhMTFmOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKQEAgLTUy
LDYgKzUyLDYgQEAgY2xhc3MgRGF0ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
IH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUo
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAppbmRleCBiMzA0NjYwNTlhZTY1NTNk
N2RmNWJiZjE5N2VjZWIwNjJlZTJjMmEwLi41Y2ZiZmJmY2JkZjYwZWI3ZTZkNzFmZWE2OGVkNWUy
M2ZjOThjMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcApAQCAtMzMsOSAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBib29sIGlzQ29uc3RydWN0b3IgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9yKGV4ZWMtPnZtKCkpOworICAg
IGJvb2wgaXNDb25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXND
b25zdHJ1Y3RvcihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGlzQ29uc3RydWN0b3IpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0
aW9ucy5oCmluZGV4IDgwOGQ3Zjg4M2JmZjQ5YjU4Y2ZkYmU1ZDcyYzE0NjExNTNiN2IyZmMuLmI2
YTFjZWM3Y2IxM2EyYWI2OWRkOGQzMjhmM2IxODgzNjVkMjMzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmgKQEAgLTI5LDYgKzI5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGMwNGJjNTVjZTNjYTU0YWI5M2RmOTk0M2Iz
NmU2NDIxZmUyMmYyNjQuLjdiOGQ1MjFjMmI5MTE2ZmYyMGYwYWI4ZTAxMTE1M2FjYTNmNTYwMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMzMsMTIgKzMzLDEzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBTb3VyY2VDb2RlOwogY2xhc3MgU3RydWN0dXJlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogCiAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCiBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNw
cAppbmRleCBkYTY5MTE2YjQ2NDY2NTdjODg3Y2I1ZDI4OWM1NDJlODc4MmYwYmVlLi4zZWM2Mzc3
NmM5MDkwMDUyZDY5NmFjZGE5NjllMTkwMDE1Njc2NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzMsOCArMzMsOCBA
QCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRXJyb3JDb25zdHJ1Y3Rv
cik7CiAKIGNvbnN0IENsYXNzSW5mbyBFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoRXJyb3JDb25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0
dXJlLCBjYWxsRXJyb3JDb25zdHJ1Y3RvciwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvcikKQEAg
LTQ3LDI2ICs0NywyNiBAQCB2b2lkIEVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQogICAgIC8vIEVDTUEgMTUuMTEu
My4xIEVycm9yLnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCwg
anNOdW1iZXIoZ2xvYmFsT2JqZWN0KHZtKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVPcihPcHRp
b25zOjpkZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051bWJlcihnbG9i
YWxPYmplY3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVPcihPcHRpb25zOjpkZWZhdWx0RXJy
b3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6Ok5vbmUpKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNz
YWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5l
d1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZSgpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2Ug
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywg
ZmFsc2UpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Us
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUg
PSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoZXhlYy0+dm0oKSktPmVycm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Us
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdl
LCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogYm9vbCBFcnJvckNvbnN0cnVj
dG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTc5LDkg
Kzc5LDkgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICAgICAgICAgIGRvdWJsZSBlZmZl
Y3RpdmVMaW1pdCA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgICAgICBlZmZlY3RpdmVMaW1p
dCA9IHN0ZDo6bWF4KDAuLCBlZmZlY3RpdmVMaW1pdCk7CiAgICAgICAgICAgICBlZmZlY3RpdmVM
aW1pdCA9IHN0ZDo6bWluKGVmZmVjdGl2ZUxpbWl0LCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwotICAgICAgICAgICAgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KHZtKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlZmZlY3RpdmVMaW1pdCkpOworICAgICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWZmZWN0aXZl
TGltaXQpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3Qodm0pLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxs
b3B0KTsKICAgICB9CiAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtOTMsNyArOTMsNyBAQCBib29sIEVycm9yQ29u
c3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbQogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCi0gICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCh2bSktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAgICB0aGlz
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7
CiAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAppbmRleCA5MjJjZjRjMzZjYjZhYjU5MGM5OGU5ZjcwMTgwYWQzNjUwODk2
YWZiLi42MWM0ZjQxYTBmYTM4MDNjMTRkMGZjNGZjYWQxZjAwMDc5MTIwZjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoRXJyb3JQcm90b3R5cGUpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTcxLDI3ICs3MSwyNyBAQCB2b2lkIEVy
cm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0cmluZyYgbmFtZSkK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEtMjYyIDUuMSwgMTUuMTEuNC40Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExl
dCBPIGJlIHRoZSB0aGlzIHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogCiAgICAgLy8gMi4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGFz
T2JqZWN0KHRoaXNWYWx1ZSk7CiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IHJlY3Vyc2lvbiEKLSAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iaik7CisgICAgU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZh
bHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5
UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVy
blZhbHVlKTsKIAogICAgIC8vIDMuIExldCBuYW1lIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0
aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50ICJuYW1lIi4KLSAg
ICBKU1ZhbHVlIG5hbWUgPSB0aGlzT2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSk7CisgICAgSlNWYWx1ZSBuYW1lID0gdGhpc09iai0+Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICAvLyA0LiBJZiBuYW1lIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbmFt
ZSBiZSAiRXJyb3IiOyBlbHNlIGxldCBuYW1lIGJlIFRvU3RyaW5nKG5hbWUpLgpAQCAtOTksMTIg
Kzk5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgbmFtZVN0cmluZyA9ICJFcnJvciJfczsKICAgICBlbHNlIHsKLSAgICAgICAgbmFtZVN0cmlu
ZyA9IG5hbWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRv
V1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIC8vIDUuIExldCBtc2cgYmUgdGhlIHJl
c3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldF1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggYXJn
dW1lbnQgIm1lc3NhZ2UiLgotICAgIEpTVmFsdWUgbWVzc2FnZSA9IHRoaXNPYmotPmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSB0aGlz
T2JqLT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIChzaWMp
CkBAIC0xMTQsNyArMTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobWVzc2FnZS5pc1VuZGVm
aW5lZCgpKQogICAgICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAg
ICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAK
QEAgLTEyNyw3ICsxMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG5hbWUuaXNTdHJpbmcoKSA/IG5hbWUgOiBqc1N0cmluZyh2bSwgbmFtZVN0cmluZykp
OwogCiAgICAgLy8gMTAuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNvbmNhdGVuYXRpbmcgbmFtZSwg
IjoiLCBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIsIGFuZCBtc2cuCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVj
LCBuYW1lU3RyaW5nLCAiOiAiLCBtZXNzYWdlU3RyaW5nKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZy
YW1lLCBuYW1lU3RyaW5nLCAiOiAiLCBtZXNzYWdlU3RyaW5nKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkZ1enouaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enou
aAppbmRleCBjNjk0YjU3NjZjNDBlMTIwOWI3NDY3MDZmYjcyNjI4Yjc3NGUyMWIwLi5kMThmOWE3
NDU0Njc0Y2Y3ZTEwNDVmZTM0NjA5Njk3YTQ3ZWUxN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCkBAIC0yOSw4ICsyOSw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBU
aHJvd1Njb3BlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBDYWxsIHRoaXMg
b25seSBpZiB5b3Uga25vdyB0aGF0IGV4Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQuCiB2b2lk
IGRvRXhjZXB0aW9uRnV6emluZyhFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciog
d2hlcmUsIGNvbnN0IHZvaWQqIHJldHVyblBDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDhiY2NjZGE4YmVk
Njk3MDNlZjIwMGZhZGY1Y2I2ZGJlMDBjNTY3Ni4uNmNmYzRiZWUzMDQ2ZmY4OTFlMzY3MTRkOWRi
NzI3MmYwNDk0ZWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDE3ICszOCwxNyBAQCBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNv
bnN0IENsYXNzSW5mbyBGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVu
Y3Rpb25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1bmN0aW9uQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xp
c3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6RnVuY3Rpb24sIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogLy8gRUNN
QSAxNS4zLjEgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yIENhbGxlZCBhcyBhIEZ1bmN0aW9uCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxG
dW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFy
Z3MpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzKSk7
CiB9CiAKIEZ1bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4OSw3ICsxODksNyBAQCBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAvLyBFQ01BIDE1LjMuMiBUaGUg
RnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpT
VmFsdWUgbmV3VGFyZ2V0KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGFyZ3MsIHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cywgZXhlYy0+
Y2FsbGVyU291cmNlT3JpZ2luKCksIFN0cmluZygpLCBUZXh0UG9zaXRpb24oKSwgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlLCBuZXdUYXJnZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggOTYxOWMwMGYxMjI0
OThkMDE2YmJkZGUwOTk3M2JlYzVhYTQzNWViMi4uMjUyNjBkOTkzNjliOTQ1MjA5OGYwMzAwM2M0
ZDVkNmE2NDVmYzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBAIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShGdW5jdGlvblByb3RvdHlwZSk7CiAKIGNvbnN0IENs
YXNzSW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJv
dG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiAvLyBFQ01BIDE1LjMuNAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC03NiwxNiArNzYsMTYgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6aW5p
dFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cywgZXJyb3JHZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9u
ICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5h
bWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogCiAgICAgICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAg
ICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQ2xhc3MoKSkKQEAgLTEzNCwyMSArMTM0LDIxIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291
cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNT
dGFydE9mZnNldCgpICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwotICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFtZSh2bSksIHNvdXJjZSkp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+
bmFtZSh2bSksIHNvdXJjZSkpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRz
PEludGVybmFsRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0
cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IikpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJmdW5jdGlvbiAi
LCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogICAg
IH0KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKICAgICAgICAgaWYgKG9iamVjdC0+aXNGdW5j
dGlvbih2bSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBvYmplY3Qt
PmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59Iikp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAiZnVuY3Rpb24gIiwgb2JqZWN0LT5j
bGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZjNmZWNiM2RlMzRi
YTM5OTYwNDBkMmI0ODgzNDQ1YmI1YTJlZTA0OC4uNjQ2Mjg2ZDY0M2MzNjEyOWRjMzFkZWEwMjkw
ZDUwMzhkNTgyOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDE2ICsz
NiwxNiBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBn
bG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6R2VuZXJhdG9yLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xpc3QgYXJn
cyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rp
b24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAppbmRleCA5YWQxMjBjZGY0NzljOTgzZTkzYmRjZDI0MGZiNTcwNjQ5OGQ2N2Y3Li4w
MmEzYjViODc4ODI0NzkyZjJmZGE0MDk2ZTZjOWIxMWU1ZmFiZGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0luZGV4KHVpbnQz
Ml90IGluZGV4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKaW5kZXggNjVlOWEx
NzcxOTljOTE5NGQwMGQwZTQyOTJjYjQ0MTk4NDY0ZTVjYi4uNWUyNDk5YzkzZWM5NTAwYzEzM2U3
NmQ3YTU3NDA3OTM0Zjc2MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyhFeGVjU3RhdGUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0TG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODEsMTIgKzgx
LDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpkaXNhYmxlKFZNJiB2
bSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExvZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdExv
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgdmFsdWUgPSB0YXJnZXQu
dG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOworICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1dURlN0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGRhdGFMb2codmFsdWUsICJcbiIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwCmluZGV4IDIzOGU1NDMzM2VhZGNjYmVmODViM2ViNjA0MDNkNTdiMGJmMzg5
YjEuLjAwOTgyMGMyZDczOTg2OWY4MjYwM2M5Yzk0NDBlYjhjNzdiM2EyM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0z
OCw2ICszOCw3IEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRnVuY3Rpb24KICAgICA6IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2Z1bmN0aW9uRm9yQ2FsbChmdW5jdGlvbkZv
ckNhbGwpCiAgICAgLCBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KGZ1bmN0aW9uRm9yQ29uc3RydWN0
ID8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcikK
KyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
KQogewogICAgIC8vIGV4ZWMtPnZtKCkgd2FudHMgY2FsbGVlcyB0byBub3QgYmUgbGFyZ2UgYWxs
b2NhdGlvbnMuCiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4
IGFiZjAxY2NiMjdiMjZiYTdmNjNiNGUzYjk4ZTI2OWJiMzY5NmY4MjAuLmFhMmU5NWE4YzIzOWZm
OTMyYmI2YjBiZWQwNjEzMTU2NjRmMDUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTc2LDYgKzc2LDEzIEBAIGNsYXNzIElu
dGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rpb25Gb3JDb25z
dHJ1Y3QpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0
aW9uLCBtX2dsb2JhbE9iamVjdCk7CisgICAgfQorCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwgU3RydWN0
dXJlKiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbkZvckNvbnN0cnVjdCk7CiAKQEAgLTkxLDYgKzk4LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbiA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5j
dGlvbkZvckNvbnN0cnVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb3JpZ2luYWxO
YW1lOworICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9
OwogCiBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1RhcmdldCwgU3RydWN0
dXJlKiBiYXNlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDNmNDc4ZTE5ODRjZGRlYmZm
ZDhiYTkyYzg1YmVjZTczMDAwMWE3ZS4uOTA1OWU2YjM3YTVhMzEyZjIyMzcxNzQwMGJiMDcyYTYx
YTQ5NzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0KIApAQCAtNDksOCArNDksOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzTwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbElu
dGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdElu
dGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0lu
Zm8gSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgJmNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcikgfTsKIApAQCAtODUs
MzMgKzg1LDMzIEBAIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsCiAgICAgY29sbGF0b3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChb
bG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3VGFy
Z2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9i
amVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyAyLiBMZXQgY29s
bGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlQ29sbGF0
b3JQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChjb2xsYXRvcikuCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29u
c3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSktPmNvbGxhdG9yU3RydWN0dXJlKHZtKSk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmNvbGxhdG9yU3Ry
dWN0dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChjb2xsYXRvcik7CiAKICAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBjb2xsYXRvci0+
aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3IpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENv
bGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxl
cyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlz
IHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwg
ZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyBOZXdUYXJnZXQgaXMgYWx3
YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgogCi0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7Ci0gICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNhbGxlZSA9IGpzQ2Fz
dDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNh
bGxlZSA9IGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAKICAgICAvLyBGSVhNRTogQ29sbGF0b3IgZG9lcyBub3QgZ2V0IHRoZSB3b3JrYXJv
dW5kIGZvciBFQ01BLTQwMiAxLjAgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CkBAIC0xMjIsMjUgKzEyMiwyNCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNT
dGF0ZSogc3RhdGUpCiAgICAgQVNTRVJUKGNvbGxhdG9yKTsKIAogICAgIC8vIDQuIFJldHVybiBJ
bml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAgIGNvbGxh
dG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRl
LT5hcmd1bWVudCgxKSk7CisgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVz
T2YoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENv
bGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTAuMi4yIEludGwuQ29sbGF0b3Iu
c3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCiAK
ICAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0
KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmlj
YWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAogICAgIC8vIDIuIFJldHVybklmQWJydXB0
KHJlcXVlc3RlZExvY2FsZXMpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxh
dG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9i
YWxPYmplY3Qodm0pOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBnbG9iYWxPYmplY3QtPmludGxDb2xsYXRvckF2
YWlsYWJsZUxvY2FsZXMoKSwgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRl
ZExvY2FsZXMoKmNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5pbnRsQ29sbGF0b3JBdmFpbGFibGVM
b2NhbGVzKCksIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKaW5kZXggNzBmMTFhZTIxM2E3ZmY5
NTgzZTNiNzFiZTUzNzhjMzllMTU0OGJiMC4uM2VkOWJlYjg3MzMxZGNmNzQ5OGQxNTBlMDczMmQ3
NzUzOGJiNGEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZShWTSYg
dm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPmNvbGxhdG9yU3RydWN0dXJlKCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4g
Z2xvYmFsT2JqZWN0KCktPmNvbGxhdG9yU3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwCmluZGV4IGNkZjQ4NmI1ODU0NTA5Nzk1YjAzNzgyNjY2ZDEyNWJmZTcxZjVmZDUuLjVh
NTRjYTU4NDY4NWUyYjYwYzE0NDJjYzM2YzcyOWJkZjUzMDg0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApA
QCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRv
clByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNzgsNDUgKzc4LDQ1IEBAIHZvaWQg
SW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShFeGVjU3RhdGUqIHN0YXRl
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0Nv
bXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAv
LyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKICAgICAv
LyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgLy8gMi4gQXNzZXJ0OiBU
eXBlKGNvbGxhdG9yKSBpcyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVk
Q29sbGF0b3JdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCi0gICAgSW50bENv
bGxhdG9yKiBjb2xsYXRvciA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihzdGF0ZS0+dGhpc1ZhbHVl
KCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0Nhc3Q8SW50bENvbGxhdG9yKj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyAzLiBJZiB4IGlzIG5vdCBwcm92aWRl
ZCwgbGV0IHggYmUgdW5kZWZpbmVkLgogICAgIC8vIDQuIElmIHkgaXMgbm90IHByb3ZpZGVkLCBs
ZXQgeSBiZSB1bmRlZmluZWQuCiAgICAgLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCkuCi0gICAg
SlNTdHJpbmcqIHggPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpOworICAgIEpT
U3RyaW5nKiB4ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwog
ICAgIC8vIDYuIFJldHVybklmQWJydXB0KFgpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNy4gTGV0IFkgYmUgVG9TdHJpbmcoeSku
Ci0gICAgSlNTdHJpbmcqIHkgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9TdHJpbmcoc3RhdGUpOwor
ICAgIEpTU3RyaW5nKiB5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1N0cmluZyhjYWxsRnJh
bWUpOwogICAgIC8vIDguIFJldHVybklmQWJydXB0KFkpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gOS4gUmV0dXJuIENvbXBhcmVT
dHJpbmdzKGNvbGxhdG9yLCBYLCBZKS4KLSAgICBhdXRvIHhWaWV3V2l0aFN0cmluZyA9IHgtPnZp
ZXdXaXRoVW5kZXJseWluZ1N0cmluZyhzdGF0ZSk7CisgICAgYXV0byB4Vmlld1dpdGhTdHJpbmcg
PSB4LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHlWaWV3V2l0aFN0
cmluZyA9IHktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhzdGF0ZSk7CisgICAgYXV0byB5Vmll
d1dpdGhTdHJpbmcgPSB5LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0
cmluZ3MoKnN0YXRlLCB4Vmlld1dpdGhTdHJpbmcudmlldywgeVZpZXdXaXRoU3RyaW5nLnZpZXcp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3ItPmNvbXBhcmVTdHJpbmdzKCpjYWxsRnJhbWUsIHhWaWV3V2l0aFN0cmluZy52aWV3LCB5Vmll
d1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBh
cmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgotICAgIEludGxD
b2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBzdGF0
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWND
YXN0PEludGxDb2xsYXRvcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHN0YXRlLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOwog
CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xsYXRvci0+Ym91bmRDb21w
YXJlKCk7CiAgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSBpcyB1bmRlZmlu
ZWQsCkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
Q29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUKICAgICAgICAg
SlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDIsICJjb21wYXJlIl9zLCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5z
aWMpOwogCiAgICAgICAgIC8vIGMuIExldCBiYyBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKr
dGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpj
cmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51
bGxwdHIsIDIsICJjb21wYXJlIl9zKTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3Qs
IGNvbGxhdG9yLCBudWxscHRyLCAyLCAiY29tcGFyZSJfcyk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgY29s
bGF0b3IuW1tib3VuZENvbXBhcmVdXSB0byBiYy4KICAgICAgICAgY29sbGF0b3ItPnNldEJvdW5k
Q29tcGFyZSh2bSwgYm91bmRDb21wYXJlKTsKQEAgLTEzNiwxNyArMTM2LDE3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShF
eGVjU3RhdGUqIHN0YXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZENvbXBhcmUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTAuMy41
IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjAp
Ci0gICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9y
Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9
IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghY29sbGF0b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJl
c29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCBiNTRlY2IwY2IwZWNjYTY0YzNhZmI4YTZl
MjJkYjU0NmFhMzM1YjkxLi43YTRiMDc3MGU0ODEzMjkyZTYyYWU0NmZjOTFhNGVlYzQ3ZTk5MzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2Nh
bGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02OSw4ICs2OSw4IEBAIFN0cnVjdHVy
ZSogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVG
b3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxEYXRlVGltZUZvcm1h
dCwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KQpAQCAtODUsNjMgKzg1LDYyIEBAIHZvaWQg
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50
bERhdGVUaW1lRm9ybWF0UHJvCiAgICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0
ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9y
bWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYg
TmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0
aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyAyLiBM
ZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFy
Z2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVw
dChkYXRlVGltZUZvcm1hdCkuCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgp
LCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUo
KSktPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKHZt
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CiAK
ICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0
LCBsb2NhbGVzLCBvcHRpb25zKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZGF0ZVRpbWVG
b3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3Jt
YXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3JtYXQgKFts
b2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJn
ZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2Jq
ZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBp
cyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91
bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkg
cGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzY3OQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNl
V2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0
Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2bSkgeworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91
bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PigqY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CiAgICAgICAg
IC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rv
cihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBS
ZXR1cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCiAgICAgICAgIEludGxEYXRlVGltZUZvcm1h
dCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgY2FsbGVl
LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgICAgICBBU1NFUlQoZGF0ZVRpbWVG
b3JtYXQpOwogCiAgICAgICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQo
ZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAgICAgICBkYXRlVGltZUZvcm1h
dC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBz
dGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpOwogICAgICAgICByZXR1cm4gZGF0ZVRpbWVGb3JtYXQ7CiAgICAgfSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICAvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEuIExldCBh
dmFpbGFibGVMb2NhbGVzIGJlICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0u
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5n
bG9iYWxPYmplY3Qodm0pOwogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2Nh
bGVzID0gZ2xvYmFsT2JqZWN0LT5pbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7
CiAKICAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVM
aXN0KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5v
bmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRM
b2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2Fs
ZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJn
dW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCmluZGV4IGMyYThmNWEyZGZmNzQ1MzgxNTdj
Y2MyMDE0ZjZiOGZhMjUzNDM5OWEuLjA3ZTA3ODAwZWFkZTYyZTE4MDY0MGUyYjYwMzZjMTJjYzJi
MTQ1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5k
YXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1h
dFN0cnVjdHVyZShWTSYpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5kYXRlVGltZUZv
cm1hdFN0cnVjdHVyZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAppbmRleCA3MTU4NTdiOGE1OTgzOWY0NjhmYjRiNzY0MWM2MGZiNjMyMGU3ZmY5Li4zYThm
MDFkMDI5YTg1YTRlZDBhNmYxN2IwN2ZkMjM1ZTRmYWU1YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAKQEAgLTQxLDExICs0MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgSlNDX0lDVV9IQVNfVUZJRUxEUE9TSVRFUgotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2VuZGlmCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTkyLDQ4ICs5Miw0OCBAQCB2b2lkIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJPYmplY3QiKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9y
bWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMi4x
LjcgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucyAoRUNNQS00MDIpCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZm9ybWF0ZGF0ZXRpbWUKIAotICAgIEludGxEYXRl
VGltZUZvcm1hdCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGRhdGUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBkb3VibGUgdmFsdWU7CiAKICAgICBpZiAoZGF0ZS5pc1VuZGVm
aW5lZCgpKQotICAgICAgICB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KHN0YXRlKSku
dG9OdW1iZXIoc3RhdGUpOworICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIo
Y2FsbEZyYW1lKTsKICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRh
dGUudG9OdW1iZXIoc3RhdGUpKTsKKyAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUu
dG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KCpzdGF0ZSwgdmFsdWUpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQo
KmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBv
YmplY3QuCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxEYXRlVGlt
ZUZvcm1hdCogZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92
aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAg
ICAgaWYgKCFkdGYpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0
dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgZHRmID0ganNE
eW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAg
IC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFkdGYpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIklu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKICAg
ICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLApAQCAtMTQzLDcgKzE0Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVy
Rm9ybWF0KEV4ZWNTdGF0ZSoKICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0
aCBwcm9wZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMgbGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVD
TUEtNDAyIDEuMCkKICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxEYXRlVGltZUZv
cm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBMZXQg
YmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKKyAgICAgICAg
Ym91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIC8vIGQuIFNldCBkdGYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBkdGYtPnNl
dEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CkBAIC0xNTMsNTIgKzE1Myw1MiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdChFeGVjU3RhdGUqCiB9CiAKICNpZiBKU0NfSUNVX0hBU19VRklFTERQT1NJVEVSCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40IElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAyIDQuMCkK
ICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1JbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzCiAKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwg
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQi
X3MpKTsKIAotICAgIEpTVmFsdWUgZGF0ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGRvdWJsZSB2YWx1ZTsKIAog
ICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGRhdGVOb3coc3RhdGUpKS50b051bWJlcihzdGF0ZSk7CisgICAgICAgIHZhbHVlID0gZGF0
ZU5vd0ltcGwoKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIGVsc2UgewotICAgICAgICB2YWx1
ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihzdGF0ZSkpOworICAgICAgICB2YWx1ZSA9
IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZv
cm1hdFRvUGFydHMoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqY2FsbEZy
YW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRl
VGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlk
ZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAg
IGlmICghZGF0ZVRpbWVGb3JtYXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlu
dGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
ZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCB2
YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0Il9zKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVz
b2x2ZWRPcHRpb25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODVjZDY0M2Q1ZTYzOTgwMTI5OTBiOWFiOGU0NGEx
ZDdkMDVmNmU3MS4uOWRlOGQ1ZWU4ZmJmYTI3MWNiYmFmY2NhMTJhYmRmMGQ1MmQ4NjIyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogfQogCkBAIC02OSw4ICs2OSw4IEBAIFN0cnVjdHVyZSogSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoK
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJl
ckZvcm1hdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3Ry
dWN0dXJlLCBjYWxsSW50bE51bWJlckZvcm1hdCwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdCkK
QEAgLTg1LDYzICs4NSw2MiBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eQogICAgIG51bWJlckZv
cm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMS4x
LjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIu
MCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJl
IHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFy
Z2V0LgogICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29u
c3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCiAgICAgLy8gMy4g
UmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+
bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+
anNDYWxsZWUoKSktPm51bWJlckZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJl
KHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOwogCiAgICAg
Ly8gNC4gUmV0dXJuIEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgbnVtYmVyRm9ybWF0LT5pbml0
aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJn
dW1lbnQoMSkpOworICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0
ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51
bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdU
YXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBi
ZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvciog
Y2FsbGVlID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0Nh
bGxlZSgpKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxlZSA9IGpzQ2Fz
dDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwog
CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGgg
RUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3Ry
dWN0b3I8SW50bE51bWJlckZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGNhbGxl
ZSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdElu
dGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxOdW1i
ZXJGb3JtYXQ+KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxlZSwgWyZd
IChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNy
ZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4K
ICAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KICAgICAgICAgSW50
bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZt
LCBjYWxsZWUtPm51bWJlckZvcm1hdFN0cnVjdHVyZSh2bSkpOwogICAgICAgICBBU1NFUlQobnVt
YmVyRm9ybWF0KTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1h
dChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgotICAgICAgICBudW1iZXJGb3JtYXQt
PmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRl
LT5hcmd1bWVudCgxKSk7CisgICAgICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZv
cm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKICAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdDsKICAgICB9KSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVu
Y1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8g
MTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9w
dGlvbnNdKSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMg
YmUgJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCi0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwog
ICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0
LT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCiAgICAgLy8gMi4gTGV0IHJl
cXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxl
TG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMo
KmNhbGxGcmFtZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oCmluZGV4IGE0OTlkM2ZlNmE3MTU0Y2M2M2JmYzVmYzQzMThmYjIxYjZkMDFiMzAuLjAz
YWJlYmFlYzQyMWFkN2E3ODBiOWQzZTgyZmZmZmExZGU5OWJiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyBy
ZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZShWTSYpIGNvbnN0IHsgcmV0dXJuIGdsb2Jh
bE9iamVjdCgpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNTcwOWM5MjJiODVhN2UzODI3ZGI3NTcyNWRlYTc5Zjk2
YjRhZjliOS4uNWQxZjg0NGU4Y2QyOWY1MmZiNzA2MDI1YWRlM2I2NWI0MWEyOTA0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAKQEAgLTM5LDExICszOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNpZiBIQVZFKElDVV9GT1JNQVRfRE9VQkxFX0ZPUl9G
SUVMRFMpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTg5LDQ0ICs4OSw0NCBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJPYmplY3Qi
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTEuMy40
IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5m
IGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0
IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qg
d2hvc2UgdmFsdWUgIHRydWUuCi0gICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0g
anNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxO
dW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyAzLiBJZiB2YWx1ZSBpcyBub3QgcHJvdmlk
ZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCiAgICAgLy8gNC4gTGV0IHggYmUgVG9OdW1iZXIo
dmFsdWUpLgotICAgIGRvdWJsZSBudW1iZXIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
c3RhdGUpOworICAgIGRvdWJsZSBudW1iZXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVt
YmVyKGNhbGxGcmFtZSk7CiAgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQoeCkuCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA2LiBSZXR1
cm4gRm9ybWF0TnVtYmVyKG5mLCB4KS4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqc3RhdGUsIG51bWJlcikp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJG
b3JtYXQtPmZvcm1hdE51bWJlcigqY2FsbEZyYW1lLCBudW1iZXIpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51
bWJlckZvcm1hdCBvYmplY3QuCi0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRs
TnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHBy
b3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5z
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkK
ICAgICBpZiAoIW5mKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3Rp
dHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAgICB9CiAKICAgICBp
ZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0
Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9y
bWF0Il9zKSk7CiAgICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5i
b3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmlu
ZWQsCkBAIC0xMzYsNyArMTM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3QKICAgICAgICAg
Ly8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBK
U0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgMSwgImZvcm1hdCJfcywgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5v
SW50cmluc2ljKTsKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUo
Riwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxs
cHRyLCAxLCAiZm9ybWF0Il9zKTsKKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgbmYs
IG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3Jt
YXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7
CkBAIC0xNDYsNDUgKzE0Niw0NSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdAogfQogCiAjaWYg
SEFWRShJQ1VfRk9STUFUX0RPVUJMRV9GT1JfRklFTERTKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0VG9QYXJ0cyAoRUNNQS00MDIpCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
NDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLmZvcm1hdHRvcGFydHMKIAotICAg
IEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJl
ckZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxOdW1iZXJGb3JtYXQq
IG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW51bWJlckZvcm1hdCkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9z
KSk7CiAKLSAgICBkb3VibGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3Rh
dGUpOworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqc3RhdGUsIHZhbHVlKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9Q
YXJ0cygqY2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMS4zLjUgSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bE51
bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVy
Rm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21w
YXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICgh
bnVtYmVyRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3Rp
dHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIG51bWJlckZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7CiAgICAg
fQogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVz
b2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKaW5kZXggODAxMjk0YThiN2I4NWJlZWU2OWRjYTQyMDc1MTEwN2Vk
MTRjYzMyNy4uNGU4ZGQzYzg0NGI5MDlmZDJlM2FhNzlmZmMxZTY1OTM5ZTNlMGJjMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShJbnRsT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxM
b2NhbGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewpAQCAt
OTE3LDI3ICs5MTcsMjYgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2Fs
ZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICByZXR1cm4gbnVtYmVyaW5nU3lzdGVtczsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNh
bExvY2FsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIEludGwuZ2V0Q2Fub25pY2Fs
TG9jYWxlcyhsb2NhbGVzKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8j
c2VjLWludGwuZ2V0Y2Fub25pY2FsbG9jYWxlcwogCi0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsZUxpc3QgPSBj
YW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBsb2NhbGVMaXN0ID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxlbmd0aCA9IGxvY2FsZUxpc3Quc2l6
ZSgpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxl
ZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTQXJyYXkqIGxvY2FsZUFycmF5ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgbGVuZ3RoKTsKICAgICBp
ZiAoIWxvY2FsZUFycmF5KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0ZSwg
c2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgbG9jYWxlQXJyYXktPnB1dERp
cmVjdEluZGV4KHN0YXRlLCBpLCBqc1N0cmluZyh2bSwgbG9jYWxlTGlzdFtpXSkpOworICAgICAg
ICBsb2NhbGVBcnJheS0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBpLCBqc1N0cmluZyh2bSwg
bG9jYWxlTGlzdFtpXSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2NhbGVB
cnJheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjAyMjI1MGNhZjExYWYzYzM5NTBh
MWVmMTAxMzlkZDQ4YzM4OWVlMi4uMzdhY2M4OWUxNjYxYTMwOGE0OTE0YmUyMTA2OThjMjRhYmEw
ZTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjcsOCArNjcsOCBAQCBTdHJ1Y3R1cmUqIEludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZwogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
UGx1cmFsUnVsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OkludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxJbnRsUGx1cmFsUnVsZXMsIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcykKQEAg
LTgzLDQ3ICs4Myw0NiBAQCB2b2lkIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZQogICAgIHBsdXJhbFJ1bGVz
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEzLjIuMSBJ
bnRsLlBsdXJhbFJ1bGVzIChbIGxvY2FsZXMgWyAsIG9wdGlvbnMgXSBdKQogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKS0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUodm0pKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PElu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+cGx1cmFs
UnVsZXNTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0gSW50bFBs
dXJhbFJ1bGVzOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKHBsdXJhbFJ1bGVz
KTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwbHVyYWxSdWxlcy0+aW5pdGlhbGl6ZVBs
dXJhbFJ1bGVzKCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkp
OworICAgIHBsdXJhbFJ1bGVzLT5pbml0aWFsaXplUGx1cmFsUnVsZXMoKmNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVsZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEzLjIu
MSBJbnRsLlBsdXJhbFJ1bGVzIChbIGxvY2FsZXMgWyAsIG9wdGlvbnMgXSBdKQogICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiUGx1cmFsUnVsZXMiKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQbHVyYWxSdWxlcyIpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMy4z
LjIgSW50bC5QbHVyYWxSdWxlcy5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9u
cyBdKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1
cmFscnVsZXMuc3VwcG9ydGVkbG9jYWxlc29mCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0LT5pbnRsTnVtYmVy
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3RhdGUs
IGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVudCgxKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0
ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmgKaW5kZXggNzk4ODliZmMyNDQ5YjA2NjI1YmVlOTc3YTJkNjRmMDNjNWE4
ZmNhYi4uZDgzZWExYzJjM2YzMTRjYzIzOWMyZjJlYzgyYjdhYmM0NTA1NGQ2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZShWTSYgdm0pIGNvbnN0
IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7IH0KKyAg
ICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xv
YmFsT2JqZWN0KCktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuY3BwCmluZGV4IGQ5OTNkZjVkMDE3MmJjZGMxNDhlZmE3ZTY4YTBiOGZlYTA3
MTg1YjYuLjFiZmNkNDNkZDJlOWNhNWYyMWYyNmFhMmU3MDAwNzUyYTI5NzMxYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
RnVuY1NlbGVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jU2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAt
NzgsMzcgKzc4LDM3IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk9i
amVjdCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuNC4zIElu
dGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCAodmFsdWUpCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2Vs
ZWN0Ci0gICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50
bFBsdXJhbFJ1bGVzKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bFBsdXJhbFJ1
bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKCFwbHVyYWxSdWxlcykKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRs
LlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50
bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKSk7CiAKLSAgICBkb3Vi
bGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUpOworICAgIGRvdWJs
ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxl
Y3QoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KCpjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuNC40
IEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQogICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMucHJvdG90
eXBlLnJlc29sdmVkb3B0aW9ucwotICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBq
c0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVy
YWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFs
UnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJh
bFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBQbHVyYWxSdWxlcyJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMt
PnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDU3NWM1N2MxZTIyOWQwZGViY2U3ODNhYTk1YWUyOTRh
NTVkM2RlMWMuLjA0OWI2MGNlNjc2NzhhMjdjYzA0ZmRmMGI5ZGVjYzQxNDJhNDc5NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFy
cmF5QnVmZmVyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8PgogY29uc3QgQ2xhc3NJbmZvIEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0gewpAQCAtNjcsMjYgKzY3LDI2IEBAIHZv
aWQgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNBcnJhCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVz
U3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogCiAgICAgaWYgKHNoYXJp
bmdNb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+aXNWaWV3LCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaXNWaWV3UHJpdmF0ZU5hbWUoKSwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgfQog
fQogCiB0ZW1wbGF0ZTxBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlPgotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNo
YXJpbmdNb2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNo
YXJpbmdNb2RlPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0ganNDYXN0PEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IqPihj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0gICAgU3RydWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpKTsKKyAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCkt
PmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aDsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGxlbmd0aCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvSW5kZXgoZXhlYywgImxlbmd0aCIpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSkgeworICAgICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvSW5kZXgoY2FsbEZyYW1lLCAibGVuZ3RoIik7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3Qgc2F5IHNvLCBpdCBpcyBpbiBm
YWN0IGNvcnJlY3QgdG8gc2F5CkBAIC05Nyw3ICs5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNv
bnN0CiAKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCAx
KTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAgIAog
ICAgIGlmIChzaGFyaW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpCiAg
ICAgICAgIGJ1ZmZlci0+bWFrZVNoYXJlZCgpOwpAQCAtMTE5LDE5ICsxMTksMTkgQEAgY29uc3Qg
Q2xhc3NJbmZvKiBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6
aW5mbygpCiAgICAgcmV0dXJuICZKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJp
bmdNb2RlPjo6c19pbmZvOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJh
eUJ1ZmZlciIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFycmF5
QnVmZmVyIikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMjQuMS4zLjEK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5jSXNWaWV3KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJGdW5j
SXNWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
OwogfQogCiAvLyBJbnN0YW50aWF0ZSBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9ycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmgKaW5kZXggNDJmMTYzZmUzOGFjYzRmN2NjY2M5M2U4N2JlMTY5NjJjOWNj
YjM0Yi4uOGFhY2E1ZGU3Y2Y2NGE1ZTQ0NTU0ZjIxNWFmNTFmYThkNjEzYTdiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBKU0dlbmVyaWNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNp
ZXNTeW1ib2wpOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNBcnJheUJ1ZmZl
clByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwCmluZGV4IGM5NzgyNDI0MWVkYTBiNTJkZGQxYTY4ZTAxZmNlNWVlY2I0MTY4MzMu
LmIxMTAxNjBmMzE2ZTBmMzgwMzY0Y2U4OTkyYTMzOThiOGY0YjQyNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUu
Y3BwCkBAIC0zNSwzMCArMzUsMjggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZm
ZXJQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpOwotICAgIAotICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpT
QXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0IHx8IHRoaXNP
YmplY3QtPmltcGwoKS0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIEFycmF5QnVmZmVy
LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIEFycmF5QnVmZmVyLiJfcyk7CiAKLSAgICBk
b3VibGUgYmVnaW4gPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXIoZXhlYyk7CisgICAgZG91
YmxlIGJlZ2luID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludGVnZXIoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAK
ICAgICBkb3VibGUgZW5kOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICBlbmQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXIo
ZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgZW5kID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXIo
Y2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmltcGwoKS0+
Ynl0ZUxlbmd0aCgpOwogICAgIAogICAgIGF1dG8gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1w
bCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVy
LT5zaGFyaW5nTW9kZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAK
ICAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIHN0
cnVjdHVyZSwgV1RGTW92ZShuZXdCdWZmZXIpKTsKICAgICAKQEAgLTY2LDM3ICs2NCwzNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1Ns
aWNlKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFz
Y3JpcHRfc2hhcmVkbWVtL3NobWVtLmh0bWwjc2VjLWdldC1hcnJheWJ1ZmZlci5wcm90b3R5cGUu
Ynl0ZWxlbmd0aAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZm
ZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZm
ZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIG5vdCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIG5vdCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVj
dC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKIC8vIGh0dHA6Ly90YzM5LmdpdGh1Yi5p
by9lY21hc2NyaXB0X3NoYXJlZG1lbS9zaG1lbS5odG1sI1N0cnVjdHVyZWREYXRhLlNoYXJlZEFy
cmF5QnVmZmVyLnByb3RvdHlwZS5nZXRfYnl0ZUxlbmd0aAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3Ro
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNo
YXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkg
YnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkg
YnVmZmVyIGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJl
IGFuIGFycmF5IGJ1ZmZlciJfcyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1NoYXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgc2hhcmVk
IGFycmF5IGJ1ZmZlciJfcyk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKSkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
Y3BwCmluZGV4IDdkNjU5ZGJjMzQ0ODM4MmU4YzQ4NTdkOGFlODE5OTVkNGQ0YjBiYjcuLjY2MGVk
NmU3MzRjYmUwOTY3YTBmZTI2N2Y2YzE4OWQ5MGVmYzhlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMzUsMTMgKzM1LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNCb3VuZEZ1bmN0aW9uOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNCb3VuZEZ1bmN0aW9uKSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0
aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBlbmQoZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOwpAQCAtNTEs
MTYgKzUxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlw
b2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGV4ZWMtPnZt
KCksIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7
CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQm91bmRGdW5jdGlvbiogYm91
bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsK
KyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0
aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9
IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOwogCkBAIC02OSwxMCArNjksMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyAr
K2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShp
KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENv
dW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
aSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJncy5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CiAgICAgfQogCkBAIC04MCwzMCArODAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdGFy
Z2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6
Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlv
bi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9u
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91
bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAg
ICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTRnVuY3Rpb24q
IHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihib3VuZEZ1bmN0aW9uLT50YXJn
ZXRGdW5jdGlvbigpKTsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29u
c3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShleGVjLT52bSgpLCB0
YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0
aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1
Y3RUeXBlOjpOb25lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVj
LCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0RnVu
Y3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpOworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2Fz
dDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgSlNBcnJh
eSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CiAKQEAgLTExMiwxMCAr
MTEyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0
cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFy
Z3MtPmdldEluZGV4UXVpY2tseShpKSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJncy5hcHBlbmQoZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJncy5oYXNP
dmVyZmxvd2VkKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMjMsMjAgKzEyMywy
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3Qo
RXhlY1N0YXRlKiBleGVjKQogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRG
dW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29u
c3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhLCBhcmdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1
Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9vbD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVuY3Rpb24q
PihleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNJ
bnN0YW5jZUJvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0ID0g
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZE9iamVjdCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGJvdW5kT2JqZWN0LT50YXJnZXRGdW5jdGlvbigpLT5oYXNJbnN0YW5jZShleGVjLCB2
YWx1ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3VuZE9iamVj
dC0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2UoY2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0K
IAogaW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRh
cmdldEZ1bmN0aW9uKQpAQCAtMjEwLDcgKzIxMCw3IEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlv
bjo6Ym91bmRBcmdzQ29weShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNB
cnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxP
YmplY3Qodm0pKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ib3VuZEFyZ3Mt
Pmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG1fYm91bmRBcmdz
LT5nZXRJbmRleFF1aWNrbHkoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA4YmI0Yjc3YWM1Nzg3ZDYxZjJkZTM2OWQwYzg1YjBk
ZWNiYWZhZTkyLi4yMjVhY2IwYmU4ZDUzYjRiYTQ2MjY2NmVmM2Q3NTBlOWM2ZDMwZWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAt
MjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3Ry
dWN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0
aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBp
c0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25D
YWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25D
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gZmlu
YWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMmM2NDllMTYwMjBmZDBiYTQ5ODZiMGYxMzcwNjdj
MmE4MTc1NDJkOC4uYWU4MzE1MWJkZTFhNmE2YmVlY2IzZDg5Y2E3YWRlZTU5MjA3YTFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgSlNC
aWdJbnQ7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7
CiBjbGFzcyBKU1ZhbHVlU291cmNlOwogY2xhc3MgVk07CkBAIC01Myw2ICs1Myw3IEBAIGNsYXNz
IFByb3BlcnR5TmFtZTsKIGNsYXNzIFByb3BlcnR5U2xvdDsKIGNsYXNzIFB1dFByb3BlcnR5U2xv
dDsKIGNsYXNzIFN0cnVjdHVyZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKICNpZiBF
TkFCTEUoREZHX0pJVCkKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgSklUQ29tcGlsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDU0NjEyNzRlYmQ3N2RmZjNmMDVm
MTJkYzEwNzI5YWZlMTQ2OGYyMDEuLmU5NWQ1MTJhMzhlNjgyZGJmZGEzNjRkMjgwYjFlOGQ3N2Fk
YmE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0zOCwxMCAr
MzgsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENv
bXBsZXRlU3Vic3BhY2U7CiBjbGFzcyBDb3B5VmlzaXRvcjsKIGNsYXNzIEdDRGVmZXJyYWxDb250
ZXh0OwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEpTQXJyYXlC
dWZmZXJWaWV3OwogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3Q7CkBAIC01Miw2ICs1Miw3IEBA
IGNsYXNzIFByb3BlcnR5TmFtZTsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogY2xhc3MgU3Ry
dWN0dXJlOwogY2xhc3MgSlNDZWxsTG9jazsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogZW51bSBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dEFyZ1ByZXNlbnNlIHsKICAgICBIYXNBcmcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDVjNzEyYzAzYjlmNGFkZDg0N2UyNzQ0
MWIxMzAyNjM5OTU3MTAxOGQuLjU1YzUwZTRmMTQ0ZTAwYjZjYmQwYzQ5ZDUyNDY3NTYxM2UwY2Zm
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0zNSwyOSArMzUsMjkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikgfTsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjpjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogY3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24qIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEN1c3RvbUdldHRlclNl
dHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPmN1
c3RvbUdldHRlclNldHRlcigpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
CiAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5pc1NldHRlcigpKSB7CiAgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGN1c3RvbUdldHRl
clNldHRlci0+c2V0dGVyKCk7CiAgICAgICAgIEFTU0VSVChzZXR0ZXIpOwotICAgICAgICBjYWxs
Q3VzdG9tU2V0dGVyKGV4ZWMsIHNldHRlciwgdHJ1ZSwgdGhpc1ZhbHVlLCBleGVjLT5hcmd1bWVu
dCgwKSk7CisgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoY2FsbEZyYW1lLCBzZXR0ZXIsIHRydWUs
IHRoaXNWYWx1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCiAgICAgaWYgKGN1c3RvbUdldHRl
clNldHRlci0+aW5oZXJpdHM8RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyPih2bSkpIHsKICAgICAg
ICAgYXV0byBkb21BdHRyaWJ1dGUgPSBqc0Nhc3Q8RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyKj4o
Y3VzdG9tR2V0dGVyU2V0dGVyKS0+ZG9tQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBkb21B
dHRyaWJ1dGUuY2xhc3NJbmZvLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlO
YW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgZG9tQXR0cmlidXRlLmNsYXNzSW5mbywgY3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Y3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShleGVjLCBKU1ZhbHVlOjplbmNvZGUodGhpc1Zh
bHVlKSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsKKyAgICBy
ZXR1cm4gY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShjYWxsRnJhbWUsIEpTVmFsdWU6OmVu
Y29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1l
KCkpOwogfQogCiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFR5cGUgdHlwZSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9w
ZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgKaW5kZXggODBhMmM4MWJiZjhmOGEzYzMx
NWI1MzBmOTkwNzI4NzY5NmZhNzVlZS4uNGZlZDBlZDQ2YjlmYmU2YTlmYzI1Y2NmZWY0ZTI4MGU3
YjAwNDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFz
cyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24g
ewogICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgQ3VzdG9tR2V0dGVyU2V0dGVyKiwgY29u
c3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxs
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIq
IGN1c3RvbUdldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyU2V0dGVyLmdldCgp
OyB9CiAgICAgYm9vbCBpc1NldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpT
ZXR0ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggN2EyZWM3NDI3NmM1NzA0NjQ0OGVkZmQzOWQ4ZmUxNDk5
NWU4NGFiMy4uYzJjMmY3OTk0ODc5NDYyNGVjMzgwYTUyMTViYzBkZTUxNmUxNmQ2MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKQEAgLTYxLDI1ICs2MSwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKIEBlbmQKICovCiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4KEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dl
dEludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY0dldEludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jR2V0RmxvYXQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0
SW50MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jU2V0VWludDgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMihFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMy
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY1NldEZsb2F0NjQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNl
dChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRJbnQ4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJv
dG9GdW5jR2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jR2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0
NjQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0
ZUxlbmd0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBTdHJ1Y3R1cmUqIEpTRGF0
YVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLUVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMTYzLDkgKzE2Myw5IEBAIEVuY29kZWRKU1ZhbHVl
IGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CkBAIC0yMTAsMTIwICsyMTAsMTIwIEBAIEVuY29kZWRKU1ZhbHVlIHNl
dERhdGEoRXhlY1N0YXRlKiBleGVjKQogCiBJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oIm1p
c3NpbmctcHJvdG90eXBlcyIpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0dldHRlckJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1p
Y0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmll
dyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0
byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0
aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVyKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZpZXctPnBvc3NpYmx5U2hhcmVkSlNCdWZmZXIoY2FsbEZyYW1lKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0Rh
dGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0g
anNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0
YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJl
IGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHZpZXctPmxlbmd0aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2
aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4
cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVm
ZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZzZXQoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jR2V0SW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxJbnQ4QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0
dXJuIGdldERhdGE8SW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRJbnQxNihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxJbnQxNkFkYXB0b3I+KGV4ZWMpOworICAg
IHJldHVybiBnZXREYXRhPEludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50
MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY0dldEludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPEludDMyQWRhcHRvcj4oZXhlYyk7
CisgICAgcmV0dXJuIGdldERhdGE8SW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jR2V0VWludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDhBZGFwdG9yPihl
eGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxVaW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY0dldFVpbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPFVpbnQxNkFk
YXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPFVpbnQxNkFkYXB0b3I+KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY0dldFVpbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRh
PFVpbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPFVpbnQzMkFkYXB0b3I+
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIGdldERhdGE8RmxvYXQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPEZs
b2F0MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRG
bG9hdDY0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBnZXREYXRhPEZsb2F0NjRBZGFwdG9yPihleGVjKTsKKyAgICByZXR1
cm4gZ2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJv
dG9GdW5jU2V0SW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxJbnQ4QWRhcHRvcj4oZXhlYyk7CisgICAg
cmV0dXJuIHNldERhdGE8SW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDE2
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRJbnQxNihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxJbnQxNkFkYXB0b3I+KGV4ZWMpOwor
ICAgIHJldHVybiBzZXREYXRhPEludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0
SW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY1NldEludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEludDMyQWRhcHRvcj4oZXhl
Yyk7CisgICAgcmV0dXJuIHNldERhdGE8SW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1
bmNTZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDhBZGFwdG9y
PihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxVaW50OEFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvRnVuY1NldFVpbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRhPFVpbnQx
NkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPFVpbnQxNkFkYXB0b3I+KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXRE
YXRhPFVpbnQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPFVpbnQzMkFkYXB0
b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIHNldERhdGE8RmxvYXQzMkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRh
PEZsb2F0MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEZsb2F0NjRBZGFwdG9yPihleGVjKTsKKyAgICBy
ZXR1cm4gc2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGVNYXRoLmgKaW5kZXggOWQ0OTc1ODdhYTIxMjlhYzkyZTZjMGI2MmU3Y2E1Y2E1
YzI5MGY5My4uNjA0MWQ1ZWVlMGVkMDYwMjAzMWQzOWQzNDkxZjQ1ZmYyZjNjZTA2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaApAQCAtNDcsOCArNDcsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKFZNJiwgZG91YmxlLCBXVEY6OlRpbWVU
eXBlIG91dHB1dFRpbWVUeXBlLCBHcmVnb3JpYW5EYXRlVGltZSYpOwogSlNfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhWTSYsIGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lJiwgZG91YmxlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyY2FlNDRkYTcxYmQxN2Vi
YzM4YTA5ZDk2YjE3OGRkZWJiMmFhZTMzLi5lYWFkZGQ1OTIwZDBkOWY3MTIxOTdhYmQ3NmZjMmYy
ZTI3ZDY1NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtNTIsMTEgKzUyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3Rv
ckVycm9yKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9u
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKQEAgLTExNSw2ICsxMTUsNyBAQCBK
U0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKFZNJiB2bSwgSlNHbG9iYQogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
QmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUoKQor
ICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkp
CiB7CiAgICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQpAQCAtMTYzLDcgKzE2
NCw3IEBAIEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24oVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKExJS0VMWShwcm90b3R5cGUuaXNPYmplY3Qo
KSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChwcm90b3R5cGUpOwogCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGlmICgh
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0
aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMtcnVudGlt
ZS1zZW1hbnRpY3MtZXZhbHVhdGVib2R5CiAgICAgICAgIGlmIChpc0dlbmVyYXRvcldyYXBwZXJQ
YXJzZU1vZGUoanNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpKSkKQEAgLTE4Myw3ICsxODQsNyBA
QCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJl
RGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpegogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7
CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBGdW5jdGlvblJhcmVEYXRhOjpjcmVh
dGUodm0sIHRoaXMpOwotICAgIHJhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUodm0sIGdsb2JhbE9iamVjdCh2bSksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHksIHRo
aXMpOworICAgIHJhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUodm0s
IGdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKIAogICAg
IC8vIEEgREZHIGNvbXBpbGF0aW9uIHRocmVhZCBtYXkgYmUgdHJ5aW5nIHRvIHJlYWQgdGhlIHJh
cmUgZGF0YQogICAgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgaXQgc2VlcyBpdCBwcm9wZXJs
eSBhbGxvY2F0ZWQKQEAgLTE5OSw3ICsyMDAsNyBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0
aW9uOjppbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQwog
ICAgIEFTU0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JDb25zdHJ1Y3Rp
b24odm0sIGV4ZWMpOwotICAgIG1fcmFyZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KHZtKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwg
dGhpcyk7CisgICAgbV9yYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KHZtLCBnbG9iYWxPYmplY3QoKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwgdGhpcyk7CiAg
ICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiB9CiAKQEAgLTQzNyw5ICs0MzgsOSBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICAgICAgICAgIC8vIFVubGlrZSBmdW5jdGlvbiBp
bnN0YW5jZXMsIHRoZSBvYmplY3QgdGhhdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGEgR2VuZXJhdG9y
RnVuY3Rpb24ncyBwcm90b3R5cGUKICAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBkb2VzIG5v
dCBoYXZlIGEgY29uc3RydWN0b3IgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgdGhlIEdlbmVyYXRv
ckZ1bmN0aW9uIGluc3RhbmNlLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLWdlbmVyYXRvcmZ1bmN0aW9uLWluc3RhbmNlcy1wcm90b3R5cGUK
LSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUodGhpc09iamVjdC0+
anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpKSkKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
LT5hc3luY0dlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICAgICAg
ICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCAxOGQ5Y2ZiZjE1ODhhYzY0OWJmNjg0ODViNWQyMzQxZTlhOTlkMDRjLi4zZmVmOTJk
NDQ1ZWM0YzA3ZTRmMzEyNjBjYzgzY2QzZDJkNGZlNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFNpZ25hdHVy
ZTsKIH0KIAogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKIApAQCAt
MTI0LDYgKzEyNCwxMSBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3JhcmVEYXRhKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbE9iamVjdCgp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZ2xv
YmFsT2JqZWN0KTsKKyAgICB9CisKICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YShWTSYg
dm0pCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEpKQpAQCAtMTQ0LDYg
KzE0OSw4IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgICAgICBy
ZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKICAgICBib29sIGlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0OwogICAgIGJvb2wgaXNBbm9ueW1vdXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsK
QEAgLTIyNCw2ICsyMzEsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsK
IAogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOwogICAgIFdy
aXRlQmFycmllcjxGdW5jdGlvblJhcmVEYXRhPiBtX3JhcmVEYXRhOworICAgIFdyaXRlQmFycmll
cjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwogCiBjbGFzcyBKU1N0cmljdEZ1
bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggMTg3MjY4NGRhNDBjZWFj
NGViOThhZDJkMDM4NTRiY2Q5ODRjNGFjNC4uM2UwNDc1Yzg0NDg2MmRmOTYyZjVkNzU0N2VlMTIx
ZGZjMjRiYzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uSW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
CiAgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKHZt
LCB0aGlzLCBleGVjdXRhYmxlKQogICAgICwgbV9yYXJlRGF0YSgpCisgICAgLCBtX2dsb2JhbE9i
amVjdCh2bSwgdGhpcywgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKIHsKICAgICBhc3NlcnRU
eXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkODIzYWM1Mzc0ZDIxNmE0MjIxZGU1MTg5OWFkMmVh
MDgxYThkYzNlLi43ZmU5MWM1MGJmNDYxY2ZlZDI1MDdjYmFhY2E4MTBhMDYzNWJjOTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTM4LDEw
ICszOCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRB
cnJheVZpZXcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNz
PgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxWaWV3Q2xhc3M+OjpKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkBAIC0yMDYsNTYgKzIwNiw1NiBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdAogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSk7Ci0gICAgU3RydWN0dXJlKiBwYXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdl
VHlwZSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgcGFyZW50U3RydWN0
dXJlKTsKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHBhcmVudFN0
cnVjdHVyZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShW
aWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzaXplX3QgYXJnQ291
bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgc2l6ZV90IGFyZ0NvdW50ID0gY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCk7CiAKICAgICBpZiAoIWFyZ0NvdW50KSB7CiAgICAgICAgIGlm
IChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3IGNv
bnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iX3MpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFWaWV3IGNv
bnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iX3MpOwogCi0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3Jl
YXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1
cmUsIDApKSk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwogICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBsZW5ndGggPSBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKLSAgICAg
ICAgb2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChleGVjLCAiYnl0
ZU9mZnNldCIpOworICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvSW5kZXgoY2FsbEZyYW1lLCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoYXJnQ291
bnQgPiAyKSB7CiAgICAgICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5
cGUgPT0gVHlwZURhdGFWaWV3KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIERhdGFWaWV3
IGJ5dGVMZW5ndGggaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5n
LgotICAgICAgICAgICAgICAgIEpTVmFsdWUgYnl0ZUxlbmd0aFZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMik7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBieXRlTGVuZ3RoVmFsdWUg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgICAgICAgICAgICAgIGlmICgh
Ynl0ZUxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gYnl0ZUxlbmd0aFZhbHVlLnRvSW5kZXgoZXhlYywgImJ5dGVMZW5ndGgiKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZUxlbmd0aFZhbHVlLnRvSW5kZXgoY2FsbEZyYW1l
LCAiYnl0ZUxlbmd0aCIpOwogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvSW5kZXgoZXhlYywgImxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9JbmRleChjYWxsRnJhbWUsICJsZW5n
dGgiKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8Vmlld0NsYXNzPihleGVjLCBzdHJ1Y3R1cmUsIEpTVmFs
dWU6OmVuY29kZShmaXJzdFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxWaWV3Q2xhc3M+KGNhbGxGcmFtZSwgc3RydWN0dXJlLCBKU1Zh
bHVlOjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJv
cihleGVjLCBzY29wZSwgVmlld0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBWaWV3Q2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1l
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggYWRiMzI3OTNiOTJjN2Q3Nzc5Zjc5ZTAxODI5NTkw
ZTA4YTllYTE2ZS4uMGE0YjEzNDIxMTEyNDI4OWFlNmE3YzM5MGUxMjA0NzNjYzViMGE0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC00NTMs
NyArNDUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGEKICAgICBBU1NFUlQoIWFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiByZXN1bHQgPSBzcGVjaWVz
Q29uc3RydWN0KGV4ZWMsIHRoaXNPYmplY3QsIGFyZ3MsIFsmXSgpIHsKLSAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlTdHJ1
Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1
cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgICAgICByZXR1cm4gVmll
d0NsYXNzOjpjcmVhdGVVbmluaXRpYWxpemVkKGV4ZWMsIHN0cnVjdHVyZSwgbGVuZ3RoKTsKICAg
ICB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTU0OSwxMCArNTQ5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAKICAgICB1bnNp
Z25lZCBuZXdCeXRlT2Zmc2V0ID0gdGhpc09iamVjdC0+Ynl0ZU9mZnNldCgpICsgb2Zmc2V0ICog
Vmlld0NsYXNzOjplbGVtZW50U2l6ZTsKIAotICAgIEpTT2JqZWN0KiBkZWZhdWx0Q29uc3RydWN0
b3IgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaWV3
Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgSlNPYmplY3QqIGRlZmF1bHRDb25z
dHJ1Y3RvciA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlDb25zdHJ1Y3RvcihW
aWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgSlNWYWx1ZSBzcGVjaWVzID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgaWYgKHNwZWNpZXMgPT0gZGVmYXVsdENv
bnN0cnVjdG9yKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9i
YWxPYmplY3Qodm0pLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0
b3JhZ2VUeXBlKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2Jh
bE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlKTsKIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShWaWV3Q2xhc3M6OmNyZWF0ZSgKICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgV1RG
TW92ZShhcnJheUJ1ZmZlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTIwYjE2Mzg0ZmQ0OWM5NzQ5Zjk3NjI0NDc1N2U4Y2M3
Y2NhOWVkOC4uZDk1Njk3OTNkODI5MWYzZTEzODE3OTVjMmRlZWZkOGFjZGNkMTc4MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MjY4LDQ2ICsyNjgsNDQgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlQ29uc29sZVByb3BlcnR5KFZN
JiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gQ29uc29sZU9iamVjdDo6Y3JlYXRl
KHZtLCBnbG9iYWwsIENvbnNvbGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsLCBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWwtPmdsb2JhbEV4ZWMoKSkpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKLQotICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7Ci0gICAgSlNWYWx1ZSBib3VuZFRoaXMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgxKTsKLSAgICBKU1ZhbHVlIGJvdW5kQXJncyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIp
OwotICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgzKTsK
LSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDQpKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNWYWx1ZSBib3VuZFRoaXMgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYm91bmRBcmdzID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgyKTsKKyAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgzKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGFzU3Ry
aW5nKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoNCkpOwogCiAgICAgQVNTRVJUKGxlbmd0
aFZhbHVlLmlzSW50MzJBc0FueUludCgpKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IGxlbmd0aFZh
bHVlLmFzSW50MzJBc0FueUludCgpOwogCi0gICAgU3RyaW5nIG5hbWUgPSBuYW1lU3RyaW5nLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFyZ3MuaXND
ZWxsKCkgPyBqc0Nhc3Q8SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIFdU
Rk1vdmUobmFtZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCB0YXJnZXQsIGJvdW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8ganNDYXN0PEpTQXJyYXkq
Pihib3VuZEFyZ3MpIDogbnVsbHB0ciwgbGVuZ3RoLCBXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNP
d25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSBhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJn
ZXQtPmhhc093blByb3BlcnR5KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkp
OwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXNzZXJ0Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMCkuaXNCb29s
ZWFuKCkpOwotICAgIGlmIChleGVjLT5hcmd1bWVudCgwKS5hc0Jvb2xlYW4oKSkKKyAgICBSRUxF
QVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzQm9vbGVhbigpKTsKKyAgICBpZiAo
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5hc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGJvb2wgaXRlcmF0ZWRPbmNlID0gZmFs
c2U7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGxp
bmU7Ci0gICAgZXhlYy0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgeworICAg
IGNhbGxGcmFtZS0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgewogICAgICAg
ICBpZiAoIWl0ZXJhdGVkT25jZSkgewogICAgICAgICAgICAgaXRlcmF0ZWRPbmNlID0gdHJ1ZTsK
ICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwpAQCAtMzk2LDE1ICsz
OTQsMTQgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIEpT
VmFsdWUgam9iID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudDAgPSBl
eGVjLT5hcmd1bWVudCgxKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MSA9IGV4ZWMtPmFyZ3VtZW50
KDIpOwotICAgIEpTVmFsdWUgYXJndW1lbnQyID0gZXhlYy0+YXJndW1lbnQoMyk7CisgICAgSlNW
YWx1ZSBqb2IgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDMpOwogCiAgICAgZ2xvYmFsT2JqZWN0LT5xdWV1ZU1pY3JvdGFzayhjcmVhdGVKU01p
Y3JvdGFzayh2bSwgam9iLCBhcmd1bWVudDAsIGFyZ3VtZW50MSwgYXJndW1lbnQyKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAppbmRleCBmNGRiN2E0M2RhNjUwNmQyNjU0MjZlYjRmODU5NDRkYmVkMzBi
ZmU5Li4yOGI0YzZiNTNiMWQ3MzBiNDU5OWU0ODAyN2ExYTNkZmJmMzcxNzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCkBAIC00NzgsNTAgKzQ3OCw0OCBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQo
U3RyaW5nVmlldyBzKQogICAgIHJldHVybiBqc1N0ckRlY2ltYWxMaXRlcmFsKGRhdGEsIGVuZCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHggPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHggPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICgheC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHgpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQo
KSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9y
KGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFN0
cmluZyBzID0gYXNTdHJpbmcoeCktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gYXNTdHJp
bmcoeCktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHBhcnNlZE9iamVjdDsKICAgICBpZiAo
cy5pczhCaXQoKSkgewotICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZXhl
Yywgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKKyAgICAgICAg
TGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGNhbGxGcmFtZSwgcy5jaGFyYWN0ZXJzOCgp
LCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIExpdGVyYWxQ
YXJzZXI8VUNoYXI+IHByZXBhcnNlcihleGVjLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgp
LCBOb25TdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2Vy
KGNhbGxGcmFtZSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7
CiAgICAgICAgIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAg
ICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaWYgKHBhcnNlZE9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJz
ZWRPYmplY3QpOwogCi0gICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGV4ZWMtPmNhbGxl
clNvdXJjZU9yaWdpbigpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBjYWxsZWVHbG9iYWxPYmplY3Qg
PSBleGVjLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIEV2YWxFeGVjdXRhYmxl
KiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2Uo
cywgc291cmNlT3JpZ2luKSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2Us
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7CisgICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9
IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNl
KHMsIHNvdXJjZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNl
LCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGV4ZWMsIGNhbGxlZUdsb2JhbE9i
amVjdC0+Z2xvYmFsVGhpcygpLCBjYWxsZWVHbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodm0uaW50ZXJw
cmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMo
KSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKLSAgICBKU1ZhbHVlIHJhZGl4VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHJh
ZGl4VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgLy8gT3B0aW1pemVkIGhh
bmRsaW5nIGZvciBudW1iZXJzOgogICAgIC8vIElmIHRoZSBhcmd1bWVudCBpcyAwIG9yIGEgbnVt
YmVyIGluIHJhbmdlIDEwXi02IDw9IG4gPCBJTlRfTUFYKzEsIHRoZW4gcGFyc2VJbnQKQEAgLTU0
MSwzMyArNTM5LDMzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Bh
cnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAvLyBJZiBUb1N0cmluZyB0aHJv
d3MsIHdlIHNob3VsZG4ndCBjYWxsIFRvSW50MzIuCi0gICAgcmV0dXJuIHRvU3RyaW5nVmlldyhl
eGVjLCB2YWx1ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihwYXJzZUludCh2aWV3LCByYWRpeFZhbHVlLnRvSW50MzIoZXhl
YykpKSk7CisgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhjYWxsRnJhbWUsIHZhbHVlLCBbJl0gKFN0
cmluZ1ZpZXcgdmlldykgeworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHBhcnNlSW50KHZpZXcsIHJhZGl4VmFsdWUudG9JbnQzMihjYWxsRnJhbWUpKSkpOwogICAgIH0p
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y1BhcnNlRmxvYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5n
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVu
ZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBhcnNlRmxvYXQodmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRtYXA8MjU2
PiBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAg
ICAgICAgIiMkJissLzo7PT9AIgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRlY29kZShleGVjLCBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJLCB0cnVlKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoY2FsbEZyYW1lLCBkb05vdFVuZXNjYXBlV2hl
bkRlY29kaW5nVVJJLCB0cnVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4g
ZW1wdHlCaXRtYXA7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZXhlYywgZW1w
dHlCaXRtYXAsIHRydWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlY29kZShjYWxs
RnJhbWUsIGVtcHR5Qml0bWFwLCB0cnVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGVX
aGVuRW5jb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVoiCkBAIC01NzYsMTAgKzU3NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAiISMkJicoKSorLC0uLzo7PT9AX34iCiAgICAgKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZW5jb2RlKGV4ZWMsIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShlbmNvZGUoY2FsbEZyYW1lLCBkb05vdEVzY2FwZVdoZW5FbmNv
ZGluZ1VSSSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNF
bmNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90RXNjYXBl
V2hlbkVuY29kaW5nVVJJQ29tcG9uZW50ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAg
IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNTg4LDEwICs1ODYsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgIiEnKCkqLS5ffiIKICAgICApOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShlbmNvZGUoZXhlYywgZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUklDb21w
b25lbnQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShjYWxsRnJhbWUsIGRv
Tm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwy
NTY+IGRvTm90RXNjYXBlID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAgIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNjAwLDggKzU5OCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIq
Ky0uL0BfIgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvU3RyaW5nVmll
dyhleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKLSAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvU3Ry
aW5nVmlldyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5nVmll
dyB2aWV3KSB7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBpZiAodmlldy5pczhCaXQoKSkgewogICAg
ICAgICAgICAgY29uc3QgTENoYXIqIGMgPSB2aWV3LmNoYXJhY3RlcnM4KCk7CkBAIC02MzYsOSAr
NjM0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9TdHJpbmdWaWV3KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBbJl0gKFN0cmluZ1ZpZXcgdmll
dykgeworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAgICAgICAg
Ly8gV2UgdXNlIGludCBmb3IgayBhbmQgbGVuZ3RoIGludGVudGlvbmFsbHkgc2luY2Ugd2Ugd291
bGQgbGlrZSB0byBldmFsdWF0ZQogICAgICAgICAvLyB0aGUgY29uZGl0aW9uIGBrIDw9IGxlbmd0
aCAtNmAgZXZlbiBpZiBsZW5ndGggaXMgbGVzcyB0aGFuIDYuCiAgICAgICAgIGludCBrID0gMDsK
QEAgLTY4OCw2MiArNjg2LDYxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLT52bSgpLCBidWlsZGVyLnRvU3RyaW5nKCkp
OworICAgICAgICByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBidWlsZGVyLnRv
U3RyaW5nKCkpOwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxs
ZWVBbmRDYWxsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50cycsICdj
YWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4i
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiJ2FyZ3Vt
ZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMg
Y29udGV4dC4iKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
TWFrZVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBlcnJvclN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJy
b3IpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4
ZWMsIGVycm9yU3RydWN0dXJlLCBleGVjLT5hcmd1bWVudCgwKSwgbnVsbHB0ciwgVHlwZU5vdGhp
bmcsIGZhbHNlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
bnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJp
Y3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3Io
ZXhlYywgdGhpc1ZhbHVlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwog
CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSB0aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKKyAgICAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBlKGNhbGxG
cmFtZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
cHJvdG90eXBlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVj
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFt
ZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgT2JqZWN0UHJvdG9D
YWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5l
ZEVycm9yKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogCkBA
IC03NTcsMzEgKzc1NCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBzY29wZS5yZWxlYXNlKCk7CiAg
ICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7Ci0gICAgdGhpc09iamVjdC0+c2V0
UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAgIHRo
aXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dJ
ZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVq
ZWN0aW9uVHJhY2tlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNQcm9taXNlKiBwcm9taXNlID0ganNDYXN0PEpTUHJvbWlzZSo+
KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0Nhc3Q8SlNQ
cm9taXNlKj4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKICAgICAvLyBJbnRlcm5hbFByb21p
c2VzIHNob3VsZCBub3QgYmUgZXhwb3NlZCB0byB1c2VyIHNjcmlwdHMuCiAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPih2bSwgcHJvbWlzZSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBKU1ZhbHVlIG9wZXJhdGlv
blZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBvcGVyYXRpb25WYWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKICAgICBBU1NFUlQob3BlcmF0aW9uVmFsdWUuaXNO
dW1iZXIoKSk7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VSZWpl
Y3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvblZhbHVlLnRvVUludDMyKGV4ZWMpKTsKKyAgICBhdXRv
IG9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbj4ob3Bl
cmF0aW9uVmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKG9wZXJhdGlvbiA9
PSBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb246OlJlamVjdCB8fCBvcGVyYXRpb24gPT0gSlNQ
cm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uOjpIYW5kbGUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcikKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcihnbG9iYWxPYmpl
Y3QsIGV4ZWMsIHByb21pc2UsIG9wZXJhdGlvbik7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVjdGlvblRyYWNrZXIoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHByb21pc2UsIG9wZXJhdGlvbik7CiAgICAgZWxzZSB7CiAgICAgICAg
IHN3aXRjaCAob3BlcmF0aW9uKSB7CiAgICAgICAgIGNhc2UgSlNQcm9taXNlUmVqZWN0aW9uT3Bl
cmF0aW9uOjpSZWplY3Q6CkBAIC03OTcsOTEgKzc5Myw4OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhlY1N0YXRl
KiBleAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxv
ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGRhdGFMb2co
ZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyksICJcbiIpOworICAgIGRhdGFMb2co
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpLCAiXG4iKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2Ny
aWJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwgdG9TdHJp
bmcoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHRvU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7Ci0KLSAgICBhdXRvKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHByb21pc2UgPSBKU1Byb21pc2VE
ZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBj
YXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgYXV0byByZWplY3QgPSBb
Jl0gKEpTVmFsdWUgcmVqZWN0aW9uUmVhc29uKSB7CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIHJlamVjdGlvblJlYXNv
bik7CisgICAgICAgIHByb21pc2UtPnJlamVjdChjYWxsRnJhbWUsIHJlamVjdGlvblJlYXNvbik7
CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH07CiAKLSAgICBhdXRvIHNv
dXJjZU9yaWdpbiA9IGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpOwotICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKLSAgICBhdXRvKiBzcGVjaWZpZXIgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHNvdXJj
ZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSk7CisgICAgYXV0byogc3BlY2lm
aWVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUp
OwogICAgIGlmIChFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uLT52YWx1ZSgpKTsKIAogICAgIC8vIFdl
IGFsd2F5cyBzcGVjaWZ5IHBhcmFtZXRlcnMgYXMgdW5kZWZpbmVkLiBPbmNlIGR5bmFtaWMgaW1w
b3J0KCkgc3RhcnRzIGFjY2VwdGluZyBmZXRjaGluZyBwYXJhbWV0ZXJzLAogICAgIC8vIHdlIHNo
b3VsZCByZXRyaWV2ZSB0aGlzIGZyb20gdGhlIGFyZ3VtZW50cy4KICAgICBKU1ZhbHVlIHBhcmFt
ZXRlcnMgPSBqc1VuZGVmaW5lZCgpOwotICAgIGF1dG8qIGludGVybmFsUHJvbWlzZSA9IGdsb2Jh
bE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShleGVjLCBzcGVjaWZpZXIsIHBh
cmFtZXRlcnMsIHNvdXJjZU9yaWdpbik7CisgICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gZ2xv
YmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKGNhbGxGcmFtZSwgc3BlY2lm
aWVyLCBwYXJhbWV0ZXJzLCBzb3VyY2VPcmlnaW4pOwogICAgIGlmIChFeGNlcHRpb24qIGV4Y2Vw
dGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZWplY3QoZXhj
ZXB0aW9uLT52YWx1ZSgpKTsKLSAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGludGVybmFsUHJv
bWlzZSk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZShjYWxsRnJhbWUsIGludGVybmFsUHJvbWlzZSk7
CiAKICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBSRUxF
QVNFX0FTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0gICAgSlNPYmplY3QqIG9i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvUHJvcGVy
dHlLZXkoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCkgPT0gMik7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAg
Ym9vbCBlbnVtZXJhYmxlID0gb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKTsKKyAg
ICBib29sIGVudW1lcmFibGUgPSBvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxs
RnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZW51bWVyYWJsZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNPd25LZXlzKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktl
eXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxsRnJhbWUsIG9iamVjdCwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUpKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5UTCkKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSW50
bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwotICAgIGRh
dGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBkb3VibGUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKS50b051
bWJlcihleGVjKTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLnRv
TnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdCgqZXhlYywgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdCgq
Y2FsbEZyYW1lLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAppbmRleCA5NDhk
NjdlYzE4Zjk1ZTFmNjJlOThkMThmNmI2ODJmNDIyNmFjZjc2Li4yMTEzMGY5YjYwYzllOWRlZDE3
ZDRhZTE1YzAzNTIwODVhOTQ1ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTI5LDM1ICsyOSwzNiBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgcmVhbGx5IGJlIGluIEpT
R2xvYmFsT2JqZWN0LmNwcCwgYnV0IHB1dHRpbmcgdGhlbSB0aGVyZQogLy8gaXMgYSAwLjUlIHJl
ZHVjdGlvbi4KIAogZXh0ZXJuIGNvbnN0IEFTQ0lJTGl0ZXJhbCBPYmplY3RQcm90b0NhbGxlZE9u
TnVsbE9yVW5kZWZpbmVkRXJyb3I7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0V2YWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUkkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUklD
b21wb25lbnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNFc2NhcGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRD
YWxsZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNNYWtlVHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0
aW5Mb2coRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNCdWlsdGluRGVzY3JpYmUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1h
dChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNEZWNvZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRW5jb2RlVVJJKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y0VzY2FwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jSW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jT3duS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogZG91YmxlIGpzVG9OdW1iZXIoU3RyaW5nVmlldyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggMGIyN2ZmNjNmZTQ4MTVi
ZjI2M2ZjNjZmNzg5NzEwYzMyYjBjMjUwNi4uZTMxYzI5Y2EwMTE1NjAwZjQ2MTRkZTM2OTI5NTEz
YTViMWQxZDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKQEAgLTQ5
LDggKzQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogLy8gRHJvcEFsbExvY2tzIG9iamVjdCB0YWtl
cyBjYXJlIHRvIHJlbGVhc2UgdGhlIEpTTG9jayBvbmx5IGlmIHlvdXIKIC8vIHRocmVhZCBhY3F1
aXJlZCBpdCB0byBiZWdpbiB3aXRoLgogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBWTTsKK2NsYXNzIEpTTG9jazsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZNLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGU4ODc4MGI1ZDEwMzRi
ZmRmMTI2Mjc4ZjJiMDFhZTQ4NGE0NjZhYjguLjBlNWE5N2U4YzMxMDIwN2E1M2JkOTE2MjhjZTNj
ZTM5NjJiNTZkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5jcHAKQEAgLTUwLDE0ICs1MCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1
bGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJh
dGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRj
aChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJFdmFs
dWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9u
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNv
bHZlU3luYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
ckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9CiAKQEAgLTM4NywzMyArMzg3LDMzIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01v
ZHVsZUxvYWRlcjo6Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCog
ZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
KiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogICAgIGF1dG8gcmVqZWN0ID0gWyZdIChKU1ZhbHVlIHJlamVjdGlvblJlYXNv
bikgewogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gZGVmZXJyZWQtPnJlamVjdChleGVjLCByZWplY3Rpb25SZWFzb24pOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZWplY3QoY2FsbEZyYW1lLCByZWplY3Rpb25SZWFz
b24pOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9OwogCi0gICAgY29uc3QgSWRlbnRpZmll
ciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
IGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1By
b3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpOwog
Ci0gICAgSlNWYWx1ZSBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHNv
dXJjZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byoganNTb3VyY2VDb2RlID0g
anNDYXN0PEpTU291cmNlQ29kZSo+KHNvdXJjZSk7CiAgICAgU291cmNlQ29kZSBzb3VyY2VDb2Rl
ID0ganNTb3VyY2VDb2RlLT5zb3VyY2VDb2RlKCk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgaWYgKHNvdXJjZUNvZGUucHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6V2ViQXNzZW1ibHkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseTo6aW5zdGFudGlhdGUoZXhlYywgZGVmZXJyZWQsIG1vZHVsZUtl
eSwganNTb3VyY2VDb2RlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJB
c3NlbWJseTo6aW5zdGFudGlhdGUoY2FsbEZyYW1lLCBkZWZlcnJlZCwgbW9kdWxlS2V5LCBqc1Nv
dXJjZUNvZGUpKTsKICNlbmRpZgogCiAgICAgQ29kZVByb2ZpbGluZyBwcm9maWxlKHNvdXJjZUNv
ZGUpOwpAQCAtNDIzLDQ4ICs0MjMsNDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHZtLCBzb3Vy
Y2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAg
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1v
ZHVsZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gcmVqZWN0KGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBzb3VyY2VDb2RlKSk7CisgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IudG9FcnJvck9iamVj
dChnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUpKTsKICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5v
ZGUpOwogCi0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5
LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVs
ZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1v
ZHVsZUFuYWx5emVyKGNhbGxGcmFtZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9n
cmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFy
aWFibGVzKCkpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIHJlamVjdChjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgq
bW9kdWxlUHJvZ3JhbU5vZGUpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZl
KGNhbGxGcmFtZSwgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpKTsK
ICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlclJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5
bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsK
KyAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVj
b3JkKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3Jk
KSAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKSkpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFt
ZSwgbnVsbHB0cikpKTsKIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYywgbnVsbHB0ciwgbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkuc2l6ZSgp
KTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwg
bnVsbHB0ciwgbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkuc2l6ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzaXplX3Qg
aSA9IDA7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVs
ZXMoKSkgewotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGkrKywganNTdHJp
bmcodm0sIGtleS5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxG
cmFtZSwgaSsrLCBqc1N0cmluZyh2bSwga2V5LmdldCgpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFy
YXRpb25JbnN0YW50aWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9k
dWxlUmVjb3JkKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvKiBtb2R1bGVSZWNv
cmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3JkKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1
bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1
bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKIAotICAgIG1vZHVsZVJlY29yZC0+bGluayhl
eGVjLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNDcyLDcxICs0NzIsNzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXQK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIC8vIEhvb2sgcG9pbnQsIExvYWRlci5y
ZXNvbHZlLgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXIt
cmVzb2x2ZQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1
ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9yIGV4YW1w
bGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNl
LgotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9h
ZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01vZHVsZUxvYWRlciogbG9hZGVy
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2
ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3Vt
ZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPnJlc29sdmUoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlU3luYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU01vZHVsZUxvYWRlciogbG9hZGVy
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7
CisgICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2Fk
ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byByZXN1
bHQgPSBsb2FkZXItPnJlc29sdmVTeW5jKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5h
cmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIGF1dG8gcmVzdWx0ID0gbG9hZGVy
LT5yZXNvbHZlU3luYyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgcmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAvLyBIb29r
IHBvaW50LCBMb2FkZXIuZmV0Y2gKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9h
ZGVyLyNicm93c2VyLWZldGNoCiAgICAgLy8gVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0aGUgcmVz
b3VyY2UgYWN0dWFsbHkuCiAgICAgLy8gRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3JlIHNoZWxs
IGNhbiBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQogICAgIC8vIGZyb20g
dGhlIGxvY2FsIGZpbGUgc3lzdGVtLgotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5
bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBK
U01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
bG9hZGVyLT5mZXRjaChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3Qo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVs
ZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbG9hZGVyID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICBhdXRvKiBtb2R1bGVOYW1lc3BhY2VPYmplY3QgPSBsb2FkZXItPmdldE1v
ZHVsZU5hbWVzcGFjZU9iamVjdChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byog
bW9kdWxlTmFtZXNwYWNlT2JqZWN0ID0gbG9hZGVyLT5nZXRNb2R1bGVOYW1lc3BhY2VPYmplY3Qo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG1vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gQWRk
aXRpb25hbCBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJFdmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIC8vIFRvIGluc3RydW1lbnQgYW5kIHJldHJpZXZlIHRoZSBlcnJvcnMgcmFpc2VkIGZyb20g
dGhlIG1vZHVsZSBleGVjdXRpb24sCiAgICAgLy8gd2UgaW5zZXJ0ZWQgdGhlIGhvb2sgcG9pbnQg
aGVyZS4KIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNNb2R1bGVMb2FkZXIqIGxv
YWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU01vZHVsZUxvYWRl
ciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRl
ci0+ZXZhbHVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBl
eGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5l
dmFsdWF0ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3Rk
RnVuY3Rpb24uY3BwCmluZGV4IDhjNTEwOTg5NmEwODM1ZjExNzdhNzJmMmQyZjM4ZTlhZjI1MDVh
MmQuLmM5NTFiZWU0MmI5NmMzZGQ3NTcxZWMwMDQ2NTkzODJmOTIwNzU5ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
CkBAIC01NywxMSArNTcsMTEgQEAgdm9pZCBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGkKICAgICBtX2Z1bmN0
aW9uQ2VsbC5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uQ2VsbCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU05hdGl2ZVN0ZEZ1bmN0aW9uKj4o
c3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNDYXN0PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAg
IEFTU0VSVChmdW5jdGlvbik7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlv
bkNlbGwoKS0+ZnVuY3Rpb24oKShzdGF0ZSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVT
dGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9
CiAKIEpTTmF0aXZlU3RkRnVuY3Rpb24qIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKaW5kZXgg
ZmFiOWQ2ZTM1N2U3OTcxNzVjZjA0ZDE1ZWFlMTc0Mjk2OGM3NDA5Yi4uZjZjNzNiMzgwYTZkNzMx
Y2ZkMTgzMDNiODQ3MjVmN2I5MWMyY2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgTmF0aXZlU3RkRnVuY3Rp
b25DZWxsOwogCi11c2luZyBOYXRpdmVTdGRGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248RW5jb2Rl
ZEpTVmFsdWUoRXhlY1N0YXRlKik+OwordXNpbmcgTmF0aXZlU3RkRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPEVuY29kZWRKU1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik+OwogCiBj
bGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRl
eCA4MjQ4OThhZDNiMWRhMTUzODEzZjU4NDQ0Y2E3NmY0NzhkMDliODRiLi43NzRjNWMyZmRiMTJi
NWMxNzg2ZjJkZjQ3OWVlOGUzMWE5ODkyZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTT05PYmplY3QpOwog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lm
eShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVu
Y1BhcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogfQogCkBAIC03OTcsNTUgKzc5Nyw1NSBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBX
YWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogfQogCiAvLyBFQ01BLTI2MiB2NSAxNS4x
Mi4yCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQ
YXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwogCiAgICAgSlNW
YWx1ZSB1bmZpbHRlcmVkOwogICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7Ci0gICAgICAgIExpdGVy
YWxQYXJzZXI8TENoYXI+IGpzb25QYXJzZXIoZXhlYywgdmlldy5jaGFyYWN0ZXJzOCgpLCB2aWV3
Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4ganNv
blBhcnNlcihjYWxsRnJhbWUsIHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5sZW5ndGgoKSwgU3Ry
aWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJz
ZSgpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhdW5m
aWx0ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkgewogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJy
b3JNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCBqc29uUGFyc2VyLmdldEVycm9y
TWVzc2FnZSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBMaXRlcmFsUGFy
c2VyPFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcubGVu
Z3RoKCksIFN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBqc29uUGFy
c2VyKGNhbGxGcmFtZSwgdmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5sZW5ndGgoKSwgU3RyaWN0
SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgp
OwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhdW5maWx0
ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkgewogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JN
ZXNzYWdlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCBqc29uUGFyc2VyLmdldEVycm9yTWVz
c2FnZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKICAgICAKLSAgICBKU1Zh
bHVlIGZ1bmN0aW9uID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rp
b24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0ZXJlZCk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIFdhbGtlciB3YWxrZXIoZXhlYywgYXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsVHlw
ZSwgY2FsbERhdGEpOworICAgIFdhbGtlciB3YWxrZXIoY2FsbEZyYW1lLCBhc09iamVjdChmdW5j
dGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3
YWxrZXIud2Fsayh1bmZpbHRlcmVkKSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEyLjMKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJp
bmdpZnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
U3RyaW5naWZpZXIgc3RyaW5naWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFy
Z3VtZW50KDIpKTsKKyAgICBTdHJpbmdpZmllciBzdHJpbmdpZmllcihjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoc3RyaW5naWZpZXIuc3RyaW5naWZ5KGV4ZWMtPmFyZ3VtZW50KDApKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ2lm
aWVyLnN0cmluZ2lmeShjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCiBKU1ZhbHVlIEpT
T05QYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBjNDY3MGY4YTkwMTUxMjRhMDg3
Y2M3MjYwMzk4Zjg0NjFiODg2OWI2Li43MThjMTU2MTAzMTg5Zjg3NGM5NWU4MWM3ZjlhNTlkNDll
ZjA4MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBA
IC0yMzAyLDEyICsyMzAyLDEyIEBAIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgxKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoY2FsbEZyYW1l
LCB2YWx1ZSwgcHJvdG8pKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCA3NzZjMWZiMGUwZDgxYTYwZTlhNTcxMThiNGRmMzkyZDI2
ZmYxMjkwLi41MzRiN2RiNTNmNWY4Y2NjMDJhZDQ2ZDUwODA4NDk4OGVmYjRkODBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTExODQsNyArMTE4NCw3IEBA
IGNsYXNzIEpTRmluYWxPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIH0KIH07
CiAKLUpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogaW5saW5lIEpTT2JqZWN0KiBKU09iamVjdDo6
Y3JlYXRlUmF3T2JqZWN0KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZGQxMTI0NTk5YTEyMGNjZjdhMjllZGRiYTM2OGY2NTQ3ZjNkZTUwMC4uODk0MWQ1OGY5MTVjZTEz
MGJhYjY5ZDcxYzJmYjY2MjU1ODJmOGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvcjo6SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3
LCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldykKQEAgLTY1LDExICs2NSwxMSBAQCBTdHJ1Y3R1cmUq
IEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKAogCiAKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXco
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0VHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJVR5cGVk
QXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBub3Qg
YmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuY3BwCmluZGV4IGZhYjZlMDllODdkNDM2NzI1NGY1YThjNmJjMjVmZDJkMjEzZDEx
Y2UuLjMwYjBkZmYwOGZkZDI2ZWJiYzVkZjY1NzQ2OTZjNWU5MjM0NmI0MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuY3BwCkBAIC0zOCwyMjMgKzM4LDIyMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICNk
ZWZpbmUgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGZ1bmN0aW9u
TmFtZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzd2l0Y2ggKHRoaXNW
YWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9iamVj
dCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhDbGFtcGVkQXJyYXk+KHZtLCBleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVu
Y3Rpb25OYW1lPEpTVWludDhDbGFtcGVkQXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZUludDMyOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MzJBcnJheT4odm0sIGV4
ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVpbnQzMjog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDMy
QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDMyQXJyYXk+KHZtLCBjYWxs
RnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2Ug
VHlwZUZsb2F0NjQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25O
YW1lPEpTRmxvYXQ2NEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTRmxvYXQ2NEFy
cmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIGNhc2UgVHlwZUZsb2F0MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1
cm4gZnVuY3Rpb25OYW1lPEpTRmxvYXQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1l
PEpTRmxvYXQzMkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZUludDg6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50OEFycmF5Pih2bSwgZXhlYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4g
ZnVuY3Rpb25OYW1lPEpTSW50OEFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZVVpbnQ4OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhBcnJheT4odm0s
IGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDhBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZUludDE2
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50
MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTSW50MTZBcnJheT4odm0sIGNh
bGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNh
c2UgVHlwZVVpbnQxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZnVuY3Rp
b25OYW1lPEpTVWludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDE2
QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIGNhc2UgTm90VHlwZWRBcnJheTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2Ug
VHlwZURhdGFWaWV3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXciX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSB3aGlsZSAoZmFs
c2UpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0lzVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odmFsdWUuaXNDZWxsKCkgJiYgaXNUeXBlZFZpZXcodmFs
dWUuYXNDZWxsKCktPmNsYXNzSW5mbyhleGVjLT52bSgpKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBl
KSkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzQ2VsbCgpICYm
IGlzVHlwZWRWaWV3KHZhbHVlLmFzQ2VsbCgpLT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0LT52bSgp
KS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVu
Z3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5pc0NlbGwoKSB8fCAh
aXNUeXBlZFZpZXcoYXJndW1lbnQuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlT
dG9yYWdlVHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVk
IGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBm
cm9tIHRoZSB2aWV3Il9zKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
dGhpc09iamVjdC0+bGVuZ3RoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKLSAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2
bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKICAgICBBU1NFUlQoaXNUeXBlZFZpZXcodHlwZSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5Q29u
c3RydWN0b3IodHlwZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURB
UlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNT
b3J0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZV
TkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdp
dGhpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBz
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
KSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQ
RURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Sm9pbik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVm
ZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9z
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZl
cik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3Ro
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVM
ZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9Q
Uk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQ
RURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1Jl
dmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9Q
Uk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29w
ZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHN3aXRjaCAodGhp
c1ZhbHVlLmdldE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
IHsKICAgICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
aAppbmRleCA0ZTMzNDMxNDIyOWZlMDhmOTliMzllYzZmNTA4M2FkNzhmOTQ3MDcyLi41ZDU0OTkz
NjhjYWZhZWViYWQxMGZkYWFmNDEyNzliZGJiNTA1NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCkBA
IC00NSwxMCArNDUsMTAgQEAgY2xhc3MgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIH07CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jSXNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNT
dWJhcnJheUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNzc2ZWMzYzRmMjFhYjhlY2QxNDJmOWNjNjU3NWFhMmRiOTYwZDg0
OC4uNzJhMjFhNTA1NTJjNjY4ZGVhYmY3M2Q0YTYxZjIzNjA2ZGM2MzNkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtNDcsNjIg
KzQ3LDYxIEBAIHZvaWQgTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTWFw
UHJvdG90eXBlKiBtYXBQcm90b3R5cGUsIEdldHRlclNlCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3lt
Ym9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIE1hcENv
bnN0cnVjdG9yOjpNYXBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsTWFwLCBjb25zdHJ1Y3RNYXApCiB7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiTWFwIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiTWFwIikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RNYXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwotICAg
IFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+bWFwU3Ry
dWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNNYXA6OmNyZWF0ZShl
eGVjLCB2bSwgbWFwU3RydWN0dXJlKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIG1hcFN0cnVj
dHVyZSkpKTsKIAogICAgIGlmIChhdXRvKiBpdGVyYWJsZU1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNN
YXAqPih2bSwgaXRlcmFibGUpKSB7CiAgICAgICAgIGlmIChpdGVyYWJsZU1hcC0+Y2FuQ2xvbmVG
YXN0QW5kTm9uT2JzZXJ2YWJsZShtYXBTdHJ1Y3R1cmUpKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNsb25lKGV4ZWMs
IHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZU1hcC0+Y2xvbmUoY2FsbEZyYW1lLCB2bSwgbWFw
U3RydWN0dXJlKSkpOwogICAgIH0KIAotICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGV4
ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpOworICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGNh
bGxGcmFtZSwgdm0sIG1hcFN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSBtYXAt
PkpTT2JqZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAgICBKU1ZhbHVl
IGFkZGVyRnVuY3Rpb24gPSBtYXAtPkpTT2JqZWN0OjpnZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zZXQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9u
LCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNh
bGxGcmFtZSwgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1Zh
bHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICAgICAgaWYgKCFuZXh0SXRlbS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSk7CisgICAgICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbmV4dEl0ZW0uZ2V0KGV4ZWMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0
SXRlbS5nZXQoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTExMCwyNSArMTA5LDI1IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5o
YXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGNhbGwo
ZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9u
Q2FsbERhdGEsIG1hcCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFkZGVy
RnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBt
YXAsIGFyZ3VtZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1h
cCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBC
dWNrZXRIZWFkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFw
Kj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBKU01hcCogbWFwID0ganND
YXN0PEpTTWFwKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVT
RUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oZ2xvYmFsT2JqZWN0LT52bSgp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgSlNNYXAqIG1hcCA9IGpzQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGF1dG8qIGhlYWQgPSBt
YXAtPmhlYWQoKTsKICAgICBBU1NFUlQoaGVhZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShoZWFkKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVu
Y01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8
SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAg
IGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlw
ZSo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1
dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIGJ1Y2tldCA9IGJ1Y2tl
dC0+bmV4dCgpOwogICAgIHdoaWxlIChidWNrZXQpIHsKQEAgLTEzNiwyMSArMTM1LDIxIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0
KTsKICAgICAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgfQotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+dm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldEtleShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpC
dWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBi
dWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNN
YXA6OkJ1Y2tldFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKKyAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJ1Y2tldC0+a2V5KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+
dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNN
YXA6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJU
X1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihn
bG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBhdXRvKiBi
dWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGJ1Y2tldC0+dmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwQ29uc3RydWN0b3IuaAppbmRleCBlZDQ4MzA1YzVkYjNkNGZiZDY0NWYwOTYzMTgwMzg2
ZDQyMTJmNzc5Li4xYmJhYjc2ZjdiYjBmYmViMTI1MzkyYTA0YTIzZGZiNmUxM2RkNWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKQEAgLTU2
LDkgKzU2LDkgQEAgY2xhc3MgTWFwQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE1hcFByb3RvdHlwZSosIEdl
dHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dEtleShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRWYWx1ZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVj
a2V0TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01h
cEJ1Y2tldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKaW5kZXggYzIyOTA1ZTg4MTNkNGYyNGM5OTE1NjRlZmIyN2FmNDU1Nzc0YWY0ZC4uYWY1NzI2
ZjdiNmU5MmE3ZTlmODgwZDYyZGNmYTMxZmRkZTA5MzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgY29u
c3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5m
bywgJm1hcFByb3RvdHlwZVRhYmwKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
SGFzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgIAogdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAg
LTc4LDkgKzc4LDkgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgbWFwUHJvdG9GdW5jU2l6ZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCog
Z2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzQ2VsbCgp
KSkgewpAQCAtOTUsNTIgKzk1LDUyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBnZXRN
YXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0Ns
ZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgbWFwLT5jbGVh
cihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKENh
bGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKG1hcC0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1
bmNHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShtYXAtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0hhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4obWFwLT5oYXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
LSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKTsKKyAgICBKU01h
cCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOwogICAg
IGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIG1hcC0+c2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIobWFwLT5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggMmIwNmQ2NjAzNWE4ZjhhODIxYjYzN2RjN2M1OTkz
MDg0OWQ4MTJmYS4uYWRmZmFlZGVhOTVkNGQwMTE0NmE0ZWI1NWVmYjA3YTQ0YWUxOWFhZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTMzLDM4
ICszMywzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKE1hdGhPYmplY3QpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBQ29zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbmgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2x6
MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNDb3MoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNDb3NoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jRXhwKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jRXhwbTEoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNGcm91bmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFu
ZG9tKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jUm91bmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jU2luKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jU2luaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FD
b3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQVRhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNDYnJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmND
bHozMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3NoKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGcm91bmQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0h5cG90KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xv
ZzFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jTWF4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jUmFuZG9tKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2ln
bihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNTcXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbmgoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0lNdWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07CiAKQEAgLTEyNyw3
NiArMTI3LDc2IEBAIHZvaWQgTWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGZhYnMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmYWJzKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjphY29zKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvcyhjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW4oRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFz
aW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW4oZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjphdGFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbjIo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jQVRhbjIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGRvdWJsZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgZG91
YmxlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIGRvdWJsZSBhcmcxID0gZXhlYy0+YXJndW1lbnQoMSkudG9OdW1i
ZXIoZXhlYyk7CisgICAgZG91YmxlIGFyZzEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVt
YmVyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihhdGFuMihhcmcwLCBhcmcxKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNDZWlsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNlaWwoZXhl
Yy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihjZWlsKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
Q2x6MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQ2x6MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIHVpbnQzMl90IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7
CisgICAgdWludDMyX3QgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvVUludDMyKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGNseih2YWx1ZSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NvcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6Y29zKGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6Y29zKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0V4cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwKGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoTWF0aDo6ZXhwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
Rmxvb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jRmxvb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZsb29yKGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZmxvb3IoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNI
eXBvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdW5z
aWduZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIGFy
Z3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSBtYXggPSAw
OwogICAgIFZlY3Rvcjxkb3VibGUsIDg+IGFyZ3M7CiAgICAgYXJncy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGFyZ3NDb3VudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3NDb3Vu
dDsgKytpKSB7Ci0gICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQo
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIGlmIChzdGQ6OmlzaW5mKGFyZ3NbaV0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RvdWJsZU51bWJlcigrc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKSk7CkBAIC0yMTcsMTkgKzIxNywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNIeXBvdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzcXJ0KHN1bSkgKiBtYXgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
bG9nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01heChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdW5zaWduZWQgYXJn
c0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSAtc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9
IDA7IGsgPCBhcmdzQ291bnQ7ICsraykgewotICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2YWwgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWwpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQTmFOOwpAQCAt
MjM5LDE0ICsyMzksMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jTWF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNNaW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jTWluKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAg
dW5zaWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgZG91
YmxlIHJlc3VsdCA9ICtzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFyZ3NDb3VudDsgKytrKSB7Ci0gICAgICAgIGRv
dWJsZSB2YWwgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgZG91YmxlIHZhbCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1i
ZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkpIHsKICAgICAgICAgICAg
IHJlc3VsdCA9IFBOYU47CkBAIC0yNTYsMzQgKzI1NiwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gRUNNQSAxNS44LjIuMS4x
MwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
ZG91YmxlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJs
ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIGRvdWJsZSBhcmcyID0gZXhlYy0+YXJndW1lbnQoMSkudG9OdW1iZXIo
ZXhlYyk7CisgICAgZG91YmxlIGFyZzIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVtYmVy
KGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUob3BlcmF0
aW9uTWF0aFBvdyhhcmcsIGFyZzIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91Ymxl
TnVtYmVyKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbU51bWJlcigpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihnbG9iYWxPYmplY3Qt
PndlYWtSYW5kb21OdW1iZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNSb3VuZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoanNSb3Vu
ZChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGpzUm91bmQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJl
cihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBkb3VibGUgYXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7
CisgICAgZG91YmxlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKTsKICAgICBpZiAoc3RkOjppc25hbihhcmcpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKCkpOwogICAgIGlmICghYXJnKQpAQCAtMjkxLDk1ICsyOTEsOTUgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGQ6OnNpZ25iaXQoYXJn
KSA/IC0xIDogMSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNTaW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpzaW4oZXhl
Yy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpzaW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNTcXJ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKHNxcnQo
ZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RvdWJsZU51bWJlcihzcXJ0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jVGFuKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1RhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6dGFu
KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6dGFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBpbnQzMl90IGxlZnQgPSBleGVjLT5hcmd1bWVudCgwKS50b0lu
dDMyKGV4ZWMpOworICAgIGludDMyX3QgbGVmdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBpbnQzMl90IHJpZ2h0ID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IHJpZ2h0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihsZWZ0ICogcmlnaHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91
YmxlTnVtYmVyKE1hdGg6OmFjb3NoKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvc2go
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbmgoZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjphc2luaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW5o
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0FUYW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFuaChleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW5oKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQ2JydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNDYnJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpj
YnJ0KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6Y2JydChjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1i
ZXIoTWF0aDo6Y29zaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvc2goY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6ZXhwbTEoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpl
eHBtMShjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGcm91
bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0PihleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0PihjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0xvZzFwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJl
cihNYXRoOjpsb2cxcChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzFwKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzEwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
bG9nMTAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZzIoZXhlYy0+YXJndW1lbnQoMCku
dG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjpsb2cyKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1l
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lu
aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpzaW5oKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6c2luaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1RhbmgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6dGFu
aChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnRhbmgoY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNUcnVuYyhFeGVjU3RhdGUqZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVj
LT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludGVnZXJQ
cmVzZXJ2ZU5hTihjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCmluZGV4IGFmNTdkMzRiYTVlNDNi
YTQxZmM0MjViZWQyMzM3ZWM2ZjJiZjZhZjcuLmJjZGViNDNjOTExNmU2MDA1NThjZGEyY2UwZGVk
YjRjNThkOGFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0
LmgKQEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgTWF0aE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Fi
cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0Zsb29yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNBYnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVu
YyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01pY3JvdGFzay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmgKaW5kZXggOWM0ZjI3NDY1MzE0
ZWQ0ZGQ2MDY1NzFlNjJkNzc5MjQ3N2Y5M2E2Zi4uNWQ4ODkxNWQ1YjRlYzM5MzQ4M2E0ZDFkYWFi
YzViYzU2YzUzNzBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWljcm90YXNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNr
LmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xh
c3MgTWljcm90YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWljcm90YXNrPiB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwCmluZGV4IDYyMTY1MDdjYWI2MGU4OGI0YjY5OTQxOTcyYWVhNzNiYjNkNDQz
ZWQuLmRjMzQwNjgxMmE2ZDMwNjc4NDM2MzUyNmRlNDUyNGM0ODM0M2RkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCkBAIC01MCwyNCArNTAsMjQgQEAgdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHIKIH0KIAog
dGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+Ojpjb25zdHJ1Y3ROYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+Ojpjb25zdHJ1Y3ROYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNTRVJUKGVy
cm9yU3RydWN0dXJlKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Us
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBl
cnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSkpOwog
fQogCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjYWxsTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVy
ZSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUo
ZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxz
ZSkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1
cmUgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUo
KSktPmVycm9yU3RydWN0dXJlKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxs
cHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogdGVtcGxhdGUgY2xhc3MgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzMw
N2QwMTBjOTM0NDY5NmM2NGFhYzlhOGMyOTVmN2FiMzNlNGEzMC4uMTY2ZWU3MWI0NTQyNDhiODM0
ZmNkN2MyMzczYWUyNGE3MWRhMGQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNjAsMTAgKzYwLDEwIEBA
IGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvckJhc2UgewogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCi0g
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYgdm0pIHsgcmV0dXJuIGdsb2JhbE9iamVj
dCh2bSktPmVycm9yU3RydWN0dXJlKGVycm9yVHlwZSk7IH0KKyAgICBTdHJ1Y3R1cmUqIGVycm9y
U3RydWN0dXJlKFZNJikgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmVycm9yU3RydWN0dXJlKGVy
cm9yVHlwZSk7IH0KIHByaXZhdGU6Ci0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci0gICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogICAgIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAppbmRleCA3YmRjOGY5NmQwMzAx
YzIwNDA0MzE0YjlhZWI3NGRiZGIwMzA3YTRiLi4xMGJhZjkwOTY3OTczMTcyYWM0Mzg2ODVmMGI3
NzVhMjYyZTZmOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUZ1bmN0aW9uLmgKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIAotdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SlNDX0hPU1RfQ0FMTCAqUmF3TmF0aXZlRnVuY3Rpb24pKEV4ZWNTdGF0ZSopOwordHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqUmF3TmF0aXZlRnVuY3Rpb24pKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsKIHB1YmxpYzoK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTmF0aXZlRnVuY3Rpb24gewogICAgIGJvb2wgb3BlcmF0
b3I9PShOYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIu
bV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yIT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBv
cGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gbV9wdHIoZXhlYyk7IH0KKyAgICBF
bmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBtX3B0cihnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSk7IH0KIAogICAgIHZvaWQqIHJhd1BvaW50ZXIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihtX3B0cik7IH0KIApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBUYWdnZWRO
YXRpdmVGdW5jdGlvbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KFRhZ2dlZE5hdGl2ZUZ1bmN0aW9u
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogICAgIGJvb2wg
b3BlcmF0b3IhPShUYWdnZWROYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9w
dHIgIT0gb3RoZXIubV9wdHI7IH0KIAotICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJhdG9yKCkoRXhl
Y1N0YXRlKiBleGVjKSB7IHJldHVybiBOYXRpdmVGdW5jdGlvbigqdGhpcykoZXhlYyk7IH0KKyAg
ICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBOYXRpdmVGdW5jdGlvbigqdGhpcykoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBOYXRpdmVG
dW5jdGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggYTU2Y2FiM2ZhZTc5ZWU5NDVlNjk3NjYyNGEx
NjRiNWIxOGQ4ZjRjOC4uOTY3ZGJmYzU5ZDFmYmY2MjgwZmU1YmYxZjU5YzJlY2ZhMGU3ODIyZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVu
Y3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJ
bmZvIE51bGxHZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJGdW5j
dGlvbikgfTsKIAogbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0
YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRl
ZmluZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1NmQ1M2NjNGFhNjc2YmY3
M2RmYzFlMGVlNmY0ZjNhNjI3MTg3MDMzLi45MGM1Y2YzZWVkZmJmYzUxZTEzN2UzMjMxOTcxOWMw
ODIxN2Q2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxs
U2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bGxTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBzdGF0aWMgYm9vbCBjYWxs
ZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIG5hbWVzcGFjZSBOdWxsU2V0dGVyRnVu
Y3Rpb25JbnRlcm5hbCB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4ZWMpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
U2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyAgICBpZiAo
Y2FsbGVySXNTdHJpY3QoY2FsbEZyYW1lKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRo
YXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4MmE4ZmI0YmY0Mzk5NjUxNDBkNTVkYmI3
NDM5YTAxOTllM2U5OGIuLjkwNjgyOTM4YWY0ODgwNTgxYWU3MDQ3OGM4N2E1ZDc2NjExZmEwOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdl
cihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
ckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTUyLDggKzUyLDggQEAg
Y29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51
bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbE51bWJlckNvbnN0cnVjdG9yLCBjb25zdHJ1Y3ROdW1i
ZXJDb25zdHJ1Y3RvcikKQEAgLTg2LDEzICs4NiwxMyBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBl
KQogfQogCiAvLyBFQ01BIDE1LjcuMQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGRvdWJsZSBuID0g
ZXhlYy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykgOiAwOworICAgIGRvdWJsZSBuID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
PyBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkgOiAw
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm51bWJlck9iamVjdFN0cnVjdHVy
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIE51bWJlck9iamVjdCogb2JqZWN0ID0gTnVtYmVyT2JqZWN0OjpjcmVhdGUodm0sIHN0
cnVjdHVyZSk7CkBAIC0xMDEsMjEgKzEwMSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB9
CiAKIC8vIEVDTUEgMTUuNy4yCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcighZXhlYy0+YXJndW1lbnRDb3VudCgpID8gMCA6IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cighY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPyAwIDogY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSk7CiB9CiAKIC8vIEVDTUEtMjYyIDIwLjEu
Mi4zCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3Rv
ckZ1bmNJc0ludGVnZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoZXhlYy0+YXJndW1lbnQo
MCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oTnVtYmVyQ29uc3Ry
dWN0b3I6OmlzSW50ZWdlckltcGwoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAogLy8g
RUNNQS0yNjIgMjAuMS4yLjUKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZl
SW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBib29sIGlzSW50ZWdlcjsKICAgICBpZiAo
YXJndW1lbnQuaXNJbnQzMigpKQogICAgICAgICBpc0ludGVnZXIgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMDNh
NWUxYjAwMzc4YmIyYmVjYzI2NGJkODkzYWM3N2U3ZjlkZTllMi4uMjhlMmY1NDEzMmVjOGNkYjY0
ZTkzZmMyNzVmYmM4YjkwYTQzNzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC00NCwxMSArNDQsMTEgQEAgdHlwZWRlZiBX
VEY6OmRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIERvdWJsZUNvbnZlcnNpb25TdHJp
bmdCdWlsZGVyOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmlu
ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNp
b24oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvRXhwb25lbnRpYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtMzg2LDE4ICszODYsMTggQEAg
U3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCByYWRp
eCkKIC8vIFRoaXMgbWV0aG9kIHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHNwZWNpZnlpbmcg
YSBudW1iZXIgb2YgKmRlY2ltYWwgcGxhY2VzKgogLy8gdG8gcm91bmQgdGhlIHNpZ25pZmljYW5k
IHRvIChvciwgcHV0IGFub3RoZXIgd2F5LCB0aGlzIG1ldGhvZCBvcHRpb25hbGx5IHJvdW5kcwog
Ly8gdG8gYXJndW1lbnQtcGx1cy1vbmUgc2lnbmlmaWNhbnQgZmlndXJlcykuCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4
cG9uZW50aWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGRvdWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlzVmFsdWUo
KSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2Nv
cGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVy
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBK
U1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICAvLyBQZXJmb3JtIFRvSW50ZWdlciBvbiB0aGUgYXJndW1l
bnQgYmVmb3JlIHJlbWFpbmluZyBzdGVwcy4KLSAgICBpbnQgZGVjaW1hbFBsYWNlcyA9IHN0YXRp
Y19jYXN0PGludD4oYXJnLnRvSW50ZWdlcihleGVjKSk7CisgICAgaW50IGRlY2ltYWxQbGFjZXMg
PSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0ludGVnZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmlu
aXR5LgpAQCAtNDA1LDcgKzQwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4
KSkpOwogCiAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwIHx8IGRlY2ltYWxQbGFjZXMgPiAxMDAp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgInRvRXhwb25l
bnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b0V4cG9uZW50aWFs
KCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJfcyk7CiAKICAgICAvLyBSb3Vu
ZCBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHVuZGVmaW5lZCwgYWx3YXlzIGZvcm1hdCBhcyBleHBv
bmVudGlhbC4KICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CkBAIC00MjMsMTkgKzQy
MywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhw
b25lbnRpYWwoRXhlY1N0YXRlKiBleGVjKQogLy8gVGhpcyBtZXRob2QgdGFrZXMgYW4gYXJndW1l
bnQgc3BlY2lmeWluZyBhIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byByb3VuZCB0aGUKIC8v
IHNpZ25pZmljYW5kIHRvLiBIb3dldmVyIHdoZW4gY29udmVydGluZyBsYXJnZSB2YWx1ZXMgKDFl
KzIxIGFuZCBhYm92ZSkgdGhpcwogLy8gbWV0aG9kIHdpbGwgaW5zdGVhZCBmYWxsYmFjayB0byBj
YWxsaW5nIFRvU3RyaW5nLiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJv
dG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgaWYgKCF0b1RoaXNOdW1iZXIodm0s
IGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1i
ZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdG9UaGlz
TnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4KSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKIAotICAgIGludCBkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50PihleGVj
LT5hcmd1bWVudCgwKS50b0ludGVnZXIoZXhlYykpOworICAgIGludCBkZWNpbWFsUGxhY2VzID0g
c3RhdGljX2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlcihjYWxsRnJh
bWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChkZWNp
bWFsUGxhY2VzIDwgMCB8fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDAgYW5kIDEwMCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAidG9GaXhlZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFu
ZCAxMDAiX3MpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRo
ZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHks
IGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00NTcsMjIgKzQ1NywyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhl
Y1N0YXRlKiBleGVjKQogLy8gZGVjaW1hbCwgd2hpbHN0IDEwMDAgaXMgY29udmVydGVkIHRvIHRo
ZSBleHBvbmVudGlhbCByZXByZXNlbnRhdGlvbiAxLjAwZSszLgogLy8gRm9yIG5lZ2F0aXZlIGV4
cG9uZW50cyB2YWx1ZXMgPj0gMWUtNiBhcmUgZm9ybWF0ZWQgYXMgZGVjaW1hbCBmcmFjdGlvbnMs
CiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVudGlhbCByZXByZXNl
bnRhdGlvbi4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Q
cmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwg
ZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJl
ckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0b1RoaXNO
dW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgLy8gVG8gcHJlY2lzaW9uIGNh
bGxlZCB3aXRoIG5vIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGFy
Zy5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgLy8gUGVyZm9ybSBUb0ludGVnZXIgb24g
dGhlIGFyZ3VtZW50IGJlZm9yZSByZW1haW5pbmcgc3RlcHMuCi0gICAgaW50IHNpZ25pZmljYW50
RmlndXJlcyA9IHN0YXRpY19jYXN0PGludD4oYXJnLnRvSW50ZWdlcihleGVjKSk7CisgICAgaW50
IHNpZ25pZmljYW50RmlndXJlcyA9IHN0YXRpY19jYXN0PGludD4oYXJnLnRvSW50ZWdlcihjYWxs
RnJhbWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8g
SGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgaWYgKHNpZ25pZmljYW50RmlndXJlcyA8IDEg
fHwgc2lnbmlmaWNhbnRGaWd1cmVzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZXhlYywgc2NvcGUsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2Vl
biAxIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k
IDEwMCJfcyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJp
bmc6Om51bWJlclRvU3RyaW5nRml4ZWRQcmVjaXNpb24oeCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBL
ZWVwVHJhaWxpbmdaZXJvcykpKTsKIH0KQEAgLTU1Myw1MCArNTUzLDQ5IEBAIEpTU3RyaW5nKiBu
dW1iZXJUb1N0cmluZyhWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCByYWRpeCkK
ICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbnRlcm5hbCh2bSwgZG91YmxlVmFsdWUsIHJhZGl4
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlOwotICAgIGlmICghdG9UaGlzTnVtYmVy
KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihzdGF0ZSwgc2NvcGUsIHN0YXRlLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGRvdWJs
ZVZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGF1dG8gcmFkaXggPSBl
eHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHNj
b3BlKTsKKyAgICBhdXRvIHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVudChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHNjb3BlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyVG9TdHJpbmdJbnRlcm5hbCh2bSwgZG91YmxlVmFsdWUsIHJhZGl4KSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwg
ZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJl
ckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0b1RoaXNO
dW1iZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogCiAjaWYgRU5BQkxFKElOVEwpCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnRsTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOwotICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6
ZU51bWJlckZvcm1hdCgqZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEp
KTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKmNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1i
ZXIoKmV4ZWMsIHgpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKmNhbGxGcmFtZSwgeCkpKTsKICNlbHNl
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhleGVjKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhjYWxsRnJh
bWUpKTsKICNlbmRpZgogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclBy
b3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSB4OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCB0aGlzVmFsdWUsIHgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih4KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKaW5kZXggMjllNTVjNWViMzRkYTI1ZDZiYWZhNWU5
MTliMDIzZDNhMTM0ODUzZi4uNzk3YTNjYjA4OGRkYWE0ZTZhMTJjZDA4ZDc5Y2VmODQ1MjNmZWQy
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTnVtYmVyUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IE51bWJlck9iamVjdCB7CiAgICAgTnVtYmVyUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CiB9
OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEpTU3RyaW5nKiBpbnQzMlRv
U3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogaW50
NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogSlNTdHJpbmcq
IG51bWJlclRvU3RyaW5nKFZNJiwgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApp
bmRleCA4ODRkOWZmZjQyZGQ1NjdlZGU3YmIzYjY0NzkxNTgzOTBiM2FhNmJiLi45NGVjYWIzN2Y5
NjQ2ZDE1ZGE1ZWIwZmI4YzI1OTFmOTZjNTI0NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC00MCwyMSArNDAsMjEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJldmVudEV4dGVu
c2lvbnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFz
c2lnbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFBy
b3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckZyZWV6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9ySXNTZWFsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvcklzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtOTMsOCArOTMsOCBAQCBjb25zdCBDbGFzc0lu
Zm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb246OnNfaQogKi8KIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0s
IHN0cnVjdHVyZSwgY2FsbE9iamVjdENvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29u
c3RydWN0b3IpCkBAIC0xMTUsMTEgKzExNSwxMCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagog
fQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3ZhbHVlXSkKLXN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1Rh
cmdldCkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3RXaXRo
TmV3VGFyZ2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBPYmpl
Y3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0
b3IqPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gb2JqZWN0Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBuZXdU
YXJnZXQgY29uZGl0aW9uIGluIHRoaXMgY2FsbGVyIHNpZGUgaW5zdGVhZCBvZiBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSBzaWRlLgpAQCAtMTQzLDQzICsxNDIsNDMg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2UKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGFyZy50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dE9iamVjdChleGVjLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0T2JqZWN0V2l0aE5ld1RhcmdldChjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0KGV4ZWMsIEpTVmFsdWUoKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0V2l0aE5ld1Rhcmdl
dChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9i
amVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JT
ZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmIChvYmplY3RWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5vdCBzZXQgcHJvdG90
eXBlIG9mIHVuZGVmaW5lZCBvciBudWxsIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVuZGVmaW5l
ZCBvciBudWxsIl9zKTsKIAotICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAg
ICAgaWYgKCFwcm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3RvdHlwZSB2YWx1ZSBjYW4gb25s
eSBiZSBhbiBvYmplY3Qgb3IgbnVsbCJfcyk7CiAKLSAgICBKU09iamVjdCogb2JqZWN0ID0gb2Jq
ZWN0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZh
bHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1
ZTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBl
eGVjLCBwcm90b1ZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CisgICAgYm9vbCBkaWRTZXRQ
cm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lLCBwcm90b1ZhbHVl
LCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoZGlk
U2V0UHJvdG90eXBlLCBzY29wZS5leGNlcHRpb24oKSB8fCBkaWRTZXRQcm90b3R5cGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogfQpAQCAtMjMyLDY0ICsyMzEs
NjQgQEAgSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2IKICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChl
eGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09i
amVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhleGVjLCBvYmplY3Qp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGNhbGxGcmFtZSwgb2JqZWN0KSkp
OwogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9P
YmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxsRnJh
bWUsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6SW5jbHVkZSkpKTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2Fj
aGUuCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBl
eGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3du
UHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9i
amVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
RXhjbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2ln
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRhcmdldFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXRW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHRhcmdldFZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiX3MpOwotICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIk9iamVjdC5hc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFy
Z2V0VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgLy8gRklYTUU6IEV4dGVuZCB0aGlzIGZvciBub24gSlNGaW5hbE9i
amVjdC4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGxpa2UgdG8gdXNlIHRoaXMgZmFzdCBwYXRoIGZv
ciBmdW5jdGlvbiBvYmplY3RzIHRvby4KQEAgLTI5OCwxNyArMjk3LDE3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIDg+IHByb3BlcnRpZXM7
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgdmFsdWVzOwotICAgIHVuc2lnbmVkIGFyZ3NDb3Vu
dCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYXJn
c0NvdW50OyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpOworICAgICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAgICAgaWYgKHNvdXJjZVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgSlNPYmplY3QqIHNv
dXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBKU09iamVjdCogc291
cmNlID0gc291cmNlVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAodGFyZ2V0Q2FuUGVyZm9ybUZh
c3RQdXQpIHsKICAgICAgICAgICAgIGlmICghc291cmNlLT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCh2bSkpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3RhdGljUHJvcGVydGll
cyhleGVjKTsKKyAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3RhdGljUHJvcGVydGll
cyhjYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgICAgICB9CiAKQEAgLTM3NCwxMiArMzczLDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICB0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCA9IGZhbHNlOwogCiAgICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXModm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NB
bmRTeW1ib2xzLCBQcml2YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7Ci0gICAgICAgIHNvdXJjZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSwgZXhlYywgcHJvcGVy
dGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsK
KyAgICAgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMoc291
cmNlLCBjYWxsRnJhbWUsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0gKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIHsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAgICAgICAgICAgIGJv
b2wgaGFzUHJvcGVydHkgPSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlT
bG90KHNvdXJjZSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIGJvb2wg
aGFzUHJvcGVydHkgPSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90
KHNvdXJjZSwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgICAgIGlmICghaGFzUHJv
cGVydHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDEzICszODcsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAgICBpZiAo
TElLRUxZKCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQotICAgICAgICAgICAgICAg
IHZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gc291cmNlLT5nZXQoY2FsbEZy
YW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xv
dCh0YXJnZXQsIHRydWUpOwotICAgICAgICAgICAgdGFyZ2V0LT5wdXRJbmxpbmUoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgICAgIHRhcmdldC0+
cHV0SW5saW5lKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90
KTsKICAgICAgICAgfTsKIAogICAgICAgICAvLyBGaXJzdCBsb29wIGlzIGZvciBzdHJpbmdzLiBT
ZWNvbmQgbG9vcCBpcyBmb3Igc3ltYm9scyB0byBrZWVwIHN0YW5kYXJkaXplZCBvcmRlciByZXF1
aXJlbWVudCBpbiB0aGUgc3BlYy4KQEAgLTQyNiwyOCArNDI1LDI4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFy
Z2V0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJP
YmplY3QudmFsdWVzIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCJfcyk7Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2Jq
ZWN0KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiX3MpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1
ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKLSAgICBKU0FycmF5KiB2YWx1ZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIpOworICAgIEpTQXJyYXkqIHZhbHVlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZy
YW1lLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyh2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3Ry
aW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwotICAgIHRhcmdldC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhlYywgcHJvcGVydGllcywgRW51
bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICB0YXJn
ZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQsIGNhbGxGcmFt
ZSwgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIGF1dG8gYWRkVmFsdWUgPSBbJl0gKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGFyZ2V0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgICAgICBib29s
IGhhc1Byb3BlcnR5ID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xv
dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdl
dCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNDU2LDEyICs0NTUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgaWYgKExJS0VMWSghc2xvdC5pc1RhaW50ZWRCeU9w
YXF1ZU9iamVjdCgpKSkKLSAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFt
ZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWUgPSB0YXJn
ZXQtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXQt
PmdldChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgdmFsdWVzLT5wdXREaXJlY3RJbmRleChleGVj
LCBpbmRleCsrLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlcy0+cHV0RGlyZWN0SW5kZXgoY2FsbEZy
YW1lLCBpbmRleCsrLCB2YWx1ZSk7CiAgICAgfTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAs
IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsgaSA8IG51bVByb3BlcnRpZXM7IGkr
KykgewpAQCAtNTc0LDI0ICs1NzMsMjQgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIl9zKTsKLSAg
ICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkg
YmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7CisgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUHJvcGVydHlEZXNjcmlw
dG9yIGRlc2NyaXB0b3I7Ci0gICAgYXV0byBzdWNjZXNzID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOworICAgIGF1dG8gc3VjY2VzcyA9
IHRvUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwg
ZGVzY3JpcHRvcik7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgPT0g
c3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgb2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBvYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJv
cGVydHkob2JqLCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqKSk7CiB9CiAK
QEAgLTY0MSwzOCArNjQwLDM4IEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvCiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7Ci0g
ICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBKU09iamVjdCogcHJvcHMgPSBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkg
YmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7CisgICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIEpTT2JqZWN0KiBwcm9wcyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXByb3BzKTsKICAgICBpZiAoVU5MSUtFTFko
IXByb3BzKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCB0
YXJnZXRPYmosIHByb3BzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMoY2FsbEZyYW1lLCB0YXJnZXRPYmosIHByb3BzKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgcHJvdG8gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmpl
Y3QoKSAmJiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3Ig
bnVsbC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3Mp
OwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCi0gICAgICAgID8g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQotICAgICAgICA6IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVs
bFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSku
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUs
IGFzT2JqZWN0KHByb3RvKSkKKyAgICAgICAgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBp
ZiAoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7Ci0gICAgSlNPYmplY3QqIHByb3BlcnRpZXMgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCog
cHJvcGVydGllcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9PYmplY3QoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhl
eGVjLCBuZXdPYmplY3QsIHByb3BlcnRpZXMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhjYWxsRnJhbWUsIG5ld09iamVj
dCwgcHJvcGVydGllcykpKTsKIH0KIAogZW51bSBjbGFzcyBJbnRlZ3JpdHlMZXZlbCB7CkBAIC03
OTAsMTcgKzc4OSwxNyBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2Vh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiBPLgotICAgIEpTVmFsdWUgb2JqID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUob2JqKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdENvbnN0cnVjdG9yU2VhbChleGVjLCBhc09iamVjdChvYmopKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9y
U2VhbChjYWxsRnJhbWUsIGFzT2JqZWN0KG9iaikpKSk7CiB9CiAKIEpTT2JqZWN0KiBvYmplY3RD
b25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCkBAIC04
MjIsMzYgKzgyMSwzNiBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckZyZWV6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
Ly8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gTy4KLSAgICBKU1ZhbHVlIG9i
aiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iaik7Ci0gICAgSlNPYmplY3QqIHJlc3VsdCA9IG9iamVjdENvbnN0cnVjdG9y
RnJlZXplKGV4ZWMsIGFzT2JqZWN0KG9iaikpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZShjYWxsRnJhbWUsIGFzT2JqZWN0KG9iaikpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNWYWx1
ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYXJndW1lbnQpOwotICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOworICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gdHJ1ZS4KLSAg
ICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KG9iaik7CkBAIC04NjEsMTUgKzg2MCwxNSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmlzU2Vh
bGVkKHZtKSkpOwogCiAgICAgLy8gMi4gUmV0dXJuID8gVGVzdEludGVncml0eUxldmVsKE8sICJz
ZWFsZWQiKS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0SW50ZWdy
aXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZXhlYywgdm0sIG9iamVjdCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0SW50ZWdyaXR5TGV2ZWw8SW50
ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oY2FsbEZyYW1lLCB2bSwgb2JqZWN0KSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cklzRnJvemVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4g
dHJ1ZS4KLSAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUg
b2JqID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CkBAIC04NzksMjUgKzg3OCwyNSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmpl
Y3QtPmlzRnJvemVuKHZtKSkpOwogCiAgICAgLy8gMi4gUmV0dXJuID8gVGVzdEludGVncml0eUxl
dmVsKE8sICJmcm96ZW4iKS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0
ZXN0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4oZXhlYywgdm0sIG9iamVj
dCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0ZXN0SW50ZWdyaXR5
TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4oY2FsbEZyYW1lLCB2bSwgb2JqZWN0KSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRl
bnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7Ci0gICAgYm9vbCBpc0V4dGVu
c2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihzYW1lVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9
CiAKIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggM2UwNjcyNGNlYWMzOGExOWU4
MjI3NmI0ZjM3MGYwODViYTUxYTdiZC4uNmVmMjQzODNhM2FkNGZkYTdmMTkwZGEwNzIzYjFlMjNi
MmNlMmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCkBAIC0yNiwxMSArMjYsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eVN5bWJvbHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4
IDAwMDg2NmZkZTlkMWMyOTFhMWYyZWIwYzdjYTMxZGM1YzRmZTVmNDguLmU1YTlkYWZkZTJkNzA3
NzU3MDg3ZjU0YTYwN2E5NDk0NTMwOWMyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMzMsMTUgKzMzLDE1IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3Rv
dHlwZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
TG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1l
cmFibGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1By
b3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoT2JqZWN0UHJvdG90eXBlKTsKIApA
QCAtNzgsMjQgKzc4LDI0IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNW
YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpOwotICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09i
amVjdChleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CisgICAgSlNPYmplY3QqIHZhbHVlT2Jq
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1
ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodmFsdWVPYmopOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7Ci0gICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Y2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwMywzNCAr
MTAzLDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFz
T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBoYXNP
d25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJlSGFzT3duUHJvcGVydHlDYWNoZSgpOwogICAgIGlm
IChPcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRoaXNPYmpl
Y3QtPmhhc093blByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICBBU1NFUlQo
KnJlc3VsdCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5
TmFtZSkpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbigqcmVzdWx0KSk7CiAgICAgfQogCiAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KTsKLSAgICBib29sIHJlc3VsdCA9IHRoaXNPYmplY3QtPmhhc093
blByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSB0
aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICBoYXNPd25Qcm9wZXJ0eUNhY2hlLT50cnlBZGQodm0sIHNsb3QsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNJc1Byb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwog
Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgIGlmICghY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoZXhlYy0+
YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgIEpTVmFsdWUgdiA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTM4LDI1ICsxMzgsMjUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
CiAgICAgICAgIGlmICh2ID09IHRoaXNPYmopCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90b3R5cGUo
dm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIH0KIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1Zh
bHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERh
dGEodm0sIGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVzYWdlIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImludmFs
aWQgZ2V0dGVyIHVzYWdlIl9zKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7CkBAIC0xNjYsMjUgKzE2NiwyNSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKKyAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmpl
Y3QsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0Rl
ZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9P
YmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwogICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6
Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiaW52
YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwogCi0gICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKQEAgLTE5NCwyNCAr
MTk0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0cnVl
OwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVm
aW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2Fs
bEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJvcGVydHkgPSB0aGlz
T2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBi
b29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCAhaGFzUHJvcGVydHkpOwogICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICBp
ZiAoc2xvdC5pc0FjY2Vzc29yKCkpIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvcikgewogICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0
b3I7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpKTsKLSAgICAgICAgICAgIGlm
IChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpKQorICAgICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKS0+Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgPyBK
U1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5nZXR0ZXIoKSkgOiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjksMTkgKzIyOSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFo
YXNQcm9wZXJ0eSk7CiAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgIGlmIChzbG90Lmlz
QWNjZXNzb3IoKSkgewpAQCAtMjUxLDcgKzI1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICAg
ICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgaWYgKHNsb3Quc2xv
dEJhc2UoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcikpCisgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSA/IEpTVmFsdWU6OmVu
Y29kZShkZXNjcmlwdG9yLnNldHRlcigpKSA6IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1OSw2NCArMjU5LDY0IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09i
amVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAg
ICBib29sIGVudW1lcmFibGUgPSB0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUo
KTsKKyAgICBib29sIGVudW1lcmFibGUgPSB0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGVudW1l
cmFibGUpKTsKIH0KIAogLy8gMTUuMi40LjMgT2JqZWN0LnByb3RvdHlwZS50b0xvY2FsZVN0cmlu
ZygpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IFYgYmUgdGhlIHRoaXMgdmFsdWUuCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJbnZva2UoViwgInRv
U3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVj
dCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhjYWxsRnJhbWUsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8u
W1tHZXRdXSgidG9TdHJpbmciLCBWKQogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgYm9vbCBoYXNQcm9w
ZXJ0eSA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nLCBzbG90KTsKKyAgICBib29sIGhhc1Byb3BlcnR5ID0gb2JqZWN0LT5nZXRQcm9wZXJ0
eVNsb3QoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgc2xvdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5KTsKLSAg
ICBKU1ZhbHVlIHRvU3RyaW5nID0gaGFzUHJvcGVydHkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSB0
b1N0cmluZyA9IGhhc1Byb3BlcnR5ID8gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKSA6IGpzVW5kZWZpbmVkKCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBJZiBJc0NhbGxhYmxlKHRv
U3RyaW5nKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIENhbGxE
YXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRv
U3RyaW5nLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgLy8gUmV0dXJu
IHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIHRv
U3RyaW5nIHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYW5kIG5vIGFyZ3VtZW50cy4KLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRvU3RyaW5n
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxGcmFtZSwg
dG9TdHJpbmcsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRPYmplY3RT
dHJpbmcoKSA6IHZtLnNtYWxsU3RyaW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0zMjYsMjYgKzMyNiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogCiAgICAgUHJvcGVydHlOYW1lIHRvU3RyaW5nVGFnU3lt
Ym9sID0gdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2w7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sLCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYgdG9TdHJpbmdUYWdTbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZy
YW1lLCB0b1N0cmluZ1RhZ1N5bWJvbCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHRv
U3RyaW5nVGFnU2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmIChmb3VuZCkgewotICAgICAg
ICAgICAgSlNWYWx1ZSBzdHJpbmdUYWcgPSB0b1N0cmluZ1RhZ1Nsb3QuZ2V0VmFsdWUoZXhlYywg
dG9TdHJpbmdUYWdTeW1ib2wpOworICAgICAgICAgICAgSlNWYWx1ZSBzdHJpbmdUYWcgPSB0b1N0
cmluZ1RhZ1Nsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCB0b1N0cmluZ1RhZ1N5bWJvbCk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgaWYg
KHN0cmluZ1RhZy5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgSlNTdHJpbmcqIHJlc3Vs
dCA9IGpzU3RyaW5nKGV4ZWMsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFydCgpLCBh
c1N0cmluZyhzdHJpbmdUYWcpLCB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KCddJykpOworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiByZXN1bHQgPSBqc1N0cmluZyhjYWxs
RnJhbWUsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFydCgpLCBhc1N0cmluZyhzdHJp
bmdUYWcpLCB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCddJykpOwogICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAg
ICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShl
eGVjLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOworICAgICAgICAgICAgICAgIHRoaXNP
YmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoY2FsbEZyYW1lLCB2
bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgdGFnID0gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1N0cmluZ05hbWUodGhpc09iamVjdCwgZXhlYyk7
CisgICAgICAgIFN0cmluZyB0YWcgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvU3Ry
aW5nTmFtZSh0aGlzT2JqZWN0LCBjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmlu
ZygiW29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5n
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCBuZXdT
dHJpbmcpOwotICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0
cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFnU2xvdCk7CisgICAgICAgIHRo
aXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoY2FsbEZyYW1l
LCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0pKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oCmluZGV4IGYyNzg4NmJiMjY2NjY1MDczNzYwNjFjYmQwNjIyZmYyMmFlNGIyMzAu
LmI5YWE2NDlmNjBjMDUyOWEwNjA1NTZlNmUyMWQzY2NjMzc3MzQzYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCkBAIC00NSw2ICs0NSw2
IEBAIGNsYXNzIE9iamVjdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBPYmplY3RQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUpTX0VYUE9S
VF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAppbmRleCAyNzczOTU1YWQ5OTViNmZkYzk0
ODEyMzY4ZTk0MDkzZmZlZTQ2OTkxLi40NTg2YzEzMGQzYTY5YThhNTc4ZTFkMDAyMzgyZTY1MTM4
ZWRkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcApAQCAtNDgsMzAgKzQ4LDMwIEBAIFByb3h5Q29uc3RydWN0b3IqIFByb3h5
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFByb3h5Q29uc3RydWN0b3I6OlBy
b3h5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSwgY2FsbFByb3h5LCBjb25zdHJ1Y3RQcm94eU9iamVjdCkKIHsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VS
ZXZvY2FibGVQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNh
bGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIl9zKTsK
KyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRz
IHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5k
bGVyIl9zKTsKIAotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2Fs
bEZyYW1lKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CiAgICAgSlNWYWx1ZSBo
YW5kbGVyID0gYXJncy5hdCgxKTsKLSAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVj
dDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGFyZ2V0LCBoYW5k
bGVyKTsKKyAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRlKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFByb3h5UmV2b2tlKiByZXZva2Ug
PSBQcm94eVJldm9rZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnBy
b3h5UmV2b2tlU3RydWN0dXJlKCksIHByb3h5KTsKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0g
UHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm94eVJldm9rZVN0cnVjdHVy
ZSgpLCBwcm94eSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJveHkiKSwgcHJv
eHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9rZSIpLCByZXZv
a2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwpAQCAt
NzksMTAgKzc5LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VS
ZXZvY2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94
eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhy
b3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5LnJldm9jYWJs
ZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxlZCJfcyk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHkucmV2b2Nh
YmxlIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIl9zKTsKIH0K
IAogdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNo
YXIqIG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05MiwyMiArOTIsMjIg
QEAgdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNo
YXIqIG5hbWUsIEpTR2xvYmFsT2JqZWN0KgogICAgIHB1dERpcmVjdCh2bSwgbWFrZUlkZW50aWZp
ZXIodm0sICJyZXZvY2FibGUiKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDIsICJyZXZvY2FibGUiX3MsIG1ha2VSZXZvY2FibGVQcm94eSwgTm9JbnRyaW5zaWMsIHByb3h5
UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGlm
IChleGVjLT5uZXdUYXJnZXQoKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgIm5ldy50YXJnZXQgb2YgUHJveHkgY29uc3RydWN0IHNo
b3VsZCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGlmIChjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJuZXcudGFyZ2V0IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQgbm90IGJl
IHVuZGVmaW5lZCJfcyk7CiAKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgQXJnTGlzdCBh
cmdzKGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwogICAgIEpT
VmFsdWUgaGFuZGxlciA9IGFyZ3MuYXQoMSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHRhcmdldCwgaGFuZGxlcikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShQcm94eU9iamVjdDo6Y3JlYXRlKGNhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiUHJveHkiKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlByb3h5IikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBlMzVkNDk1YWJjMTZiMTBjMzc2NWIx
OTdkZDAyZDFjM2RiMmYyNjQwLi44YmU4MTgyNzk5M2IyMTE0ZDFmMTViMDczNzk3YzcxNWJjNzk0
N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3Bw
CkBAIC01MTEsNDIgKzUxMSw0MiBAQCBib29sIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbQogICAgIHJldHVy
biB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIE5PX1RBSUxfQ0FM
TFMoKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CiAgICAgfQotICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpOwog
CiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpT
VmFsdWUgYXBwbHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNh
bGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBh
cHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChjYWxsRnJhbWUsIGNhbGxEYXRhLCBjYWxs
VHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJhcHBseSIpLCAiJ2FwcGx5JyBwcm9wZXJ0eSBvZiBh
IFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSBwcm94eS0+dGFyZ2V0KCk7CiAgICAgaWYgKGFwcGx5TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
dGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRhcmdldCwgY2FsbERhdGEpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywg
dGFyZ2V0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGV4ZWMtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGV4
ZWMpKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjYWxsKGNhbGxGcmFtZSwgdGFyZ2V0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKICAgICB9CiAKLSAgICBKU0FycmF5
KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7CisgICAgSlNBcnJheSogYXJn
QXJyYXkgPSBjb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHN0YXRpY19jYXN0PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFy
Z3VtZW50cy5hcHBlbmQoZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIEVDTUFNb2RlOjpT
dHJpY3RNb2RlKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhjYWxsRnJhbWUsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CiAgICAgYXJndW1lbnRz
LmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4
ZWMsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNh
bGxGcmFtZSwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1l
bnRzKSkpOwogfQogCiBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBj
ZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC01NjIsNDUgKzU2Miw0NSBAQCBDYWxsVHlwZSBQ
cm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IE5PX1RBSUxfQ0FMTFMoKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsK
LSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQotICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2Fz
dDxQcm94eU9iamVjdCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFByb3h5T2JqZWN0KiBwcm94
eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNW
YWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFs
dWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPiho
YW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxU
eXBlOwotICAgIEpTVmFsdWUgY29uc3RydWN0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4
ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwg
Iidjb25zdHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRo
b2QoY2FsbEZyYW1lLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiY29u
c3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAg
ICAgaWYgKGNvbnN0cnVjdE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKICAgICAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGFyZ2V0LCBjb25z
dHJ1Y3REYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25z
dHJ1Y3RUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgQXJnTGlzdChleGVjKSwgZXhlYy0+bmV3VGFyZ2V0KCkpKSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChjYWxsRnJh
bWUsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChjYWxsRnJh
bWUpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSkpOwogICAgIH0KIAotICAgIEpTQXJyYXkqIGFy
Z0FycmF5ID0gY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSo+KG51bGxwdHIpLCBBcmdMaXN0KGV4ZWMpKTsKKyAgICBKU0FycmF5KiBhcmdBcnJh
eSA9IGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSo+KG51bGxwdHIpLCBBcmdMaXN0KGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmdBcnJheSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT5uZXdUYXJn
ZXQoKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gY2FsbChleGVjLCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxl
ciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBjb25z
dHJ1Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAo
IXJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qg
c2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVj
dCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlSZXZva2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlSZXZva2UuY3BwCmluZGV4IGY4NzVmNjVkNDUxMzk0OTcwNjRkOTM2YTk3NGE3OWRmNjA4ZWVh
NGUuLjcwNjYyYzBlOGQ4YzE2NjdjMGU1YjA2ZTNmYTNiZWM0ZmQ5N2EyMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgUHJveHlSZXZva2UqIFByb3h5UmV2b2tlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJveHlPYmplY3QqIHByb3gKICAgICByZXR1cm4gcmV2b2tlOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlS
ZXZva2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUHJveHlSZXZva2U6OlByb3h5
UmV2b2tlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIHBlcmZvcm1Qcm94eVJldm9rZSwgbnVsbHB0cikKQEAgLTU3LDE1ICs1NywxNSBAQCB2
b2lkIFByb3h5UmV2b2tlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUs
IFByb3h5T2JqZWN0KiBwcm94eSkKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgUHJveHlSZXZv
a2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tlKj4oZXhlYy0+anNDYWxsZWUoKSk7
CisgICAgUHJveHlSZXZva2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tlKj4oY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIHByb3h5VmFsdWUgPSBwcm94eVJldm9r
ZS0+cHJveHkoKTsKICAgICBpZiAocHJveHlWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIFByb3h5T2JqZWN0KiBwcm94
eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KHByb3h5VmFsdWUpOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHByb3h5LT5yZXZv
a2Uodm0pOwogICAgIHByb3h5UmV2b2tlLT5zZXRQcm94eVRvTnVsbCh2bSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggODU2MDliM2MwZmU4OWE2NGRiYzM4
YjEzNTIxYTAwYWFmOGEyOThmMC4uODQ2ZDI5MzkzMmI0ZjNmZTgyZDcwNzFlMTRiYTBkY2I4ZmIy
NzU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5jcHAKQEAgLTM0LDE2ICszNCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RE
ZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdEdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RD
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdEdldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0
T2JqZWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04Nyw1OSArODcsNTkgQEAgdm9pZCBSZWZs
ZWN0T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMt
cmVmbGVjdC5jb25zdHJ1Y3QKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdENvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0
YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CiAK
ICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlOwogICAgIGlmICghdGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0sIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25z
dHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsK
IAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gdGFyZ2V0OwotICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPj0gMykgewotICAgICAgICBuZXdUYXJnZXQgPSBleGVjLT5hcmd1bWVudCgyKTsK
KyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgeworICAgICAgICBuZXdU
YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5p
c0NvbnN0cnVjdG9yKHZtKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUg
dGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVzZW50Il9zKSk7CisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBj
b25zdHJ1Y3RvciBpZiBwcmVzZW50Il9zKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwotICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBKU09iamVjdCog
YXJndW1lbnRzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29u
c3RydWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zKSk7CiAKLSAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVjLCBhcmd1
bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCAiVGhpcyBlcnJvciBtdXN0IG5v
dCBiZSByYWlzZWQiX3MsICJUaGlzIGVycm9yIG11c3Qgbm90IGJlIHJhaXNlZCJfcywgWyZdIChK
U1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9vbCB7CisgICAgY3JlYXRlTGlzdEZyb21B
cnJheUxpa2UoY2FsbEZyYW1lLCBhcmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5
cGVzLCAiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiX3MsICJUaGlzIGVycm9yIG11c3Qg
bm90IGJlIHJhaXNlZCJfcywgWyZdIChKU1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9v
bCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgKGFyZ3VtZW50cy5v
dmVyZmxvd0NoZWNrTm90TmVlZGVkKCksIGVuY29kZWRKU1ZhbHVlKCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudHMs
IG5ld1RhcmdldCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0
aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3REZWZpbmVQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0Il9zKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgYm9vbCBzdWNjZXNzID0gdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOwor
ICAgIGJvb2wgc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gc3VjY2Vzcyk7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xNDksMTQxICsxNDksMTQxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBSZWZsZWN0LmRlZmluZVByb3BlcnR5IHNob3VsZCBu
b3QgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5lT3duUHJvcGVydHkgb3BlcmF0aW9uIGZh
aWxzLgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxzZTsKICAgICBKU09iamVjdCogdGFyZ2V0
T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFy
Z2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAgIGNvbnN0IElkZW50aWZpZXIg
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSku
dG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsKLSAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpCi0gICAgICAgIHJlY2VpdmVyID0gZXhl
Yy0+YXJndW1lbnQoMik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMp
CisgICAgICAgIHJlY2VpdmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKIAogICAgIFByb3Bl
cnR5U2xvdCBzbG90KHJlY2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0YXJn
ZXQuZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQuZ2V0KGNhbGxGcmFtZSwgcHJvcGVydHlO
YW1lLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1yZWZsZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcgotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zKSk7CiAKLSAgICBhdXRvIGtleSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlL
ZXkoZXhlYyk7CisgICAgYXV0byBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVy
dHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGFzT2Jq
ZWN0KHRhcmdldCksIGtleSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxs
RnJhbWUsIGFzT2JqZWN0KHRhcmdldCksIGtleSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRwcm90b3R5cGVvZgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90
eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
IlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFu
IG9iamVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
UmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0Il9zKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodGFyZ2V0KS0+Z2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpKSk7CiB9CiAK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuaXNleHRlbnNp
YmxlCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2li
bGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0
T2JqZWN0SXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKIAotICAgIGJvb2wg
aXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4ZWMpOworICAg
IGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5
cwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RP
d25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93
blByb3BlcnR5S2V5cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVu
dCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZyYW1lLCBqc0Nhc3Q8SlNPYmplY3QqPih0
YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2ZW50ZXh0ZW5zaW9ucwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVu
c2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
IlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJl
IGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOworICAgIGJvb2wg
cmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVj
dCwgY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXQK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qu
c2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiUmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJf
cykpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCi0g
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4
ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1By
b3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0OwotICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNCkKLSAgICAgICAgcmVjZWl2ZXIgPSBleGVjLT5h
cmd1bWVudCgzKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gNCkKKyAg
ICAgICAgcmVjZWl2ZXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpOwogCiAgICAgLy8gRG8gbm90
IHJhaXNlIGFueSByZWFkb25seSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gc3RyaWN0IG1vZGUuCiAg
ICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHJlY2VpdmVyLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBzbG90KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1
dCh0YXJnZXRPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDIpLCBzbG90KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5zZXRwcm90b3R5cGVvZgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Quc2V0UHJv
dG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwot
ICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5z
ZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9z
KSk7CisgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYg
KCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Quc2V0UHJv
dG90eXBlT2YgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0
IG9yIG51bGwiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0
aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfcykpOwogCiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKICAgICBib29sIHNob3Vs
ZFRocm93SWZDYW50U2V0ID0gZmFsc2U7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmpl
Y3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsK
KyAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBjYWxs
RnJhbWUsIHByb3RvLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZGlkU2V0UHJvdG90eXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZTNiYzg5M2ZiM2My
Y2EwZmQwOTkwZWZlMjAxMmQ1MjAzODIyOTljOS4uODNkYzE1NzMxYTk0NTFiYzM2YWI3MTZjYWNi
YjJiMzkxMmRlMTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjb25zdCBDbGFzc0luZm8g
UmVnRXhwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaQogKi8KIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmVnRXhwQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3Ry
dWN0b3IpCkBAIC0xMDAsNTAgKzEwMCw0MyBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlLAogdGVt
cGxhdGU8aW50IE4+CiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcihFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5n
bG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+
cmVnRXhwR2xvYmFsRGF0YSgpLmdldEJhY2tyZWYoZXhlYywgZ2xvYmFsT2JqZWN0LCBOKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuaW5wdXQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3Iq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
bXVsdGlsaW5lKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0
TWF0Y2goRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGV4ZWMsIGdsb2JhbE9iamVj
dCwgMCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
LT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVj
dC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldExhc3RQYXJlbihleGVjLCBnbG9iYWxPYmplY3QpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+
Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9i
YWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVn
RXhwR2xvYmFsRGF0YSgpLmdldExlZnRDb250ZXh0KGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xv
YmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxP
YmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhw
R2xvYmFsRGF0YSgpLmdldFJpZ2h0Q29udGV4dChleGVjLCBnbG9iYWxPYmplY3QpKTsKIH0KIApA
QCAtMTU1LDcgKzE0OCw3IEBAIGJvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlCiAgICAgICAgIGF1dG8q
IHN0cmluZyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9TdHJpbmcoZXhlYyk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBnbG9iYWxPYmplY3QtPnJlZ0V4
cEdsb2JhbERhdGEoKS5zZXRJbnB1dChleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZyk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3MCw3ICsxNjMsNyBAQCBib29sIHNldFJlZ0V4
cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbgogICAgICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1
ZSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuc2V0TXVsdGlsaW5lKG11
bHRpbGluZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI3NywyNCArMjcwLDIz
IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCByZWdFeHBDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIHBhdHRlcm5Bcmcs
IGZsYWdzQXJnKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjUmVn
RXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZXNTcGVjUmVnRXhwQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNWYWx1ZSBwYXR0ZXJuQXJnID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBmbGFnc0FyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwQ3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCwganNVbmRlZmluZWQoKSwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsKKyAgICBKU1ZhbHVlIHBh
dHRlcm5BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZmxhZ3NBcmcg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVn
RXhwQ3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgpLCBwYXR0ZXJu
QXJnLCBmbGFnc0FyZykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdFJlZ0V4cChleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIGV4ZWMtPmpzQ2FsbGVlKCks
IGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIGFyZ3MsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQo
KSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmVnRXhw
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChleGVjLCBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0o
KSksIGFyZ3MsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1l
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgKaW5kZXggMmViMmM2OTM0ODU4YzE2ZmZmMjIzOTUyYzU4ZjcyOTdmNTI3
ZTY1Ni4uOTc2ZTdiNmFmODNjMTUzMGM1MjAzNDI3YTgzOWQ1M2UwYWNkMWM3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCkBAIC03
NSw2ICs3NSw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1JlZ0V4cChWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gb2JqZWN0LT5pbmhlcml0czxSZWdF
eHBPYmplY3Q+KHZtKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNS
ZWdFeHBDcmVhdGUoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVz
U3BlY1JlZ0V4cENyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCmluZGV4IDhkMGU1YTlmMGQ1NzA1OWEyZjRiZjE2NTMzN2ViYTBjZWIzZjEx
YzkuLjRiOGFmMDViZTc0NTA2M2Y3MDM3ZDU3NDM4ZTdlZjM2NTJkNWFjYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtNDIs
MTcgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
ck11bHRpbGluZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVu
aWNvZGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0
cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvR2V0dGVySWdub3JlQ2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlclN0aWNreShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclNvdXJjZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJGbGFncyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKIApAQCAtODYsODMg
Kzg2LDgzIEBAIHZvaWQgUmVnRXhwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFz
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWND
YXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVn
ZXhwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7Cisg
ICAgSlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51
bGwoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIXN0cmluZyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+dGVzdChleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHN0cmluZykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+dGVzdChjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgc3RyaW5nKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChjYWxsRnJhbWUpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhc3RyaW5nKTsKICAgICBpZiAoIXN0
cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWdleHAtPmV4ZWMo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnZXhwLT5leGVjKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFJlZ0V4cE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPihleGVjLT50aGlzVmFsdWUo
KSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKKyAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UmVnRXhwT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHN0
cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIGlmICghdGhpc09iamVjdC0+cmVnRXhwKCktPmdsb2JhbCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmV4ZWMoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNP
YmplY3QtPm1hdGNoR2xvYmFsKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3Ry
aW5nKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+ZXhlYyhj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgc3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aGlzT2JqZWN0LT5tYXRjaEdsb2JhbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgc3Ry
aW5nKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5j
Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY0NvbXBpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
dGhpc1JlZ0V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzUmVnRXhwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwotICAgIEpTVmFsdWUgYXJn
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYXJnMSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgYXJnMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSBhcmcxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICAKICAgICBpZiAoYXV0byog
cmVnRXhwT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgYXJnMCkpIHsK
ICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25z
dHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc3VwcGx5IGZsYWdz
IHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiJfcyk7CiAgICAgICAg
IHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
U3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJn
MC50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5k
ZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgpID8gbWFrZU9wdGlvbmFsKE9w
dGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0
cmluZyhleGVjKSk7CisgICAgICAgIGF1dG8gZmxhZ3MgPSBhcmcxLmlzVW5kZWZpbmVkKCkgPyBt
YWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiB7IH0pIDogWWFycjo6cGFyc2VGbGFn
cyhhcmcxLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFmbGFncykKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3Mp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3Jl
YXRlU3ludGF4RXJyb3IoY2FsbEZyYW1lLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdF
eHAgY29uc3RydWN0b3IuIl9zKSk7CiAKICAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUo
dm0sIHBhdHRlcm4sIGZsYWdzLnZhbHVlKCkpOwogICAgIH0KIAogICAgIGlmICghcmVnRXhwLT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIHJlZ0V4
cC0+ZXJyb3JUb1Rocm93KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCByZWdFeHAtPmVycm9yVG9UaHJvdyhjYWxsRnJhbWUpKTsKIAogICAgIHRo
aXNSZWdFeHAtPnNldFJlZ0V4cCh2bSwgcmVnRXhwKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgdGhpc1JlZ0V4cC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOworICAgIHRoaXNSZWdFeHAtPnNl
dExhc3RJbmRleChjYWxsRnJhbWUsIDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c1JlZ0V4cCk7CiB9CiAKQEAgLTIwNywxNDEgKzIwNywxNDEgQEAgc3RhdGljIGlubGluZSBGbGFn
c1N0cmluZyBmbGFnc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiByZWdleHApCiAg
ICAgcmV0dXJuIHN0cmluZzsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0
KHRoaXNWYWx1ZSk7CiAKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywg
dGhpc09iamVjdCk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFt
ZSwgdGhpc09iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkg
fHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0
dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIEpTVmFsdWUgc291cmNlVmFs
dWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKKyAg
ICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwgdm0ucHJv
cGVydHlOYW1lcy0+c291cmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgc291cmNlID0gc291cmNlVmFsdWUudG9XVEZTdHJp
bmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvV1RGU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBKU1ZhbHVlIGZsYWdzVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+ZmxhZ3MpOworICAgIEpTVmFsdWUgZmxhZ3NWYWx1ZSA9IHRoaXNPYmpl
Y3QtPmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgZmxhZ3Mg
PSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmbGFncyA9IGZsYWdz
VmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgJy8nLCBzb3VyY2Us
ICcvJywgZmxhZ3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICcvJywgc291cmNlLCAnLycs
IGZsYWdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2Jh
bCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAg
fQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAo
KS0+Z2xvYmFsKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2Fz
ZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhw
LnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0Il9zKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZWdleHAtPnJlZ0V4cCgpLT5pZ25vcmVDYXNlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGls
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFy
ZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBl
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdF
eHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJEb3RB
bGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlckRvdEFsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
cmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmRvdEFsbCBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogICAg
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCkt
PmRvdEFsbCgpKSk7CiB9CiAgICAgCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNW
YWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
LnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4
cC0+cmVnRXhwKCktPnN0aWNreSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNv
ZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4
cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCJfcyk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPnVuaWNvZGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBS
ZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2Jq
ZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYW4gb2JqZWN0Il9zKTsKIAotICAgIGF1dG8gZmxhZ3MgPSBmbGFnc1N0cmluZyhleGVjLCBh
c09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmcoY2FsbEZy
YW1lLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJp
bmcodm0sIGZsYWdzLmRhdGEoKSkpOwpAQCAtNDU0LDM3ICs0NTQsMzYgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHIKICAgICByZXR1cm4ganNTdHJpbmcodm0sIHJlc3VsdC50b1N0cmluZygpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJj
ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvR2V0dGVyU291cmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4
cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVn
RXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCAiKD86KSJfcykpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9ubHkg
YmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2Ug
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0K
IAogICAgIFN0cmluZyBwYXR0ZXJuID0gcmVnZXhwLT5yZWdFeHAoKS0+cGF0dGVybigpOwogICAg
IGlmIChwYXR0ZXJuLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
Z0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoZXhlYywgcGF0dGVybiwgcGF0dGVybi5jaGFy
YWN0ZXJzOCgpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGV4ZWMsIHBhdHRlcm4sIHBhdHRlcm4u
Y2hhcmFjdGVyczE2KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGNhbGxGcmFtZSwgcGF0
dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJzOCgpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGNhbGxG
cmFtZSwgcGF0dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJzMTYoKSwgcGF0dGVybi5sZW5ndGgoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJj
aEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNTZWFyY2hGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBSZWdFeHAq
IHJlZ0V4cCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPih0aGlzVmFsdWUpLT5yZWdFeHAoKTsKIAot
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKTsKLSAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgSlNTdHJp
bmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoY2Fs
bEZyYW1lKTsKKyAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
cGVyZm9ybU1hdGNoKHZtLCBnbG9iYWxPYmplY3QsIHJlZ0V4cCwgc3RyaW5nLCBzLCAwKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkgOiBqc051
bWJlcigtMSkpOwpAQCAtNTc4LDE5ICs1NzcsMTkgQEAgdm9pZCBnZW5lcmljU3BsaXQoCiB9CiAK
IC8vIEVTIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQp
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
RnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMg
dmFsdWUuCiAgICAgLy8gMi4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMg
bm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIFJlZ0V4cCogcmVnZXhwID0ganNDYXN0PFJlZ0V4cE9i
amVjdCo+KHRoaXNWYWx1ZSktPnJlZ0V4cCgpOwogCiAgICAgLy8gMy4gW2hhbmRsZWQgYnkgSlMg
YnVpbHRpbl0gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcpLgotICAgIEpTU3RyaW5nKiBpbnB1
dFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIFN0cmluZyBp
bnB1dCA9IGlucHV0U3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBKU1N0cmluZyogaW5wdXRTdHJp
bmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CisgICAgU3Ry
aW5nIGlucHV0ID0gaW5wdXRTdHJpbmctPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5p
c051bGwoKSk7CiAKQEAgLTYwNCwxMyArNjAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8v
IDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KICAgICAvLyAxMi4gTGV0IGxlbmd0aEEgYmUg
MC4KLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwor
ICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCAwKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1
bnNpZ25lZCByZXN1bHRMZW5ndGggPSAwOwogCiAgICAgLy8gMTMuIElmIGxpbWl0IGlzIHVuZGVm
aW5lZCwgbGV0IGxpbSBiZSAyXjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWludDMyKGxpbWl0
KS4KLSAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICB1bnNp
Z25lZCBsaW1pdCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGlt
aXRWYWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOworICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVm
aW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAv
LyAxNC4gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgpAQCAtNjMwLDcg
KzYyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3Bs
aXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgLy8gYy4gUGVyZm9ybSAhIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCAiMCIsIFMpLgogICAgICAgICAvLyBkLiBSZXR1cm4gQS4KICAgICAgICAg
aWYgKCFyZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgMCkpIHsKLSAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwgaW5wdXRTdHJpbmcpOworICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIDAsIGlucHV0U3RyaW5nKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTY1Miw3ICs2NTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTcGxpdDsKICAg
ICAgICAgfSwKICAgICAgICAgWyZdIChib29sIGlzRGVmaW5lZCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCkgLT4gU3BsaXRDb250cm9sIHsKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vic3RyaW5n
T2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0
TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJp
bmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBBYm9ydFNwbGl0KTsKICAgICAgICAgICAgIGlmIChyZXN1bHRM
ZW5ndGggPj0gbGltaXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFib3J0U3BsaXQ7CkBAIC02
NjYsNyArNjY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyAyMC4gTGV0IFQgYmUgYSBT
dHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhl
IGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2
ZSkuCiAgICAgICAgIC8vIDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9T
dHJpbmcobGVuZ3RoQSksIFQpLgogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZ09mUmVz
b2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRpb24pKTsK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCwg
anNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgcG9zaXRpb24sIGlucHV0U2l6
ZSAtIHBvc2l0aW9uKSk7CiAgICAgICAgIAogICAgICAgICAvLyAyMi4gUmV0dXJuIEEuCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTY5MSw3ICs2OTAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5ndGggKyBk
cnlSdW5Db3VudCA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpIHsKLSAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
ICAgICB9CiAgICAgCkBAIC03MDUsNyArNzA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgcmV0dXJuIENvbnRpbnVlU3BsaXQ7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoYm9vbCBp
c0RlZmluZWQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIC0+IFNwbGl0Q29udHJv
bCB7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0
aCsrLCBpc0RlZmluZWQgPyBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBz
dGFydCwgbGVuZ3RoKSA6IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChjYWxsRnJhbWUsIHJlc3VsdExlbmd0aCsrLCBpc0RlZmluZWQgPyBqc1N1YnN0
cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBzdGFydCwgbGVuZ3RoKSA6IGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgQWJvcnRTcGxp
dCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID49IGxpbWl0KQogICAgICAgICAgICAg
ICAgIHJldHVybiBBYm9ydFNwbGl0OwpAQCAtNzE5LDcgKzcxOCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAvLyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmlu
ZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZl
KSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2ZSkuCiAgICAgLy8gMjEuIFBlcmZvcm0gISBDcmVhdGVE
YXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1
YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRTaXplIC0g
cG9zaXRpb24pKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0
TGVuZ3RoLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwg
aW5wdXRTaXplIC0gcG9zaXRpb24pKTsKICAgICAvLyAyMi4gUmV0dXJuIEEuCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAppbmRleCA1YjY1OTg2NmMwMGU4OWE4ZjE3YTAxNWNi
YzUxNDVjMjU5OWNhZjBkLi40NjBlMmE0NWFkZDcxMzkyNDg5ZjAxZDJiZDA3ZTJmOGVkMTZjNTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
aApAQCAtNTEsOSArNTEsOSBAQCBjbGFzcyBSZWdFeHBQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
RnVuY01hdGNoRmFzdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwMmJlZDllNWE1N2UxOGZiZTgyYmU1ZDc4NWY5
M2FkNGY0MDI4MDkuLmIwZGIxNTZmNDg4ZDY0MmU2ZmU3MGQ4YTU4MjNhNzExYTFkYWU5OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTQ3LDc0ICs0Nyw3MyBAQCB2b2lkIFNldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNldFByb3RvdHlwZSogc2V0UHJvdG90eXBlLCBHZXR0ZXJTZQogICAgIHB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFNldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBTZXRDb25zdHJ1Y3Rvcjo6U2V0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFNldCwgY29uc3RydWN0U2V0
KQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxT
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihleGVjLCBzY29wZSwgIlNldCIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIlNldCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmpl
Y3QtPnNldFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGl0
ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1Nl
dDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0OjpjcmVhdGUoY2FsbEZyYW1lLCB2
bSwgc2V0U3RydWN0dXJlKSkpOwogCiAgICAgaWYgKGF1dG8qIGl0ZXJhYmxlU2V0ID0ganNEeW5h
bWljQ2FzdDxKU1NldCo+KHZtLCBpdGVyYWJsZSkpIHsKICAgICAgICAgaWYgKGl0ZXJhYmxlU2V0
LT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVyZSkpIAotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVTZXQt
PmNsb25lKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUoY2FsbEZy
YW1lLCB2bSwgc2V0U3RydWN0dXJlKSkpOwogICAgIH0KIAotICAgIEpTU2V0KiBzZXQgPSBKU1Nl
dDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpOworICAgIEpTU2V0KiBzZXQgPSBKU1Nl
dDo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVu
Y3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsK
KyAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoY2FsbEZyYW1l
LCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
OwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBh
ZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChVTkxJS0VMWShh
ZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJh
YmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAg
Zm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRl
KiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChuZXh0VmFsdWUpOwog
ICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBjYWxs
KGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlv
bkNhbGxEYXRhLCBzZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoY2FsbEZyYW1lLCBhZGRl
ckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwg
c2V0LCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
ZXQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0
QnVja2V0SGVhZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1Nl
dCo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgSlNTZXQqIHNldCA9IGpz
Q2FzdDxKU1NldCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU1NldCo+KGdsb2JhbE9iamVjdC0+dm0o
KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIEpTU2V0KiBzZXQgPSBqc0Nhc3Q8SlNT
ZXQqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBhdXRvKiBoZWFkID0g
c2V0LT5oZWFkKCk7CiAgICAgQVNTRVJUKGhlYWQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoaGVhZCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1
bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0
PEpTU2V0OjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAg
ICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5
cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBh
dXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICBidWNrZXQgPSBidWNr
ZXQtPm5leHQoKTsKICAgICB3aGlsZSAoYnVja2V0KSB7CkBAIC0xMjIsMTMgKzEyMSwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJ1Y2tl
dCk7CiAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgIH0KLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc2VudGluZWxTZXRCdWNrZXQoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnZtKCkuc2VudGluZWxTZXRCdWNrZXQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRC
dWNrZXRLZXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldDo6
QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0byog
YnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWNDYXN0PEpT
U2V0OjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQtPmtleSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCmluZGV4IDNmNmU4YjkyN2JjOTI1
N2Q1NGZiYWQxZDEyYzEzYjc1NmU5Y2MzN2MuLjcxYWI2OTUwZmY1Nzk0N2ZlOTZjMTMyOWExNWFi
MTg2YTVlNTBiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBjbGFzcyBTZXRDb25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
U2V0UHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsKIH07CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1
Y2tldE5leHQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0S2V5KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRC
dWNrZXROZXh0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggNDZmNGJjZDMzOWMxZDc2ZDcxNGY3
ODgyZGQ0NDU0OTY4NTAyMTRmMS4uYzY2ZDk1ZjY1OTExZDFjODI2MDc0MzU1ZWYxYjg5ODNhZjc5
YTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFNldFByb3RvdHlwZTo6c19p
bmZvID0geyAiU2V0IiwgJkJhc2U6OnNfaW5mbywgJnNldFByb3RvdHlwZVRhYmwKIEBlbmQKICov
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3Rv
RnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNzYsOSArNzYs
OSBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTU2V0KiBnZXRTZXQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNDZWxsKCkpKSB7CkBAIC05
Miw0NCArOTIsNDQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNB
ZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIEpT
U2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCB0aGlzVmFsdWUpOworICAgIEpTU2V0KiBzZXQg
PSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFz
ZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
c2V0LT5hZGQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRT
ZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0g
Z2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBzZXQtPmNsZWFyKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNTZXQqIHNldCA9IGdldFNl
dChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc2V0LT5yZW1vdmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRT
ZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0g
Z2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzZXQtPmhhcyhjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1NldCogc2V0ID0g
Z2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNTZXQqIHNl
dCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzZXQtPnNpemUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDYyYzQyMmMxNGM2MTJjNmQzYjA3NDI3NTI5ZGE0MDBlOTM0YjM2NjIu
LjMzMWQ0YjAwNzIzNDVhNDg2YTlhZDk0YzcxNDk0YmZkZWE5NTFlMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTMx
LDggKzMxLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogfQogCkBAIC01Myw4ICs1Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU3RyaW5nQ29uc3RydWN0b3IpOwog
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxs
U3RyaW5nQ29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcikKQEAgLTcw
LDE1ICs3MCwxNSBAQCB2b2lkIFN0cmluZ0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFy
Q29kZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdGcm9tQ2hhckNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChMSUtFTFkobGVuZ3RoID09IDEpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgdW5zaWduZWQgY29kZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4
ZWMpOworICAgICAgICB1bnNpZ25lZCBjb2RlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1VJbnQzMihjYWxsRnJhbWUpOwogICAgICAgICAvLyBOb3QgY2hlY2tpbmcgZm9yIGFu
IGV4Y2VwdGlvbiBoZXJlIGlzIG9rIGJlY2F1c2UganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgd2ls
bCBqdXN0IGZldGNoIGFuIHVudXNlZCBzdHJpbmcgaWYgdGhlcmUncyBhbiBleGNlcHRpb24uCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0s
IGNvZGUpKTsKICAgICB9CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgTENo
YXIqIGJ1ZjhCaXQ7CiAgICAgYXV0byBpbXBsOEJpdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBidWY4Qml0KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8VUNo
YXI+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMyKGV4ZWMpKTsKKyAgICAgICAg
VUNoYXIgY2hhcmFjdGVyID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoaSkudG9VSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWlz
TGF0aW4xKGNoYXJhY3RlcikpKSB7CiAgICAgICAgICAgICBVQ2hhciogYnVmMTZCaXQ7CkBAIC05
NSw3ICs5NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBidWYxNkJpdFtpXSA9IGNo
YXJhY3RlcjsKICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBidWYxNkJpdFtpXSA9IHN0YXRpY19jYXN0PFVDaGFy
PihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1VJbnQzMihleGVjKSk7CisgICAgICAgICAg
ICAgICAgYnVmMTZCaXRbaV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4oY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b1VJbnQzMihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCBXVEZNb3ZlKGltcGwxNkJpdCkpKSk7CkBAIC0xMTAsMjMgKzExMCwyMyBAQCBK
U1N0cmluZyogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVj
LCBpbnQzMl90IGFyZykKICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXhlYy0+
dm0oKSwgYXJnKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5yZXNlcnZlQ2Fw
YWNpdHkobGVuZ3RoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBkb3VibGUgY29kZVBvaW50QXNEb3VibGUgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudChpKS50b051bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIGNvZGVQb2ludEFzRG91
YmxlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgICAgICB1aW50MzJfdCBjb2RlUG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29k
ZVBvaW50QXNEb3VibGUpOwogCiAgICAgICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBvaW50QXNE
b3VibGUgfHwgY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJndW1l
bnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyJf
cykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhh
dCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiX3MpKTsKIAogICAgICAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0
PFVDaGFyPihjb2RlUG9pbnQpKTsKQEAgLTEzOSwxOCArMTM5LDE3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVj
KQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBidWlsZGVyLnRvU3RyaW5nKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3Ry
aW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCks
IGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1
bWVudENvdW50KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKSk7Ci0gICAgSlNTdHJpbmcqIHN0ciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdHJp
bmdPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBzdHIpKTsKIH0KQEAgLTE2MywxMiArMTYy
LDEyIEBAIEpTU3RyaW5nKiBzdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYXJndW1lbnQpCiAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKGV4ZWMpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0NvbnN0cnVjdG9yKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CmluZGV4IDVmYTk1MWEwYzFmM2MxNjUwZDI0Y2FhYTE2MDA0NjVhNWZjYThjMWMuLmM3NWRmYzBi
ODBmYWE1MTcwMjc1ZDUzZjUxNTYyNjFkMWRkOWJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNjEsMzAgKzYxLDMwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoU3RyaW5nUHJvdG90eXBlKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nU3RyaW5n
U2VhcmNoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2Fz
ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
cmltKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUcmltU3RhcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Tm9ybWFsaXplKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVVzaW5nU3RyaW5nU2VhcmNoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVG9Mb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jTG9jYWxlQ29tcGFyZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmlt
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0K
IApAQCAtODQ2LDM4ICs4NDYsMzggQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2JqZWN0Q29l
cmNpYmxlKEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1JlcGVhdENoYXJhY3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyBGb3IgYSBzdHJpbmcgd2hpY2ggbGVuZ3RoIGlzIHNpbmdsZSwgaW5zdGVh
ZCBvZiBjcmVhdGluZyByb3BlcywKICAgICAvLyBhbGxvY2F0aW5nIGEgc2VxdWVudGlhbCBidWZm
ZXIgYW5kIGZpbGwgd2l0aCB0aGUgcmVwZWF0ZWQgc3RyaW5nIGZvciBlZmZpY2llbmN5LgotICAg
IEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CisgICAgQVNTRVJUKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID09IDIpOwogCi0gICAgQVNTRVJUKGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLmlzU3RyaW5nKCkpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkuaXNTdHJpbmcoKSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3Ry
aW5nKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChzdHJpbmct
Pmxlbmd0aCgpID09IDEpOwogCi0gICAgSlNWYWx1ZSByZXBlYXRDb3VudFZhbHVlID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSByZXBlYXRDb3VudFZhbHVlID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXBlYXRD
b3VudFZhbHVlLmlzTnVtYmVyKCkpOwogICAgIGludDMyX3QgcmVwZWF0Q291bnQ7CiAgICAgZG91
YmxlIHZhbHVlID0gcmVwZWF0Q291bnRWYWx1ZS5hc051bWJlcigpOwogICAgIGlmICh2YWx1ZSA+
IEpTU3RyaW5nOjpNYXhMZW5ndGgpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKICAgICBy
ZXBlYXRDb3VudCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICBBU1NFUlQocmVw
ZWF0Q291bnQgPj0gMCk7CiAgICAgQVNTRVJUKCFyZXBlYXRDb3VudFZhbHVlLmlzRG91YmxlKCkg
fHwgcmVwZWF0Q291bnRWYWx1ZS5hc0RvdWJsZSgpID09IHJlcGVhdENvdW50KTsKIAotICAgIGF1
dG8gdmlld1dpdGhTdHJpbmcgPSBzdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVj
KTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdT
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52
aWV3OwogICAgIEFTU0VSVCh2aWV3Lmxlbmd0aCgpID09IDEpOwogICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CiAgICAgVUNoYXIgY2hhcmFjdGVyID0gdmlld1swXTsKICAgICBzY29wZS5y
ZWxlYXNlKCk7CiAgICAgaWYgKGlzTGF0aW4xKGNoYXJhY3RlcikpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVjLCBzdGF0aWNfY2FzdDxMQ2hhcj4o
Y2hhcmFjdGVyKSwgcmVwZWF0Q291bnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
cGVhdENoYXJhY3RlcigqZXhlYywgY2hhcmFjdGVyLCByZXBlYXRDb3VudCkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqY2FsbEZyYW1lLCBzdGF0aWNf
Y2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291bnQpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqY2FsbEZyYW1lLCBjaGFyYWN0ZXIsIHJlcGVhdENv
dW50KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2UoCkBAIC05MDIsMzAg
KzkwMiwzMCBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlKAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZSh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwg
cmVwbGFjZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhwKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBleGVjLT50aGlzVmFsdWUoKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyog
c3RyaW5nID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNW
YWx1ZSBzZWFyY2hWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgc2VhcmNo
VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghc2VhcmNoVmFsdWUuaW5o
ZXJpdHM8UmVnRXhwT2JqZWN0Pih2bSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgc2VhcmNo
VmFsdWUsIGV4ZWMtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgY2FsbEZyYW1l
LCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0
cmluZ1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCh2bSwg
ZXhlYywgc3RyaW5nLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVwbGFjZVVzaW5n
U3RyaW5nU2VhcmNoKHZtLCBjYWxsRnJhbWUsIHN0cmluZywgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKApAQCAtOTQwLDEyICs5NDAs
MTIgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VHZW5lcmljKAogICAgICAgICBKU1ZhbHVlOjpkZWNvZGUocmVwbGFjZVZhbHVlKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICAvLyBBbHNvIHVzZWQgZm9y
IHZhbHVlT2YuCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzU3RyaW5nKCkpCkBAIC05NTUsNTQgKzk1
NSw1NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc3RyaW5nT2JqZWN0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsKIAotICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgYXV0byB2aWV3
V2l0aFN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNh
bGxGcmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZ1ZpZXcg
dmlldyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5p
c1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBhMC5hc1VJbnQzMigpOwogICAgICAg
ICBpZiAoaSA8IHZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHZtLCB2aWV3W2ldKSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwogICAgIH0KLSAgICBkb3VibGUg
ZHBvcyA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGEwLnRvSW50ZWdl
cihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IHZpZXcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIHZp
ZXdbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRwb3MpXSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIGF1dG8g
dmlld1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBTdHJpbmdW
aWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoYTAuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gYTAuYXNVSW50MzIo
KTsKICAgICAgICAgaWYgKGkgPCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3W2ldKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOYU4oKSk7CiAgICAgfQotICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2Vy
KGV4ZWMpOworICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGRw
b3MgPj0gMCAmJiBkcG9zIDwgdmlldy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3W3N0YXRpY19jYXN0PGludD4oZHBvcyldKSk7CkBAIC0xMDE5
LDIwICsxMDE5LDIwIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2RlUG9pbnRBdChjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnCiAgICAgcmV0dXJuIGNoYXJh
Y3RlcjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmND
b2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0
cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKIAotICAg
IEpTVmFsdWUgYXJndW1lbnQwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChhcmd1bWVudDAuaXNVSW50
MzIoKSkgewogICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGFyZ3VtZW50MC5hc1VJbnQzMigp
OwogICAgICAgICBpZiAocG9zaXRpb24gPCBsZW5ndGgpCkBAIC0xMDQyLDI4ICsxMDQyLDI4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKLSAgICBkb3VibGUgZG91YmxlUG9zaXRpb24gPSBhcmd1bWVudDAudG9J
bnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBkb3VibGVQb3NpdGlvbiA9IGFyZ3VtZW50MC50b0lu
dGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBpZiAoZG91YmxlUG9zaXRpb24gPj0gMCAmJiBkb3VibGVQb3NpdGlv
biA8IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihjb2Rl
UG9pbnRBdChzdHJpbmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVQb3NpdGlvbiksIGxl
bmd0aCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVl
IGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAg
ICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAg
IEpTU3RyaW5nKiB0aGlzSlNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBK
U1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5n
KiBvdGhlckpTU3RyaW5nID0gYTAudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIHBvcyA9
IDA7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoYTEuaXNV
SW50MzIoKSkKICAgICAgICAgICAgIHBvcyA9IHN0ZDo6bWluPHVpbnQzMl90PihhMS5hc1VJbnQz
MigpLCBsZW4pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRvdWJsZSBkcG9zID0gYTEu
dG9JbnRlZ2VyKGV4ZWMpOworICAgICAgICAgICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXIo
Y2FsbEZyYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGRwb3MgPCAwKQogICAgICAgICAgICAgICAg
IGRwb3MgPSAwOwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodGhp
c0pTU3RyaW5nLT5sZW5ndGgoKSA8IG90aGVySlNTdHJpbmctPmxlbmd0aCgpICsgcG9zKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKLSAgICBhdXRvIHRo
aXNWaWV3V2l0aFN0cmluZyA9IHRoaXNKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5n
KGV4ZWMpOworICAgIGF1dG8gdGhpc1ZpZXdXaXRoU3RyaW5nID0gdGhpc0pTU3RyaW5nLT52aWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIG90aGVyVmlld1dpdGhTdHJpbmcg
PSBvdGhlckpTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0
byBvdGhlclZpZXdXaXRoU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgc2l6ZV90IHJlc3VsdCA9IHRoaXNWaWV3V2l0aFN0cmluZy52aWV3
LmZpbmQob3RoZXJWaWV3V2l0aFN0cmluZy52aWV3LCBwb3MpOwogICAgIGlmIChyZXN1bHQgPT0g
bm90Rm91bmQpCkBAIC0xMDk2LDI1ICsxMDk2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIGExID0gZXhl
Yy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAgICBKU1N0cmlu
ZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5n
KiB0aGlzSlNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBs
ZW4gPSB0aGlzSlNTdHJpbmctPmxlbmd0aCgpOwotICAgIEpTU3RyaW5nKiBvdGhlckpTU3RyaW5n
ID0gYTAudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50
b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXJQcmVzZXJ2ZU5h
TihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFOKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbjsKICAgICBpZiAoZHBvcyA8IDApCkBAIC0xMTI3
LDkgKzExMjcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobGVuIDwgb3RoZXJKU1N0cmlu
Zy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEp
KTsKIAotICAgIFN0cmluZyB0aGlzU3RyaW5nID0gdGhpc0pTU3RyaW5nLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgdGhpc1N0cmluZyA9IHRoaXNKU1N0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBT
dHJpbmcgb3RoZXJTdHJpbmcgPSBvdGhlckpTU3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgb3RoZXJTdHJpbmcgPSBvdGhlckpTU3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNpemVfdCBy
ZXN1bHQ7CiAgICAgaWYgKCFzdGFydFBvc2l0aW9uKQpAQCAtMTE0MSwyOSArMTE0MSwyOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3Vs
dCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Ns
aWNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIGludCBsZW5n
dGggPSBzdHJpbmctPmxlbmd0aCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA+PSAwKTsK
IAogICAgIC8vIFRoZSBhcmcgcHJvY2Vzc2luZyBpcyB2ZXJ5IG11Y2ggbGlrZSBBcnJheVByb3Rv
RnVuYzo6U2xpY2UKLSAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAg
ZG91YmxlIHN0YXJ0ID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIGVuZCA9IGExLmlz
VW5kZWZpbmVkKCkgPyBsZW5ndGggOiBhMS50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIGVu
ZCA9IGExLmlzVW5kZWZpbmVkKCkgPyBsZW5ndGggOiBhMS50b0ludGVnZXIoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdHJpbmdTbGljZShleGVj
LCB2bSwgc3RyaW5nLCBsZW5ndGgsIHN0YXJ0LCBlbmQpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nU2xpY2UoY2FsbEZyYW1lLCB2bSwgc3Ry
aW5nLCBsZW5ndGgsIHN0YXJ0LCBlbmQpKSk7CiB9CiAKIC8vIFJldHVybiB0cnVlIGluIGNhc2Ug
b2YgZWFybHkgcmV0dXJuIChyZXN1bHRMZW5ndGggZ290IHRvIGxpbWl0TGVuZ3RoKS4KQEAgLTEy
MDIsMzAgKzEyMDIsMzAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxpdFN0cmluZ0J5
T25lQ2hhcmFjdGVySW1wbChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkKIH0KIAogLy8gRVMgMjEu
MS4zLjE3IFN0cmluZy5wcm90b3R5cGUuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRG
YXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBBU1NFUlQoY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSk7CiAKICAgICAvLyAzLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCiAg
ICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCi0gICAgU3Ry
aW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBpbnB1
dCA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEFTU0VSVCghaW5wdXQuaXNOdWxs
KCkpOwogCiAgICAgLy8gNC4gTGV0IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0
aGUgZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQogICAgIC8vICAgIHdoZXJlIEFycmF5IGlzIHRoZSBz
dGFuZGFyZCBidWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRoIHRoYXQgbmFtZS4KLSAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIEpTQXJyYXkqIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDUuIExldCBsZW5n
dGhBIGJlIDAuCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAogICAgIC8vIDYuIElm
IGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGltID0gVG9V
aW50MzIobGltaXQpLgotICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwotICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgp
ID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4ZWMpOworICAgIEpTVmFsdWUg
bGltaXRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgdW5zaWdu
ZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6IGxpbWl0
VmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDguIExldCBwID0gMC4KQEAgLTEyMzMsOCAr
MTIzMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Bs
aXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDkuIElmIHNlcGFyYXRvciBpcyBhIFJl
Z0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIpLCBsZXQgUiA9IHNlcGFyYXRv
cjsKICAgICAvLyAgICBvdGhlcndpc2UgbGV0IFIgPSBUb1N0cmluZyhzZXBhcmF0b3IpLgotICAg
IEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAg
ICBTdHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CisgICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvV1RGU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICAvLyAxMC4gSWYgbGltID09IDAsIHJldHVybiBBLgpAQCAtMTI0NSw3ICsxMjQ1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZh
c3QoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgIC8vIGEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5h
bCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCiAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhS
ZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
SW5kZXgoY2FsbEZyYW1lLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShjYWxsRnJhbWUsIHRoaXNWYWx1
ZSwgaW5wdXQpKTsKICAgICAgICAgLy8gYi4gUmV0dXJuIEEuCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIC8vIGQuIFJldHVybiBBLgogICAgICAgICBpZiAoIXNlcGFyYXRvci5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhp
c1ZhbHVlLCBpbnB1dCkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxs
RnJhbWUsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1dCkp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICB9CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIEFTU0VSVChs
aW1pdCk7CiAKICAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCBwb3NpdGlvbiwganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIGlucHV0W3Bvc2l0
aW9uXSkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIHBv
c2l0aW9uLCBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgaW5wdXRbcG9zaXRpb25dKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgfSB3aGlsZSAoKytwb3NpdGlvbiA8IGxpbWl0KTsKIApAQCAtMTI5MywxMCArMTI5
MywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0
RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBzZXBhcmF0b3JDaGFyYWN0ZXIgPSBz
ZXBhcmF0b3JJbXBsLT5jaGFyYWN0ZXJzMTYoKVswXTsKIAogICAgICAgICBpZiAoc3RyaW5nSW1w
bC0+aXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGlmIChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVy
SW1wbDxMQ2hhcj4oZXhlYywgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBz
ZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgsIGxpbWl0KSkgCisgICAg
ICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8TENoYXI+KGNhbGxGcmFt
ZSwgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgsIGxpbWl0KSkgCiAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8
VUNoYXI+KGV4ZWMsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJh
dG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIAorICAgICAgICAg
ICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPFVDaGFyPihjYWxsRnJhbWUsIHJl
c3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBw
b3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIAogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOwogICAgICAgICB9CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAt
MTMxMSw5ICsxMzExLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgLy8gMS4gTGV0IFQg
YmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcg
b2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKICAgICAgICAgICAg
IC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KICAgICAgICAgICAgIC8vIDIuIENhbGwgQ3Jl
YXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KLSAgICAgICAgICAgIGF1
dG8qIHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0
aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pOworICAgICAgICAgICAgYXV0byogc3Vic3Ry
aW5nID0ganNTdWJzdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwg
bWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMs
IHJlc3VsdExlbmd0aCwgc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgsIHN1YnN0cmluZyk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgLy8gMy4gSW5jcmVt
ZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCBy
ZXR1cm4gQS4KQEAgLTEzMjksMjMgKzEzMjksMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDE1
LiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29u
c2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAg
IC8vICAgICB0aHJvdWdoIHMgKGV4Y2x1c2l2ZSkuCiAgICAgLy8gMTYuIENhbGwgQ3JlYXRlRGF0
YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KLSAgICBhdXRvKiBzdWJzdHJpbmcg
PSBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXQubGVu
Z3RoKCkgLSBwb3NpdGlvbik7CisgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoY2Fs
bEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXQubGVuZ3RoKCkgLSBwb3Np
dGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgr
Kywgc3Vic3RyaW5nKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVz
dWx0TGVuZ3RoKyssIHN1YnN0cmluZyk7CiAKICAgICAvLyAxNy4gUmV0dXJuIEEuCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgdW5zaWduZWQgbGVuOwogICAg
IEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CiAgICAgU3RyaW5nIHVTdHJpbmc7CkBAIC0xMzUzLDE3
ICsxMzUzLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAganNTdHJpbmcgPSBhc1N0cmluZyh0aGlz
VmFsdWUpOwogICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAg
dVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgbGVuID0g
dVN0cmluZy5sZW5ndGgoKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUg
YTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwogCi0gICAgZG91YmxlIHN0YXJ0ID0gYTAudG9JbnRlZ2VyKGV4ZWMpOwor
ICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGRvdWJsZSBsZW5ndGgg
PSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuIDogYTEudG9JbnRlZ2VyKGV4ZWMpOworICAgIGRvdWJs
ZSBsZW5ndGggPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuIDogYTEudG9JbnRlZ2VyKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaWYgKHN0YXJ0ID49IGxlbiB8fCBsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKHZtKSk7CkBAIC0xMzc4LDExICsxMzc4LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0
ZSogZXhlYykKICAgICB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obGVuZ3RoKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKGpzU3RyaW5nKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIGpzU3RyaW5n
LCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdWJzdHJpbmcoY2FsbEZyYW1lLCBqc1N0cmluZywgc3Vic3RyaW5nU3Rh
cnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJz
dHJpbmcodm0sIHVTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJu
YWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTdWJzdHIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0ckltcGwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1
aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBAc3Vic3RySW50ZXJuYWwgc2hvdWxkIG5v
dCBoYXZlIGFueSBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0cyAoZS5nLiBpdCBzaG91bGQgbm90IGNh
bGwKICAgICAvLyBHZXRNZXRob2QoLi4uLCBAQHRvUHJpbWl0aXZlKSBvbiB0aGUgdGhpc1ZhbHVl
KS4KQEAgLTEzOTIsMjggKzEzOTcsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
dWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIGd1YXJh
bnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBhIHN0cmluZyB0aGlzVmFsdWUuIEFzIGEgcmVzdWx0
LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIKICAgICAvLyB3aWxsIG5vdCBuZWVkIHRvIGNhbGwgdG9T
dHJpbmcoKSBvbiB0aGUgdGhpc1ZhbHVlLCBhbmQgdGhlcmUgd2lsbCBiZSBubyBvYnNlcnZhYmxl
CiAgICAgLy8gc2lkZS1lZmZlY3RzLgotICAgIEFTU0VSVChleGVjLT50aGlzVmFsdWUoKS5pc1N0
cmluZygpKTsKLSAgICByZXR1cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RyKGV4ZWMpOworICAgIEFT
U0VSVChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmlzU3RyaW5nKCkpOworICAgIHJldHVybiBzdHJp
bmdQcm90b0Z1bmNTdWJzdHJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
dWJzdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
OworICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpbnQgbGVuID0g
anNTdHJpbmctPmxlbmd0aCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxlbiA+PSAwKTsKIAotICAg
IGRvdWJsZSBzdGFydCA9IGEwLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBzdGFydCA9IGEw
LnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgZG91YmxlIGVuZDsKICAgICBpZiAoIShzdGFydCA+PSAwKSkg
Ly8gY2hlY2sgZm9yIG5lZ2F0aXZlIHZhbHVlcyBvciBOYU4KQEAgLTE0MjMsNyArMTQyOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYTEuaXNVbmRlZmluZWQoKSkKICAgICAgICAgZW5kID0g
bGVuOwogICAgIGVsc2UgeyAKLSAgICAgICAgZW5kID0gYTEudG9OdW1iZXIoZXhlYyk7CisgICAg
ICAgIGVuZCA9IGExLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIShlbmQgPj0gMCkp
IC8vIGNoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb3IgTmFOCiAgICAgICAgICAgICBlbmQgPSAw
OwpAQCAtMTQzNywyMCArMTQ0MiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogICAgIHVuc2ln
bmVkIHN1YnN0cmluZ1N0YXJ0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKICAgICB1
bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSAtIHN1
YnN0cmluZ1N0YXJ0OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzU3Vic3RyaW5nKGV4ZWMsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5n
TGVuZ3RoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwganNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJp
bmdMZW5ndGgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc1ZhbCA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9T
dHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzID0gc1ZhbC0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMu
Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmIChsb3dlcmNhc2VkU3Ry
aW5nLmltcGwoKSA9PSBzLmltcGwoKSkKQEAgLTE0NTgsMTcgKzE0NjMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIGxvd2VyY2FzZWRTdHJpbmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAg
ICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHNW
YWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBTdHJpbmcgdXBw
ZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAg
IGlmICh1cHBlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBzLmltcGwoKSkKQEAgLTE0NzYsNDQgKzE0
ODEsNDMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1Vw
cGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHVwcGVyY2FzZWRTdHJpbmcpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTMuMS4xIFN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29t
cGFyZSAodGhhdCBbLCBsb2NhbGVzIFssIG9wdGlvbnMgXV0pIChFQ01BLTQwMiAyLjApCiAgICAg
Ly8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5kYXJkcy9F
Y21hLTQwMi5odG0KIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1
ZSkuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiU3RyaW5nLnByb3RvdHlwZS5sb2Nh
bGVDb21wYXJlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJf
cyk7CiAKICAgICAvLyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChTKS4KLSAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4
ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIC8vIDQuIExldCBUaGF0IGJlIFRvU3RyaW5nKHRoYXQpLgogICAgIC8vIDUuIFJldHVybklm
QWJydXB0KFRoYXQpLgotICAgIEpTVmFsdWUgdGhhdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgU3RyaW5nIHRoYXQgPSB0aGF0VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNW
YWx1ZSB0aGF0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cmluZyB0aGF0
ID0gdGhhdFZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICNpZiBFTkFCTEUoSU5UTCkKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwotICAgIEpTVmFsdWUgbG9jYWxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIEpTVmFsdWUg
b3B0aW9ucyA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIEpTVmFsdWUgbG9jYWxlcyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgyKTsKICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gbnVsbHB0cjsKICAgICBpZiAo
bG9jYWxlcy5pc1VuZGVmaW5lZCgpICYmIG9wdGlvbnMuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICBjb2xsYXRvciA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvbGxhdG9yKGV4ZWMpOworICAgICAg
ICBjb2xsYXRvciA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvbGxhdG9yKGNhbGxGcmFtZSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIGNvbGxhdG9yLT5pbml0
aWFsaXplQ29sbGF0b3IoKmV4ZWMsIGxvY2FsZXMsIG9wdGlvbnMpOworICAgICAgICBjb2xsYXRv
ci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGxvY2FsZXMsIG9wdGlvbnMpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3It
PmNvbXBhcmVTdHJpbmdzKCpleGVjLCBzdHJpbmcsIHRoYXQpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKCpj
YWxsRnJhbWUsIHN0cmluZywgdGhhdCkpKTsKICNlbHNlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihDb2xsYXRvcigpLmNvbGxhdGUoc3RyaW5nLCB0aGF0KSkpOwogI2VuZGlm
CkBAIC0xNTI1LDkgKzE1MjksOSBAQCBlbnVtIGNsYXNzIENhc2VDb252ZXJzaW9uTW9kZSB7CiAg
ICAgTG93ZXIsCiB9OwogdGVtcGxhdGU8Q2FzZUNvbnZlcnNpb25Nb2RlIG1vZGU+Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGF1dG8gY29udmVydENhc2UgPSBbJl0gKGF1dG8mJi4uLiBhcmdzKSB7
CkBAIC0xNjE1LDE5ICsxNjE5LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNh
c2UoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgbG93ZXIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2Nh
bGVMb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gMTMuMS4yIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVMb3dlckNh
c2UgKFtsb2NhbGVzXSkKICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9wdWJs
aWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0bQotICAgIHJldHVybiB0b0xvY2FsZUNhc2U8
Q2FzZUNvbnZlcnNpb25Nb2RlOjpMb3dlcj4oc3RhdGUpOworICAgIHJldHVybiB0b0xvY2FsZUNh
c2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpMb3dlcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxl
VXBwZXJDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMyBTdHJpbmcucHJv
dG90eXBlLnRvTG9jYWxlVXBwZXJDYXNlIChbbG9jYWxlc10pCiAgICAgLy8gaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5kYXJkcy9FY21hLTQwMi5odG0KICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGludGVycHJldHMgYSBzdHJpbmcgdmFsdWUgYXMgYSBzZXF1ZW5j
ZSBvZiBjb2RlIHBvaW50cywgYXMgZGVzY3JpYmVkIGluIEVTMjAxNSwgNi4xLjQuIFRoaXMgZnVu
Y3Rpb24gYmVoYXZlcyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBTdHJpbmcucHJvdG90eXBl
LnRvTG9jYWxlTG93ZXJDYXNlLCBleGNlcHQgdGhhdCBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdG8g
dGhlaXIgdXBwZXJjYXNlIGVxdWl2YWxlbnRzIGFzIHNwZWNpZmllZCBpbiB0aGUgVW5pY29kZSBj
aGFyYWN0ZXIgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29udmVyc2lv
bk1vZGU6OlVwcGVyPihzdGF0ZSk7CisgICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29udmVy
c2lvbk1vZGU6OlVwcGVyPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCiAKQEAgLTE2NjQsMjIgKzE2NjgsMjIgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRy
aW1LaW4KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKHZtLCBzdHIuc3Vi
c3RyaW5nU2hhcmluZ0ltcGwobGVmdCwgcmlnaHQgLSBsZWZ0KSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJp
bmcoZXhlYywgdGhpc1ZhbHVlLCBUcmltU3RhcnQgfCBUcmltRW5kKSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodHJpbVN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgVHJpbVN0YXJ0IHwgVHJpbUVu
ZCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Ry
aW1TdGFydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1RyaW1TdGFydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgVHJpbVN0
YXJ0KSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1
ZSwgVHJpbVN0YXJ0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVHJpbUVuZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhleGVjLCB0aGlzVmFsdWUs
IFRyaW1FbmQpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGNhbGxGcmFtZSwgdGhp
c1ZhbHVlLCBUcmltRW5kKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBBbmRU
cnVuY2F0ZVRvVW5zaWduZWQoZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIG1h
eCkKQEAgLTE2OTEsNzYgKzE2OTUsNzYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcEFu
ZFRydW5jYXRlVG9VbnNpZ25lZChkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbiwgdW4KICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRo
aXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsK
KyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGJvb2wgaXNSZWd1
bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CisgICAgSlNWYWx1ZSBhMCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0g
aXNSZWdFeHAodm0sIGNhbGxGcmFtZSwgYTApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0
cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0
cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0
cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc2Vh
cmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcG9zaXRpb25B
cmcgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IDA7CiAgICAgaWYgKHBvc2l0
aW9uQXJnLmlzSW50MzIoKSkKICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFy
Zy5hc0ludDMyKCkpOwogICAgIGVsc2UgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJp
bmdUb1NlYXJjaEluLmxlbmd0aCgpOwotICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVU
b1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsKKyAgICAg
ICAgc3RhcnQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVn
ZXIoY2FsbEZyYW1lKSwgMCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5oYXNJbmZpeFN0YXJ0aW5nQXQoc2VhcmNo
U3RyaW5nLCBzdGFydCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNFbmRzV2l0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJj
aEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1Nl
YXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGEwID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdF
eHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgY2FsbEZyYW1l
LCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgg
Y2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9X
VEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5n
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0aCgp
OwogCi0gICAgSlNWYWx1ZSBlbmRQb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAg
IEpTVmFsdWUgZW5kUG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIHVu
c2lnbmVkIGVuZCA9IGxlbmd0aDsKICAgICBpZiAoZW5kUG9zaXRpb25BcmcuaXNJbnQzMigpKQog
ICAgICAgICBlbmQgPSBzdGQ6Om1heCgwLCBlbmRQb3NpdGlvbkFyZy5hc0ludDMyKCkpOwogICAg
IGVsc2UgaWYgKCFlbmRQb3NpdGlvbkFyZy5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVuZCA9
IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGVuZFBvc2l0aW9uQXJnLnRvSW50ZWdlcihleGVj
KSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgZW5kID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQo
ZW5kUG9zaXRpb25BcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uaGFz
SW5maXhFbmRpbmdBdChzZWFyY2hTdHJpbmcsIHN0ZDo6bWluKGVuZCwgbGVuZ3RoKSkpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nSW5jbHVkZXNJbXBs
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiwgU3RyaW5n
IHNlYXJjaFN0cmluZywgSlNWYWx1ZSBwb3NpdGlvbkFyZykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0ZSogY2Fs
bEZyYW1lLCBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiwgU3RyaW5nIHNlYXJjaFN0cmluZywgSlNW
YWx1ZSBwb3NpdGlvbkFyZykKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpAQCAtMTc2OCw3MCArMTc3Miw3MCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHN0YXJ0ID0gc3RkOjptYXgoMCwgcG9zaXRp
b25BcmcuYXNJbnQzMigpKTsKICAgICBlbHNlIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
c3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKLSAgICAgICAgc3RhcnQgPSBjbGFtcEFuZFRydW5j
YXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoZXhlYyksIDAsIGxlbmd0aCk7Cisg
ICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25BcmcudG9J
bnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uZmluZChzZWFyY2hTdHJpbmcsIHN0
YXJ0KSAhPSBub3RGb3VuZCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2Vh
cmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1Rv
U2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAg
PSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1Jl
Z0V4cCh2bSwgZXhlYywgYTApOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOworICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBjYWxsRnJh
bWUsIGEwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmluY2x1
ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRl
cyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsK
KyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBz
dHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGNhbGxGcmFtZSwgc3Ry
aW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgQVNTRVJUKGNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2Vh
cmNoSW4gPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAu
dG9XVEZTdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgZXhlYywgc3RyaW5n
VG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBjYWxsRnJhbWUsIHN0cmluZ1Rv
U2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwot
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5qc0NhbGxlZSgpLT5n
bG9iYWxPYmplY3Qodm0pLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdC0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7CiB9
CiAKIGVudW0gY2xhc3MgTm9ybWFsaXphdGlvbkZvcm0geyBORkMsIE5GRCwgTkZLQywgTkZLRCB9
OwpAQCAtMTkxNSwyMSArMTkxOSwyMSBAQCBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBOb3JtYWxpemF0aW9uRm9ybSBmbwogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcodm0sIFdURk1vdmUocmVzdWx0KSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6
ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY05vcm1hbGl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGF1dG8gZm9y
bSA9IE5vcm1hbGl6YXRpb25Gb3JtOjpORkM7Ci0gICAgSlNWYWx1ZSBmb3JtVmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZvcm1WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKCFmb3JtVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBTdHJp
bmcgZm9ybVN0cmluZyA9IGZvcm1WYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgU3Ry
aW5nIGZvcm1TdHJpbmcgPSBmb3JtVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAoZm9ybVN0
cmluZyA9PSAiTkZDIikKQEAgLTE5NDEsMTAgKzE5NDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICBlbHNlIGlmIChmb3JtU3RyaW5nID09ICJORktEIikKICAgICAgICAgICAgIGZvcm0gPSBO
b3JtYWxpemF0aW9uRm9ybTo6TkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2gg
YW55IG5vcm1hbGl6YXRpb24gZm9ybSJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBu
b3JtYWxpemF0aW9uIGZvcm0iX3MpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCBzdHJpbmcsIGZvcm0pKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobm9ybWFsaXplKGNh
bGxGcmFtZSwgc3RyaW5nLCBmb3JtKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKaW5kZXggN2Q1
NTBkN2QxNjRmMWNlZDY1YzQ2M2VhYTM3NGZmZDc4YTRkMjA5Mi4uNWMyNjhhYzFhMWQ5ZDliNmQ5
ZjU1YTA2YTAwNGVjMWExN2VlOTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZygKIAog
dm9pZCBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVj
dG9yLCBSZWdFeHAqKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ0luY2x1
ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1
aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAppbmRleCBlZDlmYTgwZGM3ZmY1NTYxNjY3NGU5MTUyNDMwZjEzNjc0NjY1Y2JiLi5mMzc5MDc3
MmYyMGEyZTlkOGY0NjIyNDI0Yjk2MjA2YjExMWEyOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zNiw4ICszNiw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIH0KIApAQCAtNTYsNyArNTYsNyBAQCBjb25zdCBDbGFzc0luZm8gU3ltYm9sQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnN5bWJvbAog
QGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJv
bChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxT
eW1ib2woSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU3ltYm9sQ29uc3RydWN0b3I6
OlN5bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTeW1ib2wsIG51bGxwdHIpCkBAIC03
Nyw0MyArNzcsNDMgQEAgdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgZGVz
Y3JpcHRpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoZGVzY3JpcHRpb24uaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSkpOwog
Ci0gICAgU3RyaW5nIHN0cmluZyA9IGRlc2NyaXB0aW9uLnRvV1RGU3RyaW5nKGV4ZWMpOworICAg
IFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShTeW1ib2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbih2bSwgc3RyaW5nKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1N0
cmluZyogc3RyaW5nS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAg
SlNTdHJpbmcqIHN0cmluZ0tleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBTdHJpbmcgc3RyaW5nID0gc3RyaW5nS2V5LT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgc3RyaW5nID0gc3RyaW5nS2V5LT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT52bSgpLnN5bWJvbFJlZ2lz
dHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHJp
bmcpKSk7CiB9CiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IgeyAi
U3ltYm9sLmtleUZvciByZXF1aXJlcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIHN5bWJv
bCJfcyB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9y
S2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3lt
Ym9sQ29uc3RydWN0b3JLZXlGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSBzeW1ib2xWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghc3ltYm9sVmFsdWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7CiAKICAgICBQcml2YXRlTmFtZSBwcml2YXRl
TmFtZSA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKTsKICAgICBTeW1ib2xJ
bXBsJiB1aWQgPSBwcml2YXRlTmFtZS51aWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCmluZGV4IDQyYTA3YzZhNDNhNDdjZDY0Mjky
MzllOWFiZWE5OTZiYWQ4MDE3ZjYuLjIzNGViMTg5MTliOWE5OTQ5MzE0ZjQ0NjA2MWU4YzljZjAw
ZDZhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlv
bihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1
bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODgsMzgg
Kzg4LDM4IEBAIGlubGluZSBTeW1ib2wqIHRyeUV4dHJhY3RTeW1ib2woVk0mIHZtLCBKU1ZhbHVl
IHRoaXNWYWx1ZSkKICAgICByZXR1cm4gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRo
aXNPYmplY3QpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCog
c3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIFN5
bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFzeW1ib2wpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9uVHlwZUVy
cm9yKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgY29uc3QgYXV0byBkZXNjcmlwdGlvbiA9
IHN5bWJvbC0+ZGVzY3JpcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2Ny
aXB0aW9uLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBkZXNjcmlwdGlv
bikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3lt
Ym9sUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgU3lt
Ym9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3ltYm9sLT5kZXNjcmlwdGl2ZVN0
cmluZygpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3Rv
RnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwg
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJv
bCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlwZUVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
U3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzeW1ib2wpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Rocm93U2NvcGUuaAppbmRleCA1NTM1NWQ2OTYxZWQ4YzQ0MjRiMGViN2RlODViYzU5MGQ2
MmVlYTZiLi5iYzc4YjNhMzEyNmJlNzJlNzJlMzliNDNhNmFjZWY4OWZjYmM3NDYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCkBAIC0yOSw4ICsyOSw5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBKU09iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogI2lmIEVO
QUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuaAppbmRleCA2NGQzZjU1
MDRlNTUwMTkwOWRiYTZmZDEwYWVkOTg5YzE5ODg3N2U4Li5jMjFhY2FlMjE4YzcyNmEwYWU3ZWUx
ZWU1ODg4YWE0MWVhMWFiZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTMwLDkgKzMwLDEwIEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU0FycmF5QnVmZmVyOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VHlwZWRBcnJheUNvbnRyb2xsZXI+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDM5YmVhNWRlYzcwNDk0MmZjMjVkYjliN2M5
ZTg3ZWJlYjgxNmZmZWQuLjA3MDBmY2E1ZjY2NjdhNjA3NjdmMjQ4MWM2YTBiNDBlNGJiMDcxNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTAyLDEzICsxMDIsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNzIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7CiBj
bGFzcyBDb2RlQ2FjaGU7CiBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKIGNsYXNzIENvbXBhY3RW
YXJpYWJsZU1hcDsKIGNsYXNzIEN1c3RvbUdldHRlclNldHRlcjsKIGNsYXNzIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNz
IEV4Y2VwdGlvblNjb3BlOwogY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7
CkBAIC0xODAsNyArMTgwLDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBJbnN0cnVjdGlv
bjsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogc3RydWN0IExvY2FsVGltZU9mZnNldENh
Y2hlIHsKICAgICBMb2NhbFRpbWVPZmZzZXRDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTVRyYXBzLmgKaW5kZXggYzE2ZDNhMmUwZTY1OTQ0OTdkOTQ3MmQwYWNjNWRhODA2ZTY3
OTc3MS4uMGVmYjYwYzM3NGVmMWExNzkwM2Y1YzMzZTBhN2FjZTNmYTgyM2E3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaApAQCAtMzYsOCArMzYsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Vk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFZNVHJhcHMgewogICAg
IHR5cGVkZWYgdWludDhfdCBCaXRGaWVsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
YXRjaGRvZy5oCmluZGV4IGQzNTYzYWY4M2U3YjZmZTk3N2EwNDQzNTcxYWViMmYxYTE3MWFlZDYu
LmQyYWUwNTM2YzIwMWMxNWNhZmQ5ODJlZGVlMDQzMGZiYzM0ZjdiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaApAQCAtMzMsOCArMzMsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGNsYXNzIFdhdGNoZG9nIDogcHVibGlj
IFdURjo6VGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2F0Y2hkb2c+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDM5YTIwNzYwYTAxOTkwZTYwYjdhZGEyY2FiZDY2OWRi
NzA1ZWFmOGUuLmU0ZWE5NTk0Mjc2ZDY4OTg3ZjEzZTMxN2QyNDc1MjZjM2ViMjk3NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9y
LmNwcApAQCAtNDUsNTQgKzQ1LDUzIEBAIHZvaWQgV2Vha01hcENvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdl
YWtNYXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogV2Vha01hcENvbnN0cnVjdG9yOjpXZWFrTWFwQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgY2FsbFdlYWtNYXAsIGNvbnN0cnVjdFdlYWtNYXApCiB7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJXZWFrTWFwIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiV2Vha01hcCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3Qodm0pOwotICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9i
YWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiB3ZWFrTWFwU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1
cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgSlNXZWFrTWFwKiB3ZWFrTWFwID0gSlNXZWFrTWFwOjpjcmVhdGUodm0sIHdlYWtNYXBT
dHJ1Y3R1cmUpOwotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoaXRl
cmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh3ZWFrTWFwKTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtNYXAtPkpTT2Jq
ZWN0OjpnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAgICBKU1ZhbHVlIGFkZGVy
RnVuY3Rpb24gPSB3ZWFrTWFwLT5KU09iamVjdDo6Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlO
YW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwg
YWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09
IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKKyAgICBmb3JFYWNoSW5JdGVyYWJsZShjYWxs
RnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSBuZXh0SXRlbSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgICAgIGlmICghbmV4dEl0ZW0uaXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChleGVjLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCkpOworICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChjYWxsRnJhbWUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigwKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5leHRJdGVtLmdldChleGVjLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbmV4dEl0
ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0xMDAsNyArOTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgY2FsbChl
eGVjLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25D
YWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFk
ZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
LCB3ZWFrTWFwLCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh3ZWFrTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcFByb3RvdHlwZS5jcHAKaW5kZXggYzczZmQzZWM3MDI1OTExMmRkNWQxNWMyYTA2NWUxOTIx
MGNkYWVmNy4uY2Q0YzU5YWI5MmJmZGU2NDYxZDY1YjE2ZDJlNWJhMDZmOWY3Y2NjMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAK
QEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdl
YWtNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtNYXAiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYWtNYXBQcm90b3R5cGUpIH07CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxl
dGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90
b0Z1bmNXZWFrTWFwR2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFw
SGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNTEsOSArNTEsOSBAQCB2b2lkIFdl
YWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiV2Vha01hcCIpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
fQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtNYXAqIGdldFdlYWtNYXAoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtN
YXAqIGdldFdlYWtNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0
KCkpKSB7CkBAIC02OSwxOCArNjksMTggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrTWFw
KiBnZXRXZWFrTWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVu
Y1dlYWtNYXBEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogbWFwID0gZ2V0V2Vha01h
cChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG1hcCA9IGdl
dFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBtYXAtPnJl
bW92ZShhc09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtNYXBHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBHZXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogbWFwID0gZ2V0V2Vh
a01hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG1hcCA9
IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKQEAg
LTg5LDIxICs4OSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtNYXBHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShtYXAtPmdldChhc09iamVjdChrZXkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBtYXAgPSBn
ZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byog
bWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYm
IG1hcC0+aGFzKGFzT2JqZWN0KGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIG1hcCA9IGdldFdl
YWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBtYXAg
PSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW1hcCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2Jq
ZWN0UmVmQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAppbmRleCBkNDZmMmU3ZTg4OWQ0ODQ3ZTU2OWViMjBm
YTZjODc4ODk2NTI0ZjUxLi5lOGIyNTM4MGNkYmQxYzYwZGZhMjdmOTA0MmQ0Y2NjZjFiYmQxNTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtP
YmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDMzICs0NSwzMiBAQCB2b2lkIFdlYWtPYmpl
Y3RSZWZDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrT2JqZWN0UmVmUHJv
dG90eXBlKiBwcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1JlZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1JlZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0V2Vha1JlZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3I6OldlYWtPYmplY3RSZWZDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha1JlZiwgY29u
c3RydWN0V2Vha1JlZikKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFdlYWtSZWYoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtSZWYiKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFrUmVmIikpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFdlYWtSZWYg
c2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3Mp
OwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0
dXJlKiBXZWFrT2JqZWN0UmVmU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vh
a09iamVjdFJlZlN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIFdlYWtPYmplY3RSZWZTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha09iamVjdFJlZlN0
cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dl
YWtPYmplY3RSZWY6OmNyZWF0ZSh2bSwgV2Vha09iamVjdFJlZlN0cnVjdHVyZSwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWFrT2JqZWN0UmVmOjpjcmVhdGUodm0sIFdlYWtP
YmplY3RSZWZTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2Jq
ZWN0KCkpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKaW5kZXggNTJmOWVhY2RhMDEzMWQzNTEx
MTAyNGVhZjEzNzVmNGMwM2UzYWQ5NS4uODk5Y2QzYTg1YTFlMjY1MzU3YjkyZjA2MjQ5ZWVmZDIy
MmE5ZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09i
amVjdFJlZlByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJXZWFrUmVmIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShXZWFrT2JqZWN0UmVmUHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrT2JqZWN0UmVmUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgV2Vha09iamVjdFJlZlByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9s
LCBqc1N0cmluZyh2bSwgIldlYWtSZWYiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMg
SlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHZhbHVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVm
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgewpAQCAtNjUs
MTAgKzY1LDEwIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJlZiogZ2V0V2Vh
a1JlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRlcmVm
KENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90
b0Z1bmNXZWFrUmVmRGVyZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwotICAgIGF1dG8q
IHJlZiA9IGdldFdlYWtSZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byogcmVmID0gZ2V0V2Vha1Jl
ZihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFyZWYpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDY1MjQ5ZDViYzBhMTU0YTZjZDEzYjJlZDNlNDc1ZjVkZmJiMWU4Yjgu
LjE3ZGViODg1NTdjMmEzNmU4NTljZGU0ZTA4M2E1MGM3ZTlkYzIwYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcApAQCAt
NDUsNDggKzQ1LDQ3IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFdlYWtTZXRQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtTZXQoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RX
ZWFrU2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogV2Vha1NldENvbnN0cnVjdG9yOjpXZWFrU2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2Fs
bFdlYWtTZXQsIGNvbnN0cnVjdFdlYWtTZXQpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJXZWFrU2V0IikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2Vh
a1NldCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2Vha1NldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwot
ICAgIFN0cnVjdHVyZSogd2Vha1NldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3Qt
PndlYWtTZXRTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtTZXRTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNX
ZWFrU2V0KiB3ZWFrU2V0ID0gSlNXZWFrU2V0OjpjcmVhdGUodm0sIHdlYWtTZXRTdHJ1Y3R1cmUp
OwotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoaXRlcmFibGUuaXNV
bmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3ZWFrU2V0
KTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtTZXQtPkpTT2JqZWN0OjpnZXQo
ZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKKyAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24g
PSB3ZWFrU2V0LT5KU09iamVjdDo6Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YWRk
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1
bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5j
dGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGZvckVh
Y2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbmV4dFZhbHVlKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBpdGVy
YWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dFZhbHVlKSB7
CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChuZXh0VmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgICAgICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrU2V0LCBhcmd1bWVudHMpOwor
ICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxU
eXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CiAgICAgfSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAppbmRleCBmNWUwNzgw
MWZjODAxMTI4MGZiZTc3ZWVkMmE5N2E2ZWVkZmM3ODEzLi4wZjczNWRiMGZkNjE3M2Y0MjdkYWM1
Y2FjMDVjMmIyMDFhYmIyNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYWtTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtT
ZXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFdlYWtTZXRQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEFkZChFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtTZXREZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtTZXRBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFr
U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7CkBAIC00OSw5ICs0OSw5IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1Rh
Z1N5bWJvbCwganNTdHJpbmcodm0sICJXZWFrU2V0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUFMV0FZU19JTkxJTkUg
c3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKQEAgLTY3LDMwICs2
NywzMCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERlbGV0ZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
V2Vha1NldERlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1
ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIHNldC0+cmVtb3ZlKGFzT2JqZWN0KGtleSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEhh
cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jV2Vha1NldEhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNW
YWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIHNldC0+aGFzKGFzT2JqZWN0KGtleSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEFk
ZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jV2Vha1NldEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXNldCk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggMzU1OTJhNDAwYjc5MTZjMGNhNDkzMDQ1
MjVjMTc4OTJmNzdhMzA3ZC4uMTUzM2IwYjk0MWZlMDc4Nzg3ZWVkMDU4ZDdjNTg1MWVmOGZiOTIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtODg1
LDExICs4ODUsMTEgQEAgY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1YmxpYyBET01KSVRO
b2RlIHsKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0Kik7CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkVuYWJsZUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgICAgICBhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBs
ZXgqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0
dGVyQ29tcGxleCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgKG9i
amVjdCkKICAgICAgICAgICAgIG9iamVjdC0+bV9lbmFibGVFeGNlcHRpb24gPSB0cnVlOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtOTQ5LDE2ICs5
NDksMTYgQEAgY2xhc3MgRE9NSklURnVuY3Rpb25PYmplY3QgOiBwdWJsaWMgRE9NSklUTm9kZSB7
CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykK
KyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldpdGhUeXBl
Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgRE9NSklU
Tm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PERPTUpJVE5vZGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmpl
Y3QtPnZhbHVlKCkpKTsKICAgICB9CiAKQEAgLTEwMjgsMTUgKzEwMjgsMTUgQEAgY2xhc3MgRE9N
SklUQ2hlY2tTdWJDbGFzc09iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgcmV0
dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbldpdGhUeXBlQ2hlY2soRXhlY1N0YXRlKiBleGVjKQorICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVDaGVjayhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7CiAgICAg
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QqPih2bSwg
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMjk0LDggKzEyOTQs
OCBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUm9vdCogcm9vdCkKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQ
YXJzZXJGaW5hbGl6ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiBjbGFzcyBXYXNtU3RyZWFtaW5nUGFyc2VyIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzNjAsMjYgKzEzNjAsMjYgQEAgY2xhc3MgV2FzbVN0cmVh
bWluZ1BhcnNlciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKIGNvbnN0IENsYXNz
SW5mbyBXYXNtU3RyZWFtaW5nUGFyc2VyOjpzX2luZm8gPSB7ICJXYXNtU3RyZWFtaW5nUGFyc2Vy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
YXNtU3RyZWFtaW5nUGFyc2VyKSB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0gICAgYXV0byogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVhbWluZ1BhcnNlcio+KHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVh
bWluZ1BhcnNlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNP
YmplY3QpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpKTsKIAotICAgIGF1dG8gZGF0YSA9IGdldFdhc21CdWZmZXJGcm9t
VmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gZGF0YSA9IGdldFdhc21C
dWZmZXJGcm9tVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90Pih0aGlzT2JqZWN0LT5zdHJlYW1pbmdQYXJzZXIoKS5hZGRCeXRlcyhiaXR3aXNlX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZmlyc3QpLCBkYXRhLnNlY29uZCkpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZp
bmFsaXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2VyKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRoaXNPYmplY3QtPnN0cmVhbWluZ1Bh
cnNlcigpLmZpbmFsaXplKCkpKSk7CkBAIC0xMzk1LDcgKzEzOTUsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNEb2xsYXJWTTo6c19pbmZvID0geyAiRG9sbGFyVk0iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscAogCiAvLyBUcmlnZ2VycyBhIGNyYXNoIGltbWVkaWF0ZWx5LgogLy8gVXNhZ2U6
ICR2bS5jcmFzaCgpCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jhc2goRXhlY1N0YXRlKikKK3N0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmFz
aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKICAgICBDUkFTSCgpOwpAQCAtMTQwMywxNCArMTQwMywxNCBAQCBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3Jhc2goRXhlY1N0YQogCiAvLyBFeGVjdXRlcyBhIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rp
b24gaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRydXRoeSBvciBpcyB1bnNldC4KIC8vIFVzYWdl
OiAkdm0uYnJlYWtwb2ludCg8Y29uZGl0aW9uPikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQnJlYWtwb2ludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJyZWFrcG9pbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAvLyBOb3RoaW5nIHNob3VsZCB0aHJvdyBoZXJl
IGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGRvdWJsZSBjaGVjay4uLgotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwotICAg
IGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVh
bihleGVjKSkKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIHx8IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpCiAgICAgICAgIFdURkJyZWFrcG9p
bnRUcmFwKCk7CiAKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBAIC0xNDE4LDcg
KzE0MTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJy
ZWFrcG9pbnQoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJl
bnQgZnJhbWUgaXMgYSBERkcgZnJhbWUuCiAvLyBVc2FnZTogaXNERkcgPSAkdm0uZGZnVHJ1ZSgp
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRGR1RydWUoRXhl
Y1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uREZH
VHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOwpAQCAtMTQyNiwxMyArMTQyNiwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRGR1RydWUoRXhlY1N0YXRlKikKIAogLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgRlRMIGZyYW1lLgogLy8gVXNhZ2U6IGlzRlRMID0g
JHZtLmZ0bFRydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25GVExUcnVlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkZUTFRydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1TWZlbmNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIENQVShY
ODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoRXhlY1N0YXRlKikKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNjKEV4ZWNTdGF0ZSopCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNjKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ1NCw3ICsxNDU0
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVSZHRz
YyhFeGVjU3RhdGUqKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3B1Q3B1aWQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q3B1aWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4
Nl82NCkgJiYgIU9TKFdJTkRPV1MpCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEV4ZWNTdGF0ZSopCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVQYXVzZShFeGVjU3RhdGUqKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVQYXVzZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAgLTE0ODEsMTMgKzE0ODEs
MTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVQYXVz
ZShFeGVjU3RhdGUqKQogLy8KIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBKU0Fy
cmF5QnVmZmVyLCB3ZSBsb2FkIHRoZSBidXR0ZXJmbHkKIC8vIGFuZCBjbGZsdXNoIGF0IHRoZSBh
ZGRyZXNzIG9mIHRoZSBidXR0ZXJmbHkuCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNwdUNsZmx1c2goRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCi0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAK
LSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzSW50MzIoKSkKKyAgICBpZiAoIWNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkuaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpOwogCiAgICAgYXV0byBjbGZsdXNoID0gW10gKHZvaWQqIHB0cikg
ewpAQCAtMTQ5OCwxMSArMTQ5OCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNwdUNsZmx1c2goRXhlY1N0YXRlKiBleGVjKQogCiAgICAgVmVjdG9yPHZv
aWQqPiB0b0ZsdXNoOwogCi0gICAgdWludDMyX3Qgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSku
YXNVSW50MzIoKTsKKyAgICB1aW50MzJfdCBvZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
LmFzVUludDMyKCk7CiAKLSAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFt
aWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkKKyAgICBp
ZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKQogICAgICAgICB0b0ZsdXNoLmFwcGVu
ZChiaXR3aXNlX2Nhc3Q8Y2hhcio+KHZpZXctPnZlY3RvcigpKSArIG9mZnNldCk7Ci0gICAgZWxz
ZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhl
Yy0+YXJndW1lbnQoMCkpKSB7CisgICAgZWxzZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpIHsKICAgICAg
ICAgc3dpdGNoIChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lO
VDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOgpAQCAtMTUxOSw3ICsxNTE5LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgY2xm
bHVzaChwdHIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsK
ICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAjZW5kaWYKIH0KQEAgLTE1NjgsMjUgKzE1Njks
MjUgQEAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9u
KEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSkKIAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJy
ZW50IGZyYW1lIGlzIGEgTExJbnQgZnJhbWUuCiAvLyBVc2FnZTogaXNMTEludCA9ICR2bS5sbGlu
dFRydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25MTGlu
dFRydWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25MTGludFRydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIGlmICghZXhl
YykKKyAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBDYWxsZXJGcmFtZUpJVFR5cGVGdW5jdG9yIGZ1bmN0b3I7Ci0g
ICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rv
cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rvci5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykpOwogfQogCiAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgYSBiYXNlbGluZSBKSVQgZnJhbWUuCiAvLyBVc2FnZTog
aXNCYXNlbGluZUpJVCA9ICR2bS5qaXRUcnVlKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSklUVHJ1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpJVFRydWUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIGlmICghZXhlYykKKyAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBDYWxsZXJGcmFtZUpJVFR5cGVG
dW5jdG9yIGZ1bmN0b3I7Ci0gICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBjYWxsRnJh
bWUtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZnVuY3Rvci5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpKTsKIH0KIApAQCAt
MTU5NCwxMyArMTU5NSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkpJVFRydWUoRXhlY1N0YXRlKiBleGVjKQogLy8gVXNhZ2U6CiAvLyBmdW5jdGlvbiBm
KCkgeyB9OwogLy8gJHZtLm5vSW5saW5lKGYpOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Ob0lubGluZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vSW5saW5lKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBpZiAoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIAotICAgIEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAKICAgICBpZiAoRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9uKHRoZUZ1bmN0aW9u
VmFsdWUpKQogICAgICAgICBleGVjdXRhYmxlLT5zZXROZXZlcklubGluZSh0cnVlKTsKQEAgLTE2
MTAsMjggKzE2MTEsMjggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Ob0lubGluZShFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIFJ1bnMgYSBmdWxsIEdDIHN5bmNo
cm9ub3VzbHkuCiAvLyBVc2FnZTogJHZtLmdjKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk1JbnNwZWN0b3I6OmdjKGV4ZWMpOworICAgIFZNSW5zcGVjdG9yOjpnYyhjYWxsRnJhbWUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIC8vIFJ1bnMg
dGhlIGVkZW5HQyBzeW5jaHJvbm91c2x5LgogLy8gVXNhZ2U6ICR2bS5lZGVuR0MoKQotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0Mo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNSW5zcGVjdG9yOjplZGVuR0MoZXhlYyk7Cisg
ICAgVk1JbnNwZWN0b3I6OmVkZW5HQyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIC8vIER1bXBzIHRoZSBoYXNoZXMgb2YgYWxsIHN1
YnNwYWNlcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBWTS4KIC8vIFVzYWdlOiAkdm0u
ZHVtcFN1YnNwYWNlSGFzaGVzKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFz
aGVzKCZ2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTE2NTAsMTIgKzE2NTEsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMoRXhlY1N0YXRlKiBleGVjKQogLy8gTm90ZTog
eW91IGNhbm5vdCB0b1N0cmluZygpIGEgY29kZUJsb2NrLCB1bmxpbmtlZENvZGVCbG9jaywgb3Ig
ZXhlY3V0YWJsZSBiZWNhdXNlCiAvLyB0aGVyZSBhcmUgaW50ZXJuYWwgb2JqZWN0cyBhbmQgbm90
IGEgSlMgb2JqZWN0LiBIZW5jZSwgeW91IGNhbm5vdCBkbyBzdHJpbmcKIC8vIGNvbmNhdGVuYXRp
b24gd2l0aCB0aGVtLgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DYWxsRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHVu
c2lnbmVkIGZyYW1lTnVtYmVyID0gMTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDEpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAgICBp
ZiAoIXZhbHVlLmlzVUludDMyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNjY1LDE4ICsxNjY2LDE4IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgZnJhbWVOdW1iZXIgPSB2YWx1ZS5hc1VJbnQzMigpICsgMTsKICAgICB9CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRG9sbGFyVk1DYWxsRnJhbWU6OmNyZWF0ZShleGVj
LCBmcmFtZU51bWJlcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNEb2xsYXJWTUNh
bGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZnJhbWVOdW1iZXIpKTsKIH0KIAogLy8gR2V0cyBh
IHRva2VuIGZvciB0aGUgQ29kZUJsb2NrIGZvciBhIHNwZWNpZmllZCBmcmFtZSBpbmRleC4KIC8v
IFVzYWdlOiBjb2RlQmxvY2tUb2tlbiA9ICR2bS5jb2RlQmxvY2tGb3JGcmFtZSgwKSAvLyBmcmFt
ZSAwIGlzIHRoZSB0b3AgZnJhbWUuCiAvLyBVc2FnZTogY29kZUJsb2NrVG9rZW4gPSAkdm0uY29k
ZUJsb2NrRm9yRnJhbWUoKSAvLyBpbXBsaWVzIGZyYW1lIDAgaS5lLiBjdXJyZW50IGZyYW1lLgot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3JG
cmFtZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICB1
bnNpZ25lZCBmcmFtZU51bWJlciA9IDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
PSAxKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAg
aWYgKCF2YWx1ZS5pc1VJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTY4NiwyMCArMTY4NywyMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgZnJhbWVOdW1iZXIgPSB2YWx1ZS5hc1VJbnQzMigpICsgMTsKICAg
ICB9CiAKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IFZNSW5zcGVjdG9yOjpjb2RlQmxvY2tG
b3JGcmFtZShleGVjLCBmcmFtZU51bWJlcik7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBW
TUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yRnJhbWUoY2FsbEZyYW1lLCBmcmFtZU51bWJlcik7CiAg
ICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2RlQmxv
Y2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0
YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIENvZGVC
bG9jayogY2FuZGlkYXRlQ29kZUJsb2NrID0gbnVsbHB0cjsKICAgICBpZiAodmFsdWUuaXNDZWxs
KCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuYyA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlv
bio+KHZtLCB2YWx1ZS5hc0NlbGwoKSk7CkBAIC0xNzEyLDcgKzE3MTMsNyBAQCBzdGF0aWMgQ29k
ZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNh
bmRpZGF0ZUNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KHZhbHVlLmFzQ2VsbCgp
KTsKICAgICB9CiAKLSAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrICYmIFZNSW5zcGVjdG9yOjpp
c1ZhbGlkQ29kZUJsb2NrKGV4ZWMsIGNhbmRpZGF0ZUNvZGVCbG9jaykpCisgICAgaWYgKGNhbmRp
ZGF0ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rvcjo6aXNWYWxpZENvZGVCbG9jayhjYWxsRnJhbWUs
IGNhbmRpZGF0ZUNvZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVDb2RlQmxvY2s7
CiAKICAgICBpZiAoY2FuZGlkYXRlQ29kZUJsb2NrKQpAQCAtMTcyNiwyNCArMTcyNywyNCBAQCBz
dGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVz
YWdlOiAkdm0ucHJpbnQoImNvZGVibG9jayA9ICIsICR2bS5jb2RlQmxvY2tGb3IoY29kZUJsb2Nr
VG9rZW4pKQogLy8gTm90ZTogeW91IGNhbm5vdCB0b1N0cmluZygpIGEgY29kZUJsb2NrIGJlY2F1
c2UgaXQncyBhbiBpbnRlcm5hbCBvYmplY3QgYW5kIG5vdAogLy8gYSBKUyBvYmplY3QuIEhlbmNl
LCB5b3UgY2Fubm90IGRvIHN0cmluZyBjb25jYXRlbmF0aW9uIHdpdGggaXQuCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVC
bG9ja0ZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhleGVjKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogICAg
IFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwogICAgIGlmIChjb2RlQmxvY2spIHsKICAg
ICAgICAgc3RyZWFtLnByaW50KCpjb2RlQmxvY2spOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCksIHN0cmVhbS50b1N0cmluZygpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJl
YW0udG9TdHJpbmcoKSkpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCiAvLyBVc2FnZTogJHZtLmR1bXBTb3VyY2VGb3IoZnVuY3Rpb25PYmop
CiAvLyBVc2FnZTogJHZtLmR1bXBTb3VyY2VGb3IoY29kZUJsb2NrVG9rZW4pCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTb3VyY2VGb3IoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
U291cmNlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGV4ZWMpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAg
ICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAgY29kZUJsb2NrLT5kdW1wU291cmNlKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE3NTEsMjEgKzE3NTIs
MjEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU291
cmNlRm9yKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gVXNhZ2U6ICR2bS5kdW1wQnl0ZWNvZGVGb3Io
ZnVuY3Rpb25PYmopCiAvLyBVc2FnZTogJHZtLmR1bXBCeXRlY29kZUZvcihjb2RlQmxvY2spCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBCeXRlY29kZUZv
cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkR1bXBCeXRlY29kZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhleGVjKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpOwogICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5
dGVjb2RlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRvUHJpbnQoRXhlY1N0YXRlKiBleGVjLCBib29sIGFk
ZExpbmVGZWVkKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRvUHJpbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGJvb2wgYWRkTGluZUZlZWQpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSBhcmcg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIEpTVmFsdWUg
YXJnID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAgICAgaWYgKGFyZy5p
c0NlbGwoKQogICAgICAgICAgICAgJiYgIWFyZy5pc09iamVjdCgpCiAgICAgICAgICAgICAmJiAh
YXJnLmlzU3RyaW5nKCkKQEAgLTE3NzMsNyArMTc3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBkb1ByaW50KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBhZGRMaW5lRmVlZCkKICAgICAgICAgICAg
IGRhdGFMb2coYXJnKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAg
IFN0cmluZyBhcmdTdHIgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1dURlN0cmluZyhl
eGVjKTsKKyAgICAgICAgU3RyaW5nIGFyZ1N0ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGRhdGFMb2coYXJnU3RyKTsKICAg
ICB9CkBAIC0xNzg0LDQxICsxNzg1LDQxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50
KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBhZGRMaW5lRmVlZCkKIAogLy8gUHJpbnRzIGEgc2VyaWVz
IG9mIGNvbW1hIHNlcGFyYXRlIHN0cmluZ3Mgd2l0aG91dCBhcHBlbmRpbmcgYSBuZXdsaW5lLgog
Ly8gVXNhZ2U6ICR2bS5kYXRhTG9nKHN0cjEsIHN0cjIsIHN0cjMpCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRhdGFMb2coRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EYXRhTG9nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgY29uc3QgYm9vbCBhZGRMaW5lRmVlZCA9
IGZhbHNlOwotICAgIHJldHVybiBkb1ByaW50KGV4ZWMsIGFkZExpbmVGZWVkKTsKKyAgICByZXR1
cm4gZG9QcmludChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYWRkTGluZUZlZWQpOwogfQogCiAv
LyBQcmludHMgYSBzZXJpZXMgb2YgY29tbWEgc2VwYXJhdGUgc3RyaW5ncyBhbmQgYXBwZW5kcyBh
IG5ld2xpbmUuCiAvLyBVc2FnZTogJHZtLnByaW50KHN0cjEsIHN0cjIsIHN0cjMpCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBjb25zdCBib29sIGFkZExpbmVG
ZWVkID0gdHJ1ZTsKLSAgICByZXR1cm4gZG9QcmludChleGVjLCBhZGRMaW5lRmVlZCk7CisgICAg
cmV0dXJuIGRvUHJpbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFkZExpbmVGZWVkKTsKIH0K
IAogLy8gRHVtcHMgdGhlIGN1cnJlbnQgQ2FsbEZyYW1lLgogLy8gVXNhZ2U6ICR2bS5kdW1wQ2Fs
bEZyYW1lKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVt
cENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkR1bXBDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
IC8vIFdoZW4gdGhlIGNhbGxlcnMgY2FsbCB0aGlzIGZ1bmN0aW9uLCB0aGV5IGFyZSBleHBlY3Rp
bmcgdG8gZHVtcCB0aGVpcgogICAgIC8vIG93biBmcmFtZS4gU28gc2tpcCAxIGZvciB0aGlzIGZy
YW1lLgotICAgIFZNSW5zcGVjdG9yOjpkdW1wQ2FsbEZyYW1lKGV4ZWMsIDEpOworICAgIFZNSW5z
cGVjdG9yOjpkdW1wQ2FsbEZyYW1lKGNhbGxGcmFtZSwgMSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gRHVtcHMgdGhlIEpTIHN0YWNrLgogLy8g
VXNhZ2U6ICR2bS5wcmludFN0YWNrKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRHVtcFN0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN0YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKICAgICAvLyBXaGVuIHRoZSBjYWxsZXJzIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhleSBhcmUg
ZXhwZWN0aW5nIHRvIGR1bXAgdGhlCiAgICAgLy8gc3RhY2sgc3RhcnRpbmcgdGhlaXIgb3duIGZy
YW1lLiBTbyBza2lwIDEgZm9yIHRoaXMgZnJhbWUuCi0gICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFj
ayhleGVjLCAxKTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKGNhbGxGcmFtZSwgMSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTgyNywx
MiArMTgyOCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBTdGFjayhFeGVjU3RhdGUqIGV4ZWMpCiAvLyBVc2FnZTogJHZtLmR1bXBSZWdpc3RlcnMo
KSAvLyBkdW1wIHRoZSByZWdpc3RlcnMgb2YgdGhlIGN1cnJlbnQgQ2FsbEZyYW1lLgogLy8gRklY
TUU6IEN1cnJlbnRseSwgdGhpcyBmdW5jdGlvbiBkdW1wcyB0aGUgcGh5c2ljYWwgZnJhbWUuIFdl
IHNob3VsZCBtYWtlCiAvLyBpdCBkdW1wIHRoZSBsb2dpY2FsIGZyYW1lIChpLmUuIGJlIGFibGUg
dG8gZHVtcCBpbmxpbmVkIGZyYW1lcyBhcyB3ZWxsKS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHVuc2lnbmVkIHJlcXVlc3RlZEZyYW1lSW5kZXggPSAx
OwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMSkgewotICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgaWYgKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmICghdmFsdWUuaXNVSW50MzIoKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAg
LTE4NDMsNyArMTg0NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHVtcFJlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgZnJhbWVJbmRleCA9IDA7Ci0gICAgZXhlYy0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYg
dmlzaXRvcikgeworICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShbJl0gKFN0YWNrVmlzaXRvciYgdmlz
aXRvcikgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAg
ICBpZiAoZnJhbWVJbmRleCsrICE9IHJlcXVlc3RlZEZyYW1lSW5kZXgpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKQEAgLTE4NTYsMTAgKzE4NTcsMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEV4
ZWNTdGF0ZSogZXhlYykKIAogLy8gRHVtcHMgdGhlIGludGVybmFsIG1lbW9yeSBsYXlvdXQgb2Yg
YSBKU0NlbGwuCiAvLyBVc2FnZTogJHZtLmR1bXBDZWxsKGNlbGwpCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBDZWxsKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENlbGwoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXZh
bHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiAgICAg
CkBAIC0xODY5LDIyICsxODcwLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRHVtcENlbGwoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBHZXRzIHRoZSBkYXRh
TG9nIGR1bXAgb2YgdGhlIGluZGV4aW5nTW9kZSBvZiB0aGUgcGFzc2VkIHZhbHVlLgogLy8gVXNh
Z2U6ICR2bS5wcmludCgiaW5kZXhpbmdNb2RlID0gIiArICR2bS5pbmRleGluZ01vZGUoanNWYWx1
ZSkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkluZGV4aW5n
TW9kZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkluZGV4aW5nTW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICBpZiAoIWNhbGxG
cmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Vu
ZGVmaW5lZCgpOwogCiAgICAgV1RGOjpTdHJpbmdQcmludFN0cmVhbSBzdHJlYW07Ci0gICAgc3Ry
ZWFtLnByaW50KEluZGV4aW5nVHlwZUR1bXAoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0
T2JqZWN0KCktPmluZGV4aW5nTW9kZSgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyhleGVjLT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOworICAgIHN0cmVhbS5wcmlu
dChJbmRleGluZ1R5cGVEdW1wKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2Jq
ZWN0KCktPmluZGV4aW5nTW9kZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHN0cmVhbS50b1N0cmluZygpKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25JbmxpbmVDYXBhY2l0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpKQorICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihvYmplY3QtPnN0cnVjdHVyZSh2bSktPmlubGluZUNhcGFjaXR5
KCkpKTsKIAogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTE4OTIsMjIgKzE4
OTMsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jbmxp
bmVDYXBhY2l0eShFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIEdldHMgdGhlIGRhdGFMb2cgZHVtcCBv
ZiBhIGdpdmVuIEpTIHZhbHVlIGFzIGEgc3RyaW5nLgogLy8gVXNhZ2U6ICR2bS5wcmludCgidmFs
dWUgPSAiICsgJHZtLnZhbHVlKGpzVmFsdWUpKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25WYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7CiAgICAgV1RGOjpTdHJpbmdQcmludFN0cmVhbSBzdHJlYW07Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJlYW0ucHJpbnQoIiwgIik7Ci0gICAg
ICAgIHN0cmVhbS5wcmludChleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIHN0
cmVhbS5wcmludChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCBzdHJlYW0u
dG9TdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFs
T2JqZWN0LT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkpOwogfQogCiAvLyBHZXRzIHRoZSBwaWQg
b2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KIC8vIFVzYWdlOiAkdm0ucHJpbnQoInBpZCA9ICIgKyAk
dm0uZ2V0cGlkKCkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkdldFBJRChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25HZXRQSUQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKQEAgLTE5MTUsMzQyICsxOTE2LDM0MSBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFBJRChFeGVj
U3RhdGUqKQogCiAvLyBNYWtlIHRoZSBnbG9iYWxPYmplY3QgaGF2ZSBhIGJhZCB0aW1lLiBEb2Vz
IG5vdGhpbmcgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBKU0dsb2JhbE9iamVjdC4KIC8vIFVzYWdl
OiAkdm0uaGF2ZUFCYWRUaW1lKGdsb2JhbE9iamVjdCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGF2ZUFCYWRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGF2ZUFCYWRUaW1lKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwotICAgIEpTVmFsdWUgb2JqVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIG9ialZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9ialZhbHVl
LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSk7CiAKICAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3Qob2JqVmFsdWUuYXNDZWxsKCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odm0sIG9iaik7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgSlNHbG9i
YWxPYmplY3QqIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2bSwgb2Jq
KTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOwogCi0gICAgZ2xvYmFsT2JqZWN0LT5oYXZlQUJhZFRpbWUodm0pOworICAgIHRhcmdl
dC0+aGF2ZUFCYWRUaW1lKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0cnVlKSk7CiB9CiAKIC8vIENoZWNrcyBpZiB0aGUgb2JqZWN0IChvciBpdHMgZ2xvYmFsIGlm
IHRoZSBvYmplY3QgaXMgbm90IGEgZ2xvYmFsKSBpcyBoYXZpbmcgYSBiYWQgdGltZS4KIC8vIFVz
YWdlOiAkdm0uaXNIYXZpbmdBQmFkVGltZShvYmopCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzSGF2aW5nQUJhZFRpbWUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1l
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIEpTVmFsdWUgb2JqVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIG9ialZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9i
alZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKICAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3Qob2JqVmFsdWUuYXNDZWxs
KCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4odm0sIG9iaik7Ci0gICAgaWYgKGdsb2JhbE9iamVjdCkKLSAgICAgICAg
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUo
KSkpOworICAgIEpTR2xvYmFsT2JqZWN0KiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4odm0sIG9iaik7CisgICAgaWYgKHRhcmdldCkKKyAgICAgICAgSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0YXJnZXQtPmlzSGF2aW5nQUJhZFRpbWUoKSkpOwogCi0gICAgZ2xvYmFs
T2JqZWN0ID0gb2JqLT5nbG9iYWxPYmplY3QoKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAg
ICB0YXJnZXQ9IG9iai0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKCF0YXJnZXQpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aXNIYXZpbmdB
QmFkVGltZSgpKSk7CiB9CiAKIC8vIENyZWF0ZXMgYSBuZXcgZ2xvYmFsIG9iamVjdC4KIC8vIFVz
YWdlOiAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGUodm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHkoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVQcm94eShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCh2
bSksIEltcHVyZVByb3h5VHlwZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNUYXJnZXQtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSksIEltcHVyZVByb3h5VHlwZSk7CiAgICAgSlNQcm94eSogcHJveHkgPSBKU1By
b3h5OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwganNUYXJnZXQpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocHJveHkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUnVu
dGltZUFycmF5KiBhcnJheSA9IFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMpOworICAgIEpTTG9j
a0hvbGRlciBsb2NrKGNhbGxGcmFtZSk7CisgICAgUnVudGltZUFycmF5KiBhcnJheSA9IFJ1bnRp
bWVBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShh
cnJheSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlTnVsbFJvcGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVOdWxsUm9wZVN0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNSb3BlU3RyaW5nOjpjcmVhdGVOdWxsRm9yVGVzdGluZyh2bSkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1Zh
bHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBKU09iamVjdCogZGVsZWdhdGUgPSBudWxscHRyOwog
ICAgIGlmICh0YXJnZXQuaXNPYmplY3QoKSkKICAgICAgICAgZGVsZWdhdGUgPSBhc09iamVjdCh0
YXJnZXQuYXNDZWxsKCkpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW1wdXJlR2V0dGVy
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxs
KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW1wdXJlR2V0dGVyOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgIEltcHVyZUdldHRlciogcmVz
dWx0ID0gSW1wdXJlR2V0dGVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgZGVsZWdhdGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEN1c3Rv
bUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEN1c3RvbUdldHRlcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBDdXN0b21HZXR0
ZXIqIHJlc3VsdCA9IEN1c3RvbUdldHRlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRl
RE9NSklUTm9kZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUTm9kZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIERPTUpJVEdl
dHRlcjo6Y3JlYXRlKHZtLCBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSkpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IERPTUpJVE5vZGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBET01K
SVRHZXR0ZXI6OmNyZWF0ZSh2bSwgRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpKSk7CiAgICAgRE9NSklUTm9kZSogcmVzdWx0ID0gRE9NSklU
Tm9kZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGpzTnVsbCgpKTsKICAgICBET01KSVRHZXR0ZXIqIHJlc3VsdCA9IERPTUpJVEdldHRl
cjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29t
cGxleE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxl
eDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVs
bCgpKTsKLSAgICBET01KSVRHZXR0ZXJDb21wbGV4KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21w
bGV4OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyQ29t
cGxleCogcmVzdWx0ID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VEZ1bmN0aW9uT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOwotICAgIERPTUpJVEZ1
bmN0aW9uT2JqZWN0KiByZXN1bHQgPSBET01KSVRGdW5jdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBET01KSVRGdW5jdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBET01KSVRGdW5jdGlvbk9iamVjdCogcmVzdWx0ID0g
RE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRDaGVja1N1YkNsYXNz
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKLSAgICBET01KSVRD
aGVja1N1YkNsYXNzT2JqZWN0KiByZXN1bHQgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Ojpj
cmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CisgICAgRE9NSklUQ2hlY2tTdWJD
bGFzc09iamVjdCogcmVzdWx0ID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJh
c2VKU09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQmFzZUpT
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
anNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQmFzZUpT
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAg
IERPTUpJVEdldHRlckJhc2VKU09iamVjdCogcmVzdWx0ID0gRE9NSklUR2V0dGVyQmFzZUpTT2Jq
ZWN0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlV2FzbVN0cmVhbWluZ1BhcnNlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2Fz
bVN0cmVhbWluZ1BhcnNlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhc21TdHJlYW1pbmdQYXJzZXI6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAjZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdGF0
aWNDdXN0b21BY2Nlc3Nvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0YXRpY0N1
c3RvbUFjY2Vzc29yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkp
OwogICAgIGF1dG8qIHJlc3VsdCA9IFN0YXRpY0N1c3RvbUFjY2Vzc29yOjpjcmVhdGUodm0sIHN0
cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBiYXNlID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBiYXNlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIWJhc2UuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBKU1ZhbHVlIGRlbGVnYXRlID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgSlNWYWx1ZSBkZWxlZ2F0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAg
ICAgaWYgKCFkZWxlZ2F0ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEltcHVyZUdldHRlciogaW1wdXJlR2V0dGVyID0ganNE
eW5hbWljQ2FzdDxJbXB1cmVHZXR0ZXIqPih2bSwgYXNPYmplY3QoYmFzZS5hc0NlbGwoKSkpOwog
ICAgIGlmIChVTkxJS0VMWSghaW1wdXJlR2V0dGVyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFu
IEltcHVyZUdldHRlciJfcyk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
IH0KICAgICBpbXB1cmVHZXR0ZXItPnNldERlbGVnYXRlKHZtLCBhc09iamVjdChkZWxlZ2F0ZS5h
c0NlbGwoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVp
bHRpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNTdHJp
bmcoKSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxIHx8ICFjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBTdHJpbmcgZnVuY3Rpb25UZXh0ID0gYXNTdHJpbmco
ZXhlYy0+YXJndW1lbnQoMCkpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgZnVuY3Rpb25UZXh0
ID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSktPnZhbHVlKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UoZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpT
RnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb28iKSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5s
aW5rKHZtLCBudWxscHRyLCBzb3VyY2UpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwor
ICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb28i
KSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3QpLT5saW5rKHZtLCBudWxscHRyLCBzb3VyY2UpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQcml2YXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRQcml2YXRlUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMiB8fCAhZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSkKKyAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyIHx8ICFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIAotICAgIFN0
cmluZyBzdHIgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzdHIgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2Fs
bEZyYW1lKTsKIAogICAgIFN5bWJvbEltcGwqIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmxv
b2tVcFByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHN0cikpOwogICAgIGlm
ICghc3ltYm9sKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5r
bm93biBwcml2YXRlIG5hbWUuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIlVua25vd24gcHJpdmF0ZSBuYW1lLiIpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+YXJndW1lbnQoMCkuZ2V0KGV4ZWMs
IHN5bWJvbCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldChjYWxsRnJhbWUsIHN5bWJvbCkpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlUm9vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUm9vdDo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFJvb3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVs
ZW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBleGVjLT5hcmd1
bWVudCgwKSk7CisgICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIl9zKSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJDYW5ub3Qg
Y3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIl9zKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHJvb3QpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRFbGVtZW50KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2V0RWxlbWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxS
b290Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSb290KiByb290ID0ganNEeW5hbWlj
Q2FzdDxSb290Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBFbGVt
ZW50KiByZXN1bHQgPSByb290LT5lbGVtZW50KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQgPyByZXN1bHQgOiBqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVTaW1wbGVPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVTaW1wbGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFNpbXBsZU9iamVjdDo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFNpbXBsZU9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRIaWRkZW5W
YWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldEhpZGRlblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAg
IFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3Qq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzaW1wbGVP
YmplY3QpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCB1
c2Ugb2YgZ2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0
ZXN0IGZ1bmN0aW9uIl9zKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2ltcGxlT2JqZWN0LT5oaWRkZW5WYWx1ZSgp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRI
aWRkZW5WYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNldEhpZGRlblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFz
aW1wbGVPYmplY3QpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52
YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBzZXRIaWRkZW5W
YWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CiAgICAgfQotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBzaW1wbGVPYmplY3QtPnNl
dEhpZGRlblZhbHVlKHZtLCB2YWx1ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5j
dGlvbnNPblN0YWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChhdXRvKiBzaGFk
b3dDaGlja2VuID0gdm0uc2hhZG93Q2hpY2tlbigpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaGFkb3dDaGlja2VuLT5mdW5jdGlv
bnNPblN0YWNrKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaGFkb3dD
aGlja2VuLT5mdW5jdGlvbnNPblN0YWNrKGNhbGxGcmFtZSkpOwogICAgIH0KIAotICAgIEpTQXJy
YXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChleGVjLCAm
dm0sIFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7
CisgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsICZ2bSwgWyZdIChTdGFja1Zpc2l0
b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVzIHsKICAgICAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgaWYgKHZpc2l0b3ItPmlzSW5saW5lZEZy
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAg
ICAgaWYgKHZpc2l0b3ItPmlzV2FzbUZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpDb250aW51ZTsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIGpzQ2FzdDxKU09i
amVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgIHJlc3VsdC0+cHVz
aChjYWxsRnJhbWUsIGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgp
KSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOyAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gdGVzdHMuCiAgICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OkNvbnRpbnVlOwogICAgIH0pOwpAQCAtMjI1OCw4MSArMjI1OCw4MSBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlv
bnNPblN0YWNrKEV4ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRHbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEdsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblNob3VsZE5vdFRocm93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2
bS5zZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyhmYWxzZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24oRXhlY1N0
YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25G
aW5kVHlwZUZvckV4cHJlc3Npb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7CiAgICAgdm0udHlwZVBy
b2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5j
dGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbiJfcyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNG
dW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2Jq
ZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1
bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoZXhl
Yy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0
cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBTdHJp
bmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmco
KTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc291cmNlQ29k
ZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQo
KSk7CiAgICAgCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSB2bS50eXBlUHJvZmlsZXIoKS0+dHlw
ZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2Ny
aXB0b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXR1cm5U
eXBlRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmV0dXJuVHlwZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKICAgICB2bS50
eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBBUEk6
IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfcyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5j
dGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFt
aWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0
KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBleGVjdXRhYmxl
LT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQodm0pOwogICAgIFN0cmluZyBqc29uU3RyaW5nID0g
dm0udHlwZVByb2ZpbGVyKCktPnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldChU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4sIG9mZnNldCwgZXhlY3V0
YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBh
cnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05Q
YXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFyeU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXR0
ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlz
T2JqZWN0KCkgJiYgdmFsdWUuZ2V0T2JqZWN0KCktPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnko
KSk7CiAgICAgdmFsdWUuZ2V0T2JqZWN0KCktPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsK
ICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKICAg
ICB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmR1bXBEYXRhKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNpY0Js
b2NrRXhlY3V0ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOwogCi0gICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlv
blZhbHVlLmlzRnVuY3Rpb24odm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxs
KCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQo
ZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0cmluZyA9IGFz
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgUkVMRUFTRV9BU1NF
UlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKKyAgICBTdHJpbmcgc3Vic3Ry
aW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFtZSk7
CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygp
LnRvU3RyaW5nKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMo
c3Vic3RyaW5nKSk7CiAgICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3Ry
aW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CkBAIC0yMzQxLDE4ICsy
MzQxLDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFz
QmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oaGFzRXhlY3V0ZWQpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNp
Y0Jsb2NrRXhlY3V0aW9uQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOwogCi0gICAg
SlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VS
VChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFs
dWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCi0gICAgUkVMRUFT
RV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0
cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgUkVM
RUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKKyAgICBTdHJp
bmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNh
bGxGcmFtZSk7CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNl
KCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQu
Y29udGFpbnMoc3Vic3RyaW5nKSk7CiAgICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZp
bmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CkBAIC0y
MzYxLDcgKzIzNjEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudChFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKGV4ZWN1dGlvbkNvdW50KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eihFeGVjU3Rh
dGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVF
eGNlcHRpb25GdXp6KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enoo
KSA9IHRydWU7CkBAIC0yNDEyLDIyICsyNDEyLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBj
aGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMsIE9wdGlvblNldDxDb2Rl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVX
aGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkVuYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUoZXhlYywgeyBDb2Rl
R2VuZXJhdGlvbk1vZGU6OkRlYnVnZ2VyIH0pOworICAgIHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1v
ZGVXaGVuSWRsZShjYWxsRnJhbWUsIHsgQ29kZUdlbmVyYXRpb25Nb2RlOjpEZWJ1Z2dlciB9KTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxl
RGVidWdnZXJNb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwotICAgIHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRs
ZShleGVjLCB7IH0pOworICAgIHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShjYWxs
RnJhbWUsIHsgfSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBW
TSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLT53aGVuSWRsZShbPV0gKCkgewog
ICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICB2bS0+ZGVs
ZXRlQWxsQ29kZShQcmV2ZW50Q29sbGVjdGlvbkFuZERlbGV0ZUFsbENvZGUpOwpAQCAtMjQzNSw0
MSArMjQzNSw0MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlbGV0ZUFsbENvZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR2xvYmFsT2JqZWN0Q291bnQoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RDb3Vu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihleGVjLT52bSgpLmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAuZ2xvYmFs
T2JqZWN0Q291bnQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdsb2JhbE9iamVjdEZvck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdEZvck9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nbG9i
YWxPYmplY3QoZXhlYy0+dm0oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZ2xvYmFsT2JqZWN0KTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIHJlc3VsdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEpTVmFsdWUgcHJvcGVydHkgPSBleGVjLT5hcmd1bWVu
dCgxKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAg
ICBpZiAoIXByb3BlcnR5LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHBy
b3BlcnR5KS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNT
dHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodmFsdWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIHZhbHVlLmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHZhbHVlLmdldFBy
b3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwpAQCAtMjQ4MSwx
NSArMjQ4MSwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkdldEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlciA9IGpzRHluYW1pY0Nhc3Q8R2V0dGVyU2V0dGVyKj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGpzRHluYW1pY0Nhc3Q8
R2V0dGVyU2V0dGVyKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWSghZ2V0dGVyU2V0dGVyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyIHRlc3QgZnVuY3Rp
b246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRlclNldHRlciJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdl
dHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBhcmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIi
X3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTI0OTgs
MjAgKzI0OTgsMTkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGdldHRlcik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3Rv
bVRlc3RHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZsaWVzKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsdGFCZXR3
ZWVuQnV0dGVyZmxpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiBhID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgSlNPYmplY3QqIGIgPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIGEgPSBqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIEpTT2JqZWN0KiBiID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBp
ZiAoIWEgfHwgIWIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoUE5h
TikpOwogCkBAIC0yNTIzLDIwICsyNTIyLDIwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRGVsdGFCZXR3ZWVuQnV0dGVyZmxpZXMoRXhlY1N0YXRlKiBlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihk
ZWx0YSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Ub3RhbEdDVGltZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsR0NUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAudG90YWxHQ1Rp
bWUoKS5zZWNvbmRzKCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QYXJzZUNvdW50KEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBhcnNlQ291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnbG9iYWxQYXJzZUNvdW50LmxvYWQoKSkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzV2FzbVN1cHBv
cnRlZChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Jc1dhc21TdXBwb3J0ZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1iZWRkZXIuaAppbmRleCBhMjM3OWZk
NTg5Yzg5ZGY2MzU3ZTZlNDQxYmVkMmE1MTg3MzljYTNlLi45N2JiMTBjOThlOGNmOTNlYTczZDE5
ODU5ZWE3OGE2NDlkODY2OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRW1iZWRkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1i
ZWRkZXIuaApAQCAtMzYsNyArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
CiBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseS5jcHAKaW5kZXggZDFiMzhhMTQ4YTJiNDk0MWZjZTY5MjcyNzE5M2VhY2Yx
N2EwZmQyMS4uMzk0NjRhOGFjMDMzODEzZjI3NzIwNDFlNjhkYTdkMDAzOTc0YzA2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTY5
LDkgKzY5LDkgQEAgRk9SX0VBQ0hfV0VCQVNTRU1CTFlfQ09OU1RSVUNUT1JfVFlQRShERUZJTkVf
Q0FMTEJBQ0tfRk9SX0NPTlNUUlVDVE9SKQogCiAjdW5kZWYgREVGSU5FX0NBTExCQUNLX0ZPUl9D
T05TVFJVQ1RPUgogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
Q29tcGlsZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9CiAKQEAgLTE1OCwyMyArMTU4LDIyIEBAIHN0YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxl
VmFsaWRhdGVBc3luY0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmCiAgICAg
fSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Ug
PSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAg
SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRl
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgewogICAgICAgICBhdXRvIGNhdGNoU2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNv
dXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVm
ZmVyRnJvbVZhbHVlKHZtLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogCiAg
ICAgICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAg
IHJlamVjdChleGVjLCBjYXRjaFNjb3BlLCBwcm9taXNlKTsKKyAgICAgICAgICAgIHJlamVjdChj
YWxsRnJhbWUsIGNhdGNoU2NvcGUsIHByb21pc2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmNJbnRlcm5hbChleGVjLCBwcm9taXNlLCBX
VEZNb3ZlKHNvdXJjZSkpOworICAgICAgICAgICAgd2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFz
eW5jSW50ZXJuYWwoY2FsbEZyYW1lLCBwcm9taXNlLCBXVEZNb3ZlKHNvdXJjZSkpOwogCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKICAgICB9CkBA
IC0zMDQsNDIgKzMwMyw0MSBAQCB2b2lkIEpTV2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9kdWxl
SW5zdGFudGluYXRlQXN5bmMoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pcwogICAgIENMRUFSX0FO
RF9SRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIHZvaWQoKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5SW5zdGFudGlhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKIAotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNl
RGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIHsKICAgICAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGV4
ZWMtPmFyZ3VtZW50KDEpOworICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKTsKICAgICAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9y
dEFyZ3VtZW50LmdldE9iamVjdCgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWltcG9ydEFyZ3Vt
ZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkpIHsKLSAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKKyAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChjYWxsRnJhbWUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsCiAgICAgICAg
ICAgICAgICAgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSBtdXN0
IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVu
dGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSk7CiAgICAgICAgICAgICBDTEVB
Ul9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJv
bWlzZS0+cHJvbWlzZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBKU1ZhbHVl
IGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgICAgIEpTVmFsdWUg
Zmlyc3RBcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgICAgICAgICBpZiAo
YXV0byogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGZp
cnN0QXJndW1lbnQpKQotICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9t
aXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQ
cml2YXRlTW9kdWxlS2V5KCksIFJlc29sdmU6OldpdGhJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25N
b2RlOjpGcm9tSlMpOworICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBjYWxsRnJhbWUs
IHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21KUyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29t
cGlsZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgZmlyc3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0
LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJv
bUpTKTsKKyAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGNhbGxGcmFt
ZSwgcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5
KCksIGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZElu
c3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CiAgICAgfQogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRl
RnVuYyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVy
RnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIFtiYXNlLCBieXRl
U2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgQkJRUGxhbiBwbGFuKCZ2bS53YXNtQ29udGV4dCwgQkJRUGxhbjo6VmFsaWRhdGlv
biwgUGxhbjo6ZG9udEZpbmFsaXplKCkpOwogICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRv
IHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVyZSBpZiB3ZSBkZXRlY3QgdGhhdCBzb21ldGhpbmcg
d2lsbCBPT00uCkBAIC0zNDcsMjAgKzM0NSwxOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhbi5wYXJzZUFuZFZhbGlkYXRlTW9k
dWxlKGJhc2UsIGJ5dGVTaXplKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50
ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0g
ICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Ug
PSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0KTsK
IAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVu
Y2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogICAgIHZtLnBy
b21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92
ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIGV4
ZWMsIHByb21pc2UsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBlbHNlIHsK
ICAgICAgICAgLy8gQ29tcGlsZVN0cmVhbWluZyBpcyBub3Qgc3VwcG9ydGVkIGluIGpzYywgb25s
eSBpbiBicm93c2VyIGVudmlyb25tZW50CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMzcxLDIxICszNjgsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKIAotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQ
cm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIEpTUHJv
bWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxs
RnJhbWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB7CiAgICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQg
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgICAgIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QgPSBp
bXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpbXBvcnRB
cmd1bWVudC5pc1VuZGVmaW5lZCgpICYmICFpbXBvcnRPYmplY3QpKSB7Ci0gICAgICAgICAgICBw
cm9taXNlLT5yZWplY3QoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsCisgICAgICAgICAgICBw
cm9taXNlLT5yZWplY3QoY2FsbEZyYW1lLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLAogICAg
ICAgICAgICAgICAgICJzZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVT
dHJlYW1pbmcgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpOwogICAg
ICAgICAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzk2
LDcgKzM5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0
YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSoKICAgICAgICAgICAgICAgICB2bS5w
cm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1v
dmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTg0ODg4PiBpZiB0aGVyZSdzIGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29u
dGFpbnMgYSBNZW1vcnksIHRoZW4gd2UgY2FuIGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSBy
aWdodCBtZW1vcnkgdHlwZSAoZmFzdCBvciBub3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdz
IHR5cGUuCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIGV4ZWMsIHByb21pc2Us
IGV4ZWMtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOworICAgICAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmco
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCks
IGltcG9ydE9iamVjdCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IEluc3RhbnRpYXRlU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4ganNjLCBvbmx5IGluIGJy
b3dzZXIgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKaW5kZXgg
MDE3MWMxNGFiNDczNDQwMDkwMjNhM2U0MWFhNGQ2Y2JjMGU0NjNiNS4uNzFlNDFkYzVkOGYwMDY2
NzIzMjFiNTk4NWUxMTk5NmM1ODdhNzg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHkuaApAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBKU1dlYkFzc2Vt
Ymx5IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTV2ViQXNzZW1ibHko
Vk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlD
b21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWlu
Z0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDdmMmQx
N2RmMjcyYjk3ZGJjMDYzOGYxZGY3NzBjMDkwZWE5YjJlY2IuLmM3MzY4NWNkZjNlMGFlNTUwODZl
M2ZjOTdhYTZiNjM3ZTEwNWU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3IuY3BwCkBAIC00NCwyMSArNDQsMjEgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2UKICBAZW5k
CiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFy
Z2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2Jh
bE9iamVjdCh2bSktPndlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOworICAgIEpT
VmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byogc3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5Q29tcGls
ZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJl
LCBtZXNzYWdlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPndlYkFzc2VtYmx5Q29tcGlsZUVycm9y
U3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBu
dWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkZGU0MmM1NmY3ZTU1NWNkNzYw
NDRmYTFjODMxN2VmMWIyMzBmYjk2Li5iMWU2NDlmN2JiNjczZDg4YTE2OWZmYTQwOTUzNjA1YWQ4
NTAxOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtNTgsMTEgKzU4LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlGdW5jdGlvbjo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5jdGlvbikgfTsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1
bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOwogICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gd2FzbUZ1bmN0
aW9uLT5zaWduYXR1cmVJbmRleCgpOwogICAgIGNvbnN0IFdhc206OlNpZ25hdHVyZSYgc2lnbmF0
dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAK
QEAgLTc4LDE0ICs3OCwxNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgV2FzbTo6SW5zdGFu
Y2UqIHdhc21JbnN0YW5jZSA9ICZpbnN0YW5jZS0+aW5zdGFuY2UoKTsKIAogICAgIGZvciAodW5z
aWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7
ICsrYXJnSW5kZXgpIHsKLSAgICAgICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudChhcmdJ
bmRleCk7CisgICAgICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudChhcmdJbmRl
eCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KSkgewogICAg
ICAgICBjYXNlIFdhc206OkkzMjoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShh
cmcudG9JbnQzMihleGVjKSk7CisgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJn
LnRvSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBX
YXNtOjpGdW5jcmVmOiB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24odm0sIGFyZykgJiYgIWFyZy5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKGV4ZWMsIHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdh
c20gZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcihjYWxsRnJhbWUsIHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20g
ZnVuY3Rpb24iKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBXYXNtOjpBbnlyZWY6CkBAIC05NCwxMCArOTQsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgYXJnID0gSlNWYWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV2FzbTo6RjMyOgotICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oYXJnLnRvRmxvYXQoZXhlYykpKTsKKyAgICAgICAgICAgIGFyZyA9
IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFyZy50b0Zsb2F0KGNhbGxG
cmFtZSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OkY2NDoKLSAg
ICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGFy
Zy50b051bWJlcihleGVjKSkpOworICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJp
dHdpc2VfY2FzdDx1aW50NjRfdD4oYXJnLnRvTnVtYmVyKGNhbGxGcmFtZSkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OlZvaWQ6CiAgICAgICAgIGNhc2UgV2FzbTo6
RnVuYzoKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhl
IHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGNhbGxpbmcgaW50byB0aGUgbGxpbnQgbWF5IHN0YWNr
IG92ZXJmbG93LCBhbmQgdGhlIHN0YWNrIG92ZXJmbG93CiAgICAgLy8gaGFuZGxlciBtaWdodCBy
ZWFkIHRoZSBnbG9iYWwgb2JqZWN0IGZyb20gdGhlIGNhbGxlZS4KICAgICBQcm90b0NhbGxGcmFt
ZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21G
dW5jdGlvbiwgY29udGV4dCwgYXJnQ291bnQsIGFyZ3MpOworICAgIHByb3RvQ2FsbEZyYW1lLmlu
aXQobnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCB3YXNtRnVuY3Rpb24sIGNvbnRleHQsIGFyZ0NvdW50
LCBhcmdzKTsKIAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlv
biwgYW5kIG9ubHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgogICAgIFdhc206Okluc3RhbmNl
KiBwcmV2V2FzbUluc3RhbmNlID0gdm0ud2FzbUNvbnRleHQubG9hZCgpOwpAQCAtMTI4LDcgKzEy
OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJs
eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgY29uc3QgaW50cHRyX3QgZnJhbWVT
aXplID0gKGJveGVkQXJncy5zaXplKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
cykgKiBzaXplb2YoUmVnaXN0ZXIpOwogICAgICAgICBjb25zdCBpbnRwdHJfdCBzdGFja1NwYWNl
VXNlZCA9IDIgKiBmcmFtZVNpemU7IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0
aGUgd3JhcHBlciwgYW5kIG9uZSB0byB0aGUgYWN0dWFsIHdhc20gY29kZS4KICAgICAgICAgaWYg
KFVOTElLRUxZKChzcCA8IHN0YWNrU3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQp
IDwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2bS5zb2Z0U3RhY2tMaW1pdCgpKSkpKQotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKSk7CiAgICAgfQogICAgIHZtLndhc21Db250ZXh0LnN0
b3JlKHdhc21JbnN0YW5jZSwgdm0uc29mdFN0YWNrTGltaXQoKSk7CiAgICAgQVNTRVJUKHdhc21G
dW5jdGlvbi0+aW5zdGFuY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAppbmRl
eCA2ODQyZjk1OGJkOThhODNhZDUzOTFiZGJhZjgyMmNhMzI1NjFjZTEzLi4wOGY0NGE5NzQxNGY0
YjA1Y2Y4ZjEyODUxMGZlNzg0NGIwN2Y2ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTU4LDM4ICs1OCwzOCBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzXwogCiB1c2lu
ZyBXYXNtOjpQbGFuOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIElmIG1v
ZHVsZU9iamVjdCBpcyBub3QgYSBXZWJBc3NlbWJseS5Nb2R1bGUgaW5zdGFuY2UsIGEgVHlwZUVy
cm9yIGlzIHRocm93bi4KLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFt
aWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAg
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJs
eU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJmaXJzdCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5J
bnN0YW5jZSBtdXN0IGJlIGEgV2ViQXNzZW1ibHkuTW9kdWxlIl9zLCBkZWZhdWx0U291cmNlQXBw
ZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiZmlyc3QgYXJndW1lbnQgdG8gV2ViQXNz
ZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSJfcywgZGVmYXVsdFNv
dXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSkpKTsKIAogICAgIC8vIElmIHRoZSBpbXBvcnRPYmplY3QgcGFyYW1ldGVyIGlzIG5vdCB1
bmRlZmluZWQgYW5kIFR5cGUoaW1wb3J0T2JqZWN0KSBpcyBub3QgT2JqZWN0LCBhIFR5cGVFcnJv
ciBpcyB0aHJvd24uCi0gICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogICAgIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3Qo
KTsKICAgICBpZiAoIWltcG9ydEFyZ3VtZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVj
dCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJzZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1i
bHkuSW5zdGFuY2UgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAic2Vjb25kIGFyZ3VtZW50IHRvIFdl
YkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywgZGVm
YXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1bWVu
dCkpKSk7CiAgICAgCi0gICAgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1
cmUoKSk7CisgICAgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJn
ZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUs
IGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVs
ZS0+bW9kdWxlKCkpLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CisgICAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZt
LCBjYWxsRnJhbWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtl
eSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpN
b2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGluc3RhbmNlLT5maW5h
bGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53
YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNt
V3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpD
cmVhdGlvbk1vZGU6OkZyb21KUyk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0s
IGNhbGxGcmFtZSwgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRleHQs
IGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIsICZX
YXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25Nb2Rl
OjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJseS5JbnN0YW5j
ZSIpKTsKIH0KIAogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBX
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmNwcAppbmRleCBmODFiMmExZDYxMzExYzQxZDllYTY5YTZkMTIwZTU4MjFiZmE4
NWViLi5jYTZmOTQyNTVhMWY5MzQ5ZjFiN2JmNTVmYzBlNjAyMjcxMDgxOWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0K
IAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgiCkBAIC02MSwx
MiArNjEsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBn
ZXRJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG9GdW5jRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShleGVjLCB2bSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0
SW5zdGFuY2UoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGluc3RhbmNlLT5tb2R1bGVOYW1lc3BhY2VPYmplY3QoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ3M2MyNjNkZGZkM2NkOGRjYjUwODkyOWVlZjEx
OWYwNmJkYzA1MTAuLjM0MTA4YTA5YzM0OTU3OGNjZWQyNDUzMGY3N2NkOGQzM2I0OWQwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00NCwyMSArNDQsMjEgQEAgY29u
c3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnMKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAg
YXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPndlYkFzc2VtYmx5TGlua0Vycm9yU3Ry
dWN0dXJlKCkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3Qt
PndlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2
bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShjYWxsRnJhbWUs
IHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TGlu
a0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPndlYkFzc2VtYmx5TGlua0Vycm9y
U3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxs
cHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25z
dHJ1Y3RvciogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiB0aGlz
UHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCAyMzcxMjY3YjVlMzY4
N2NhYjNjYmFkZjcxNzFhMjhkNDc0ZDA5NmI1Li5hN2MxYzYxY2EzNzliZDNjZjhmNmZlOGQ1MTUz
ZWZmOWE3MzgxMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAtNDgsMzIgKzQ4
LDMyIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNXZWJBc3NlbWJseU1lbW9yeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDEpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFj
dGx5IG9uZSBhcmd1bWVudCJfcykpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3Nl
bWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudCJfcykpKTsKIAogICAgIEpT
T2JqZWN0KiBtZW1vcnlEZXNjcmlwdG9yOwogICAgIHsKLSAgICAgICAgSlNWYWx1ZSBhcmd1bWVu
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCFhcmd1bWVudC5pc09iamVjdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3Rz
IGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3Rz
IGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7CiAgICAgICAgIG1lbW9y
eURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCiAgICAg
V2FzbTo6UGFnZUNvdW50IGluaXRpYWxQYWdlQ291bnQ7CiAgICAgewogICAgICAgICBJZGVudGlm
aWVyIGluaXRpYWwgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwotICAg
ICAgICBKU1ZhbHVlIG1pblNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBp
bml0aWFsKTsKKyAgICAgICAgSlNWYWx1ZSBtaW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoY2FsbEZyYW1lLCBpbml0aWFsKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHRv
Tm9uV3JhcHBpbmdVaW50MzIoZXhlYywgbWluU2l6ZVZhbHVlKTsKKyAgICAgICAgdWludDMyX3Qg
c2l6ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBtaW5TaXplVmFsdWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgICAgICBpZiAoIVdhc206OlBhZ2VDb3VudDo6aXNWYWxpZChzaXplKSkKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcgcGFnZSBjb3VudCBp
cyB0b28gbGFyZ2UiX3MpKSk7CiAgICAgICAgIGlmIChXYXNtOjpQYWdlQ291bnQoc2l6ZSkuYnl0
ZXMoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1v
cnlFcnJvcihleGVjKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
Y2FsbEZyYW1lKSkpOwogICAgICAgICBpbml0aWFsUGFnZUNvdW50ID0gV2FzbTo6UGFnZUNvdW50
KHNpemUpOwogICAgIH0KIApAQCAtODIsMjMgKzgyLDIzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBl
eGVjCiAgICAgICAgIC8vIEluIFdlYklETCwgInByZXNlbnQiIG1lYW5zIHRoYXQgW1tHZXRdXSBy
ZXN1bHQgaXMgdW5kZWZpbmVkLCBub3QgW1tIYXNQcm9wZXJ0eV1dIHJlc3VsdC4KICAgICAgICAg
Ly8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcwogICAg
ICAgICBJZGVudGlmaWVyIG1heGltdW0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bSIpOwotICAgICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3It
PmdldChleGVjLCBtYXhpbXVtKTsKKyAgICAgICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1v
cnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBtYXhpbXVtKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFt
YXhTaXplVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSA9
IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgbWF4U2l6ZVZhbHVlKTsKKyAgICAgICAgICAgIHVp
bnQzMl90IHNpemUgPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgbWF4U2l6ZVZhbHVl
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoIVdhc206OlBhZ2VDb3VudDo6aXNWYWxpZChzaXpl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1l
bW9yeSAnbWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiX3MpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRo
cm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5
ICdtYXhpbXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSJfcykpKTsKICAgICAgICAgICAgIG1h
eGltdW1QYWdlQ291bnQgPSBXYXNtOjpQYWdlQ291bnQoc2l6ZSk7CiAKICAgICAgICAgICAgIGlm
IChpbml0aWFsUGFnZUNvdW50ID4gbWF4aW11bVBhZ2VDb3VudCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwK
LSAgICAgICAgICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiJ21heGltdW0nIHBh
Z2UgY291bnQgbXVzdCBiZSB0aGFuIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRp
YWwnIHBhZ2UgY291bnQiX3MpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsCisgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiJ21heGltdW0nIHBhZ2UgY291bnQg
bXVzdCBiZSB0aGFuIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQiX3MpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRv
KiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKKyAg
ICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShjYWxsRnJhbWUs
IHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBS
ZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0
aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LApAQCAtMTA2LDE4ICsxMDYsMTggQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1l
bW9yeShFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1Ry
eVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7
IH0sCiAgICAgICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2Vzcywg
V2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3Vu
dCkgeyBqc01lbW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQ
YWdlQ291bnQpOyB9KTsKICAgICBpZiAoIW1lbW9yeSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGNhbGxG
cmFtZSkpKTsKIAogICAgIGpzTWVtb3J5LT5hZG9wdChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7
CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01lbW9yeSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxK
U1dlYkFzc2VtYmx5TWVtb3J5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCB0aHJvd1Njb3BlLCAiV2ViQXNz
ZW1ibHkuTWVtb3J5IikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsICJXZWJBc3NlbWJseS5NZW1vcnkiKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IqIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogdGhpc1Byb3RvdHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCAxNDQxYTliNGY1YTQyMjliNjliZTViNjY0
MGE5NzA0NDcwYzJjMDg0Li5jMTQyMTE3NTQwZWE0ZjgxMzhmOTQ0NTUyOTNhM2ZhMjdjMDQ1ZjIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIgpA
QCAtNjYsMzEgKzY2LDMxIEBAIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseU1lbW9yeSogZ2V0
TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHZhCiAgICAgcmV0dXJuIG1l
bW9yeTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9y
eVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBt
ZW1vcnkgPSBnZXRNZW1vcnkoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgSlNX
ZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGNhbGxGcmFtZSwgdm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOyAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgCi0gICAgdWludDMyX3QgZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBp
bmdVaW50MzIoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKLSAgICBXYXNtOjpQYWdlQ291bnQgcmVz
dWx0ID0gbWVtb3J5LT5ncm93KHZtLCBleGVjLCBkZWx0YSk7CisgICAgV2FzbTo6UGFnZUNvdW50
IHJlc3VsdCA9IG1lbW9yeS0+Z3Jvdyh2bSwgY2FsbEZyYW1lLCBkZWx0YSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihyZXN1bHQucGFnZUNvdW50KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGV4ZWMs
IHZtLCBleGVjLT50aGlzVmFsdWUoKSk7IAorICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9y
eSA9IGdldE1lbW9yeShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihn
bG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCkpOwogfQogCiBXZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZSogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IuY3BwCmluZGV4IDZiYWI5NGVjOTlkYzBmZjMxNzgwNmQ4YzVkOWNlMjQzMzdkZjJiOTUuLmVi
ZmU3YTc3MjgxYjM5YWNmYTY0NDI1MjM5NmMyYmQ0MmYxMTA2NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IuY3BwCkBAIC00Niw5ICs0Niw5IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseU1vZHVsZUltcG9ydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvci5sdXQuaCIKQEAgLTY1LDIzICs2NSwyMiBAQCBjb25zdCBDbGFzc0luZm8g
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbgogIEBlbmQKICAqLwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSkpOworICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0
aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
Y2FsbEZyYW1lKSkpOwogCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5h
bWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpT
V2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3Nl
bWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1v
ZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJh
bWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGggbm9uIFdl
YkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKIAotICAgIGNvbnN0IFN0cmluZyBzZWN0
aW9uTmFtZVN0cmluZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVj
KTsKKyAgICBjb25zdCBTdHJpbmcgc2VjdGlvbk5hbWVTdHJpbmcgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0FycmF5KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICBj
b25zdCBhdXRvJiBjdXN0b21TZWN0aW9ucyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5j
dXN0b21TZWN0aW9uczsKQEAgLTg5LDkgKzg4LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgaWYgKFN0cmluZzo6ZnJvbVVURjgoc2VjdGlvbi5uYW1lKSA9PSBzZWN0aW9uTmFtZVN0
cmluZykgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KHNlY3Rpb24ucGF5bG9hZC5kYXRhKCksIHNlY3Rpb24ucGF5bG9hZC5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoY2Fs
bEZyYW1lKSkpOwogCi0gICAgICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgSlNBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHVzaChjYWxsRnJhbWUsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZh
dWx0KSwgV1RGTW92ZShidWZmZXIpKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05OSwxNyArOTgsMTYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rp
b25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBv
cnRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlNb2R1bGVJbXBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nh
c3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9k
dWxlKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMgY2Fs
bGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0
cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOwogCi0g
ICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBn
bG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
Y2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKIAogICAgIGNvbnN0IGF1dG8mIGltcG9ydHMgPSBtb2R1bGUt
Pm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0czsKQEAgLTExOCwxMiArMTE2LDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5hbWUiKTsKICAgICAgICAgSWRlbnRpZmllciBraW5kID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImtpbmQiKTsKICAgICAgICAgZm9yIChjb25zdCBXYXNtOjpJbXBvcnQmIGlt
cCA6IGltcG9ydHMpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChjYWxsRnJhbWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIG1vZHVsZSwganNT
dHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wLm1vZHVsZSkpKTsKICAgICAgICAgICAgIG9i
ai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXAu
ZmllbGQpKSk7CiAgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmco
dm0sIFN0cmluZyhtYWtlU3RyaW5nKGltcC5raW5kKSkpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+
cHVzaChleGVjLCBvYmopOworICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGNhbGxGcmFtZSwgb2Jq
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTEzMSwxNyArMTI5LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZt
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0g
anNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
V2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1v
ZHVsZSBhcmd1bWVudCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJh
bWUsICJXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1i
bHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOwogCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAg
IGNvbnN0IGF1dG8mIGV4cG9ydHMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0
czsKQEAgLTE0OSwxMSArMTQ2LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgSWRlbnRpZmll
ciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiKTsKICAgICAgICAgSWRl
bnRpZmllciBraW5kID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtpbmQiKTsKICAgICAg
ICAgZm9yIChjb25zdCBXYXNtOjpFeHBvcnQmIGV4cCA6IGV4cG9ydHMpIHsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICAgICAg
b2JqLT5wdXREaXJlY3Qodm0sIG5hbWUsIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KGV4
cC5maWVsZCkpKTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmlu
Zyh2bSwgU3RyaW5nKG1ha2VTdHJpbmcoZXhwLmtpbmQpKSkpOwotICAgICAgICAgICAgcmVzdWx0
LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBv
YmopOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTYxLDIyICsxNTgsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICAKLSAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVy
RnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoV2Vi
QXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKGV4ZWMsIFdURk1vdmUoc291
cmNlKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShX
ZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoY2FsbEZyYW1lLCBXVEZN
b3ZlKHNvdXJjZSkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJXZWJBc3NlbWJseS5Nb2R1bGUiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJseS5Nb2R1bGUiKSk7CiB9CiAKIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOGRlOWQyZGQwODI4MDZhMWNjOGYzMjQ3MjM4MmJi
ZjIyMzhhYTZkNS4uYTJmNDg5ZTRmNzQyMTc4ODE5ZWQwM2FhODVlZjk3NmY4NjEwM2E3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDIzICs0NCwyMyBA
QCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZQogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVu
dCgwKTsKLSAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogbWVzc2FnZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0g
bWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPndlYkFzc2VtYmx5UnVu
dGltZUVycm9yU3RydWN0dXJlKCkpOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0
ZShleGVjLCB2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG1lc3NhZ2VTdHJpbmcpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoY2Fs
bEZyYW1lLCB2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG1lc3NhZ2VTdHJpbmcpKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+
dm0oKSktPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUs
IG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJh
bWUsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2Up
KTsKIH0KIAogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDVjOGViMTFjOGE2OWI4OWViMmY5Y2Q4YzFlZTM1
ZTQwYWMyNjJkMS4uNDlmZTVlMmI2NmVlMmU4MGY1NTU4MDdiODMyNjllZjAzZTc4ZWE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCkBAIC00NSw3MCArNDUsNzAgQEAgY29uc3QgQ2xhc3NJ
bmZvIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmYKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTT2JqZWN0KiBtZW1vcnlEZXNjcmlwdG9yOwogICAgIHsKLSAgICAgICAgSlNWYWx1ZSBhcmd1
bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCFhcmd1bWVudC5pc09iamVjdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVj
dHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Nj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0
cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOwogICAgICAgICBtZW1v
cnlEZXNjcmlwdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4oYXJndW1lbnQpOwogICAgIH0KIAogICAg
IFdhc206OlRhYmxlRWxlbWVudFR5cGUgdHlwZTsKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIg
ZWxlbWVudElkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVsZW1lbnQiKTsKLSAg
ICAgICAgSlNWYWx1ZSBlbGVtZW50VmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywg
ZWxlbWVudElkZW50KTsKKyAgICAgICAgSlNWYWx1ZSBlbGVtZW50VmFsdWUgPSBtZW1vcnlEZXNj
cmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBlbGVtZW50SWRlbnQpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBTdHJpbmcg
ZWxlbWVudFN0cmluZyA9IGVsZW1lbnRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAg
U3RyaW5nIGVsZW1lbnRTdHJpbmcgPSBlbGVtZW50VmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImZ1bmNyZWYiIHx8IGVsZW1lbnRT
dHJpbmcgPT0gImFueWZ1bmMiKQogICAgICAgICAgICAgdHlwZSA9IFdhc206OlRhYmxlRWxlbWVu
dFR5cGU6OkZ1bmNyZWY7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImFueXJl
ZiIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6QW55cmVmOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1i
bHkuVGFibGUgZXhwZWN0cyBpdHMgJ2VsZW1lbnQnIGZpZWxkIHRvIGJlIHRoZSBzdHJpbmcgJ2Z1
bmNyZWYnIG9yICdhbnlyZWYnIl9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZSBleHBlY3RzIGl0cyAnZWxlbWVudCcgZmll
bGQgdG8gYmUgdGhlIHN0cmluZyAnZnVuY3JlZicgb3IgJ2FueXJlZiciX3MpKSk7CiAgICAgfQog
CiAgICAgSWRlbnRpZmllciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiaW5pdGlhbCIpOwotICAgIEpTVmFsdWUgaW5pdGlhbFNpemVWYWx1ZSA9IG1lbW9yeURlc2Ny
aXB0b3ItPmdldChleGVjLCBpbml0aWFsSWRlbnQpOworICAgIEpTVmFsdWUgaW5pdGlhbFNpemVW
YWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChjYWxsRnJhbWUsIGluaXRpYWxJZGVudCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB1aW50MzJfdCBpbml0aWFsID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBpbml0aWFsU2l6
ZVZhbHVlKTsKKyAgICB1aW50MzJfdCBpbml0aWFsID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxs
RnJhbWUsIGluaXRpYWxTaXplVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBt
ZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVuZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHld
XSByZXN1bHQuCiAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRp
Y3Rpb25hcmllcwogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOwogICAgIElkZW50aWZp
ZXIgbWF4aW11bUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iKTsK
LSAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBt
YXhpbXVtSWRlbnQpOworICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRv
ci0+Z2V0KGNhbGxGcmFtZSwgbWF4aW11bUlkZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghbWF4U2l6ZVZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgbWF4aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhl
YywgbWF4U2l6ZVZhbHVlKTsKKyAgICAgICAgbWF4aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIo
Y2FsbEZyYW1lLCBtYXhTaXplVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChpbml0aWFsID4gKm1h
eGltdW0pIHsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsICInbWF4aW11bScgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
dGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLAorICAgICAgICAg
ICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiJ21heGltdW0nIHByb3BlcnR5IG11
c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlhbCcgcHJvcGVydHkiX3Mp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJs
ZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUoaW5pdGlhbCwgbWF4aW11bSwgdHlwZSk7CiAgICAg
aWYgKCF3YXNtVGFibGUpIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLAotICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwKKyAgICAgICAg
ICAgIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIl9z
KSkpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+d2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUu
cmVsZWFzZU5vbk51bGwoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0s
IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVs
ZWFzZU5vbk51bGwoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVRhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJXZWJBc3NlbWJseS5UYWJsZSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIikpOwogfQogCiBXZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIHRoaXNQ
cm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCmluZGV4IGUxYzFmYmFjMTU2ODRiYTQxOWU4
NmI1NGEwYzlhNzRjMzkyOTAwMWMuLjA5OWM0MGY5NTBiN2U5ZmYxYTYxOTg1MDhjOGM1MmE5YTA1
OTk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3Ro
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVBy
b3RvRnVuY1NldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNHcm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1
dC5oIgpAQCAtNjcsNzIgKzY3LDcyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1i
bHlUYWJsZSogZ2V0VGFibGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3Ro
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxG
cmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih0YWJsZS0+bGVuZ3RoKCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlU
YWJsZVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhl
Yywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxl
ID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSk7CisgICAgdWludDMyX3QgZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVpbnQzMl90IG9sZExlbmd0aCA9IHRh
YmxlLT5sZW5ndGgoKTsKIAogICAgIGlmICghdGFibGUtPmdyb3coZGVsdGEpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93IGNv
dWxkIG5vdCBncm93IHRoZSB0YWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90
IGdyb3cgdGhlIHRhYmxlIl9zKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihvbGRMZW5ndGgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxG
cmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICB1aW50MzJfdCBpbmRleCA9
IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQz
Ml90IGluZGV4ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgaWYgKGluZGV4ID49IHRhYmxlLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVj
dHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUiX3MpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxl
LnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9m
IHRoZSB0YWJsZSJfcykpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFibGUtPmdl
dChpbmRleCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFz
c2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5h
cmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
IAotICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChpbmRleCA+PSB0YWJs
ZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHku
VGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5n
dGggb2YgdGhlIHRhYmxlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxs
RnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdl
ciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUiX3MpKSk7CiAKICAgICBpZiAodGFi
bGUtPnRhYmxlKCktPmFzRnVuY3JlZlRhYmxlKCkpIHsKICAgICAgICAgV2ViQXNzZW1ibHlGdW5j
dGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiog
d2FzbVdyYXBwZXJGdW5jdGlvbjsKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBw
ZXJGdW5jdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1i
bHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUg
bnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcykpKTsKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUu
cHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBh
biBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcykpKTsKIAogICAgICAgICBpZiAo
dmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICB0YWJsZS0+Y2xlYXIoaW5kZXgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uY3BwCmluZGV4IGNkZTRmM2NmMjYwNGFkZDc2Y2MwNGZiMjI0ZjlhNTJiZDJk
YTAzNzYuLmIxZDJlNGVlYTE1Y2MxZTNlY2MwMzhkMTk4ZWY1NTlkYzNiNGE1ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIH07CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
KiB3YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKTsKKyAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbUZ1bmN0
aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBKU09iamVjdCogZnVuY3Rpb24g
PSB3YXNtRnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5j
dGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoZXhlYykpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJh
bWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3Qo
Y2FsbEZyYW1lKSkpKTsKIH0KIAogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OldlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24g
aW1wb3J0YWJsZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckVycm9yQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9y
Q29kZS5oCmluZGV4IDNmMDZhNmJmZjExNjhhMjU3NjlkZGE2Y2M2YmIzZjcyYzQyYjNhOWUuLjQ0
YjY4YjJmMmNjYjYyMzZkNjlkZWNkNGI5OGJhNGE2NDlmMDA4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKQEAgLTI3LDggKzI3LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
T2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgWWFyciB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oCmluZGV4IGI2OGFkOTA5NzViOGY5ZDFmMjVkMDJiNmJhZmM0ZWQ3ZWQ2MjY4ZTQuLjNhOTI1
MDdjZmU3ZWIzN2YyMzNjYTA2NjJmODFkNDk3MzRhODFmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtMzYsOCArMzYsOSBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24u
aAppbmRleCAwYzRmYTI0NzA5ZTJiNzAzMmVkNDhmNDIzYjgwMWMxYWIwZjI1MTgwLi5iNDMwZDYz
NjUzMTBhODlhN2Y5NTQ0M2UwZTY4MjQ2OTdjZWVmNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaApAQCAt
MzEsOCArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBPQkpDX0NMQVNTIFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggNWM4M2EzN2ExYjgzN2NlMzE3NWY3NDljMGUxNzUzYjU5NGI1MmQyNi4uMjA2
YzFkNTlmM2I3ZWRmZmFmZjQxOGFiNmUwYTY1YThiYjljN2JkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTM2LDggKzM2LDkgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsK
K2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggYTQ0NzEzMjQwM2I1N2VlYjI4NmQ0ZDJm
YWE0MWJlMGI5YzA0YzY0ZC4uNGUyMDUzNWM1NmFmMmU3ZGFkYWMwMDllNzZhZjAyYzM5MGExYzNk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApA
QCAtMzQsOCArMzQsOSBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNs
YXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5o
CmluZGV4IDU1M2E0Mjk3MTUwMjgxZmYwN2YzNDRhOGZmYmY3NDUwNzYwZDZmYzYuLjg4MWVmNjQ0
OWFjMzNmYjEzMGNlZGQxOWZmMGQ1YjQ1NDVmNDU1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIklE
QlJlcXVlc3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5n
ZS5oCmluZGV4IDc3YWEzNzFmZWUzNzhhMTIxMjY1ZTRiMmE0YTUwNjI2MDBlYjZiMGQuLmE0OWVi
NDFhZGFmMGFhNDU1MTk0Yjk2MDlkOTNmZGQ4ZGZlZjY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaApAQCAtMzMsOCArMzMsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCAyOWY5NTkxZjNkZTNjODQ5
ZmM2NGRkNjVhMTYyMmMwYjM5OGM3MDIwLi42MWE5NTBlMTRlYzMzZjMxODhkYWZiYzMzMzE5MWVk
ZWZjNWM5ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmgKQEAgLTM0LDkgKzM0LDEwIEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5oCmluZGV4IGUxYTFhYWEyNWZhNWQ3ZmEzYTMyOTEwNmI0MDZkZWQz
ZDRjMjNiY2YuLjZhMmFhMjQxZWYxODQ0ZDNiZGU3NGQyMzI3ZWMxM2RiZmI3MzhlYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsK
K2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggZjA2N2NiMGE4MzhmZTQxMGE1ZWYzMzE0
ZDJiMGQ5NDRiNmU1MDU1Zi4uMmZiYTMyNjk0ZWM5NTkwODM1MzE5NDlmNTdhZDI4ZTA1MTQ3ZWIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaApAQCAtMzIsOSArMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmgKaW5kZXggZWJkYjhhOTAwZDE3NWM2ODAzZDFi
YWFlOWI5YzM2MWZiMzJkMTM1MS4uN2YyZmUxN2NmMDljYjU0ZWZkMTg4YzUzMDRjM2MxNzkyY2Qz
ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
U2VjdXJpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdT
ZWN1cml0eS5oCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2lu
ZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5o
CmluZGV4IDRjYjViZjBhMGRiM2M4Mzk1NGI4MjNkNjM5OWU2YjM0Mzk4MGJkYzYuLmU0ZWI0NzMy
MzA5NGY5M2NmNjZlZWUyZDllOGI0OGFmZWFkMDQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDUsNyArNDUs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUJ1aWx0aW5Db25zdHJ1
Y3RvciA6IHB1YmxpYyBKU0RPTUJ1aWx0aW5DbwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsK
LSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChK
U0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTT2JqZWN0Jik7CiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Kik7CkBAIC0xMTEsMTEgKzExMSwxMSBA
QCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6
aXNDb21wbGV4V3JhcHBlciwgSlNDOjpKUwogICAgIHJldHVybiBjb250ZXh0ID8gY3JlYXRlV3Jh
cHBlcjx0eXBlbmFtZSBKU0NsYXNzOjpET01XcmFwcGVkPihjb25zdHJ1Y3Rvci5nbG9iYWxPYmpl
Y3QoKSwgSlNDbGFzczo6RE9NV3JhcHBlZDo6Y3JlYXRlKCpjb250ZXh0KSkgOiBudWxscHRyOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+Ojpjb25zdHJ1
Y3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUJ1aWx0aW5Db25zdHJ1
Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgYXV0byogY2FzdGVk
VGhpcyA9IEpTQzo6anNDYXN0PEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpOwotICAgIHJldHVybiBjYXN0ZWRUaGlzLT5jYWxsQ29uc3RydWN0b3IoKnN0YXRlLCBj
cmVhdGVKU09iamVjdCgqY2FzdGVkVGhpcykpOworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBKU0M6OmpzQ2FzdDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPmNhbGxDb25z
dHJ1Y3RvcigqY2FsbEZyYW1lLCBjcmVhdGVKU09iamVjdCgqY2FzdGVkVGhpcykpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDb25zdHJ1Y3RUeXBlIEpTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxs
KiwgSlNDOjpDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCmluZGV4IDAxNzY3YTk0MGIwYzVhMWQ5ZWFi
MTA1NzEyNDJjZGI0ZjY1YzgzNjIuLjk2NTYzNmFkOTQ2MWM3MGMwODM3NGJjYWQ0OTIzMDBmNTBk
OGY3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9y
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNE
T01Db25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTUNvbnN0cnVjdG9yQmFzZQogICAgIC8vIFVzdWFs
bHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRp
YWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsgfQogICAgIC8v
IE11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KLSAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNT
dGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz4q
IEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcApp
bmRleCA5NmJhZDI0NTY3MWRkOTAyZWZlNGMzZTJiZmRjMTM0MGRhZjVjYTQ0Li4yNjM0MjIxOGNl
Njg4YWEyNjRmY2QwMGI1NWRkZGU2MzQ3OTg1MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEpTRE9NQ29uc3RydWN0b3JCYXNlKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciJfcyk7Cisg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNvbnN0cnVjdG9yIHJlcXVpcmVz
ICduZXcnIG9wZXJhdG9yIl9zKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgKaW5kZXggZjBiMTAzZjBjNTlhNWExZDg0
YjFiZmE3MTc3NGJjNWFhOTkzN2JkMC4uYjkwMTFkZWQyOWE2MDY0ODQ2ZWZkZjk4ZGYxNjg3MGNm
YTRmYzM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oCkBAIC00NiwxMSArNDYsMTEgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUgOiBwdWJsaWMgSlNET00KICAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2gg
c3BlY2lhbGl6YXRpb24gY2xhc3MuCiAgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7IH0KIAotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBl
eGVjKQorICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRo
cm93VHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICB7Ci0gICAgICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgSlNDOjp0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIklsbGVnYWwgY29uc3RydWN0b3IiX3MpOworICAgICAgICBK
U0M6OnRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbGxlZ2FsIGNvbnN0cnVjdG9y
Il9zKTsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCmluZGV4IDgwMzBkMzU0MGY1YjE0NjQ5NGM1MDZiYmJjZmI4ZTI0MzJhZjE3ZWIu
LmY5NzAxNzQ5MWVjYjRkOGMzYWYyNjc0ZTZlYzNiNzZiY2UwYjczNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU0LDkgKzU0
LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJv
ckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBp
c1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUdldHRl
clR5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNET01HbG9i
YWxPYmplY3Q6OnNfaW5mbyA9IHsgIkRPTUdsb2JhbE9iamVjdCIsICZKU0dsb2JhbE9iamVjdDo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NR2xvYmFs
T2JqZWN0KSB9OwogCkBAIC03NSwzOSArNzUsMzkgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjZWxsKS0+SlNET01HbG9iYWxPYmplY3Q6On5KU0RPTUdsb2JhbE9iamVjdCgpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMo
RXhlY1N0YXRlKiBleGVjU3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VU
aGlzVHlwZUVycm9yRm9yQnVpbHRpbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4ZWNTdGF0ZSk7Ci0gICAgQVNTRVJU
KGV4ZWNTdGF0ZS0+YXJndW1lbnRDb3VudCgpID09IDIpOwotICAgIFZNJiB2bSA9IGV4ZWNTdGF0
ZS0+dm0oKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPT0gMik7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW50
ZXJmYWNlTmFtZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0U3RyaW5nKGV4
ZWNTdGF0ZSk7CisgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIGF1dG8gZnVuY3Rpb25OYW1lID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgxKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsKKyAgICBhdXRvIGZ1bmN0aW9uTmFtZSA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNy
ZWF0ZVR5cGVFcnJvcihleGVjU3RhdGUsIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZh
Y2VOYW1lLnV0ZjgoKS5kYXRhKCksIGZ1bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRmOCgpLmRhdGEoKSwgZnVuY3Rpb25O
YW1lLnV0ZjgoKS5kYXRhKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSogZXhlY1N0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgQVNTRVJUKGV4ZWNTdGF0ZSk7Ci0gICAgQVNTRVJUKGV4ZWNTdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpID09IDIpOwotICAgIFZNJiB2bSA9IGV4ZWNTdGF0ZS0+dm0oKTsKKyAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMik7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGV4ZWNTdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBpbnRl
cmZhY2VOYW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIGF1dG8gYXR0cmli
dXRlTmFtZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWNT
dGF0ZSk7CisgICAgYXV0byBhdHRyaWJ1dGVOYW1lID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwogCi0gICAgYXV0byBlcnJvciA9IHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihjcmVh
dGVUeXBlRXJyb3IoZXhlY1N0YXRlLCBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2FnZShpbnRlcmZh
Y2VOYW1lLnV0ZjgoKS5kYXRhKCksIGF0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpKTsKKyAg
ICBhdXRvIGVycm9yID0gc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNyZWF0ZVR5cGVFcnJv
cihjYWxsRnJhbWUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRm
OCgpLmRhdGEoKSwgYXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkpOwogICAgIGVycm9yLT5z
ZXROYXRpdmVHZXR0ZXJUeXBlRXJyb3IoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVy
cm9yKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEV4ZWNTdGF0ZSopCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZWFk
YWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSXRlcmF0b3IuaAppbmRleCAyNzA5YjFmYjk4MGYxNzAzOGRjYjljN2E4NDc1Njc5
OWNlMmE0ZWJkLi5hZDlmYTg1MTc0N2IzNmJmMjk0YTQyYjBlNjQ2ZDk5NWZmMWJmYTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCkBAIC02NCw3ICs2NCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+
IGNsYXNzIEpTRE9NSXRlcmF0b3JQcm90b3R5CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG5leHQoSlNDOjpFeGVjU3RhdGUq
KTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG5leHQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIHByaXZhdGU6CiAgICAgSlNE
T01JdGVyYXRvclByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpIHsgfQpAQCAtMjQ2LDE2ICsyNDYsMTYgQEAgSlNDOjpK
U1ZhbHVlIEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz46Om5leHQoSlND
OjpFeGVjU3RhdGUmIHN0YXQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyLCB0eXBl
bmFtZSBJdGVyYXRvclRyYWl0cz4KLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6Vk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8gaXRlcmF0b3IgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01JdGVy
YXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPio+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8gaXRlcmF0b3IgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01JdGVyYXRvcjxK
U1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQ2Fubm90IGNhbGwgbmV4dCgpIG9uIGEgbm9u
LUl0ZXJhdG9yIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNhbm5vdCBjYWxsIG5leHQoKSBv
biBhIG5vbi1JdGVyYXRvciBvYmplY3QiX3MpKTsKIAotICAgIHJldHVybiBKU0M6OkpTVmFsdWU6
OmVuY29kZShpdGVyYXRvci0+bmV4dCgqc3RhdGUpKTsKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
OjplbmNvZGUoaXRlcmF0b3ItPm5leHQoKmNhbGxGcmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAyNjVlNmQz
ZTM0Y2MwNDEzMGEyMGU2NjBhN2I1Y2M1ZTgxN2RhMDU0Li5kM2M4N2FiNjhlYzExYzI0MjI2YTYy
MzUzZGM0MTIxNTY4NTY3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaApAQCAtNDgsNyArNDgsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTU5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01D
b25zdHJ1Y3RvcgogICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlv
biBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpIHsgfQogICAgIC8vIE11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFs
aXphdGlvbiBjbGFzcy4KLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdChKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
RE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xh
c3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmNwcAppbmRleCAyMjZiZWY5OGEzNDQyYTZkMGY0MzcxODI3OWQyYzkwNTdm
NTAwYzhiLi5lMWVlNmU3MzM5NTFiNWVmNGI3NWIwOTkyZTgxOTZmOTQ3NjQ5NzNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgdm9pZCBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2IKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8qIGhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEV4ZWNTdGF0ZSopIG11dGFibGUgeworICAgIGF1dG8qIGhh
bmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcgeyB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IGNkMWVkYmEwOWE3ZjI3YmQyZDRmZjViOGQxYmRiYmY3ZDBhZWU0N2UuLmUzY2My
ZjljNDExMTBjZGFlOGE1NDcwMTE0NTM1NGYxZDA0ZjY0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTY0LDggKzY0LDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uU2hvd01vZGFsRGlh
bG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvblNob3dNb2RhbERpYWxv
ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC02MzEsOSArNjMxLDkgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3Qo
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhzdGF0ZS52bSgpLCBz
dGF0ZS50aGlzVmFsdWUoKS50b1RoaXMoJnN0YXRlLCBOb3RTdHJpY3RNb2RlKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3Bl
bkRhdGFiYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNET01X
aW5kb3c+OjpjYWxsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHk+
KCpzdGF0ZSwgIm9wZW5EYXRhYmFzZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNET01X
aW5kb3c+OjpjYWxsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHk+
KCpjYWxsRnJhbWUsICJvcGVuRGF0YWJhc2UiKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
b3BlbkRhdGFiYXNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRD
dXN0b20uY3BwCmluZGV4IDRiOWNlMGEzNTBjZDU3Y2VmODg5MGU2ODZjZGJlYmVhODgzZjUwYmIu
LjM0NjI4MTQyMmYzNzBiNzdkNWVhN2NiNDFmMWQxZmIwZTA3NDA3ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0SlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YTI5YmEyNWVjNjU0YTE3YmVlNDg1ZDg2OGQ5YWRjODBk
ZWMxNzc1Li40MGJiMmMyNmIyNWQyOWExMTliNDBhOWIyZWYxYTljYzY4Y2QyNzdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApA
QCAtNDEsOSArNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVu
dChFeGVjU3RhdGUmIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTSFRNTEVsZW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlJiBl
eGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0RPTUNvbnN0cnVjdG9yQmFzZSo+KGV4
ZWMuanNDYWxsZWUoKSk7CkBAIC01Niw4ICs1Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUmIGV4ZWMpCiAKICAgICBKU1Zh
bHVlIG5ld1RhcmdldFZhbHVlID0gZXhlYy50aGlzVmFsdWUoKTsKICAgICBhdXRvKiBuZXdUYXJn
ZXQgPSBuZXdUYXJnZXRWYWx1ZS5nZXRPYmplY3QoKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihuZXdUYXJnZXQtPmdsb2JhbE9iamVjdCh2bSkp
OwotICAgIEpTVmFsdWUgaHRtbEVsZW1lbnRDb25zdHJ1Y3RvclZhbHVlID0gSlNIVE1MRWxlbWVu
dDo6Z2V0Q29uc3RydWN0b3Iodm0sIGdsb2JhbE9iamVjdCk7CisgICAgYXV0byogbmV3VGFyZ2V0
R2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obmV3VGFyZ2V0LT5nbG9i
YWxPYmplY3Qodm0pKTsKKyAgICBKU1ZhbHVlIGh0bWxFbGVtZW50Q29uc3RydWN0b3JWYWx1ZSA9
IEpTSFRNTEVsZW1lbnQ6OmdldENvbnN0cnVjdG9yKHZtLCBuZXdUYXJnZXRHbG9iYWxPYmplY3Qp
OwogICAgIGlmIChuZXdUYXJnZXRWYWx1ZSA9PSBodG1sRWxlbWVudENvbnN0cnVjdG9yVmFsdWUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgIm5ldy50YXJn
ZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiX3MpOwogCkBAIC03
NiwxNCArNzYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hU
TUxFbGVtZW50KEV4ZWNTdGF0ZSYgZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJmV4ZWMsIHNjb3BlLCAibmV3LnRhcmdldCBkb2VzIG5vdCBkZWZpbmUgYSBjdXN0b20gZWxl
bWVudCJfcyk7CiAKICAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVu
dCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVy
ZTxKU0hUTUxFbGVtZW50Pih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKm5ld1Rh
cmdldEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSgmZXhlYywgbmV3VGFyZ2V0
VmFsdWUsIGJhc2VTdHJ1Y3R1cmUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQg
PSBIVE1MRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnRJbnRlcmZhY2UtPm5hbWUoKSwgZG9jdW1lbnQp
OwogICAgICAgICBlbGVtZW50LT5zZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KCplbGVtZW50SW50
ZXJmYWNlKTsKLSAgICAgICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRl
KG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7Ci0gICAg
ICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpz
RWxlbWVudCk7CisgICAgICAgIGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0
ZShuZXdFbGVtZW50U3RydWN0dXJlLCBuZXdUYXJnZXRHbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0
KCkpOworICAgICAgICBjYWNoZVdyYXBwZXIobmV3VGFyZ2V0R2xvYmFsT2JqZWN0LT53b3JsZCgp
LCBlbGVtZW50LnB0cigpLCBqc0VsZW1lbnQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzRWxlbWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCAxMGQ2Zjk0MjNmZGY1
NWE0NzUyZTNkYmY5ZGM2OWM2ODMwYWQ5MWFkLi40Mjk1ODllODhkMDcyMWQwZmUyOWU2NzI4MTU3
ZTQ1ZWQ0YzM3MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTEzOSwyNiArMTM5LDI2IEBAIGJvb2wg
cGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQbHVnaW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFBsdWdpbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0hUTUxFbGVtZW50
KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAg
ICBKU0hUTUxFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gR2V0IHRoZSBwbHVnLWluIHNjcmlwdCBvYmplY3Qu
Ci0gICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBl
bGVtZW50KTsKKyAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0
KGNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAgQVNTRVJUKHNjcmlwdE9iamVjdCk7CiAKLSAgICBz
aXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3Qg
YXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50TGlzdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50Q291bnQ7IGkrKykKLSAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChleGVjLT5hcmd1
bWVudChpKSk7CisgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQoY2FsbEZyYW1lLT5hcmd1bWVu
dChpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudExpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZXhlYy0+dm0oKSwgc2NyaXB0T2JqZWN0LCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHNjcmlwdE9iamVjdCwgY2FsbERh
dGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7CiAKICAgICAvLyBD
YWxsIHRoZSBvYmplY3QuCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIHNjcmlwdE9i
amVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBleGVjLT50aGlzVmFsdWUoKSwgYXJndW1lbnRMaXN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBzY3JpcHRPYmplY3QsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgYXJndW1lbnRMaXN0KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcAppbmRleCA4ZTlj
YjllYjk0NjM5NGY1ODkzODNiYjQ1NjhjMmVkYTk1YjkzMzE2Li4yY2QwMmE4NWRiYjJhYjI4YmI2
ZDdhNmJlN2ZhMzBjZjkyY2VlOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkFuaW1hdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20uY3BwCkBAIC01Miw5ICs1Miw5IEBAIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBX
ZWJBbmltYXRpb24mIHZhCiAgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFs
dWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQW5p
bWF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTV2ViQW5pbWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGpzQ29u
c3RydWN0b3IgPSBqc0Nhc3Q8SlNET01Db25zdHJ1Y3RvckJhc2UqPihzdGF0ZS5qc0NhbGxlZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggOWVkMTBlZTg3YTE4MjQzYzgxOWUwN2ZjNTZjYzUyOWE4ZDFmNTJkMS4uNTM2NGQ0ZmJl
YWZhZjZmNDdiNzY3YTIwYzg1OGJiY2RhYmRiZjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI4MCwxOCArMjgwLDE4IEBAIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAKICAgICBSZWZQdHI8TG9hZGFibGVNb2R1bGVTY3JpcHQ+
IG1vZHVsZVNjcmlwdCgmbW9kdWxlU2NyaXB0UmVmKTsKIAotICAgIGF1dG8mIGZ1bGZpbGxIYW5k
bGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5k
b3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVTY3JpcHRdKEV4ZWNTdGF0ZSogZXhlYykgLT4gSlND
OjpFbmNvZGVkSlNWYWx1ZSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byYgZnVsZmlsbEhhbmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZt
KCksIHByb3h5LndpbmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIC0+IEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgSWRlbnRpZmll
ciBtb2R1bGVLZXkgPSBqc1ZhbHVlVG9Nb2R1bGVLZXkoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGpzVmFsdWVUb01vZHVsZUtleShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBtb2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRDb21wbGV0
ZWQoKm1vZHVsZUtleS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0pOwogCi0gICAgYXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0
cmluZygpLCBbbW9kdWxlU2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICAgICAgSlNWYWx1ZSBlcnJvclZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisgICAgYXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpj
cmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2Ny
aXB0XShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkg
eworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIEpTVmFsdWUg
ZXJyb3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChlcnJvclZh
bHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6YXNPYmpl
Y3QoZXJyb3JWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBmYWlsdXJlS2luZFZhbHVl
ID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZt
LmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygpLmZhaWx1cmVLaW5kUHJpdmF0ZU5hbWUoKSkpIHsK
QEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2Ny
aXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAgICAgICAgICAg
TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlIHsKICAgICAgICAgICAgICAgICBNZXNzYWdl
U291cmNlOjpKUywKICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2ZWw6OkVycm9yLAotICAgICAg
ICAgICAgICAgIHJldHJpZXZlRXJyb3JNZXNzYWdlKCpleGVjLCB2bSwgZXJyb3JWYWx1ZSwgc2Nv
cGUpLAorICAgICAgICAgICAgICAgIHJldHJpZXZlRXJyb3JNZXNzYWdlKCpjYWxsRnJhbWUsIHZt
LCBlcnJvclZhbHVlLCBzY29wZSksCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDE2YmU3YzgyNTIwYjJmNzhi
OThmMGU4NWYwMDAyMmM4MzRlZmRkZmMuLmRkMTNjN2QzMzExMjI5NzNjYWJkZDM1YjM2MmU1ZTNi
YTcxMGJjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTQwLDEwICs0MCwxMSBAQCBPQkpDX0NMQVNTIFdlYlNjcmlwdE9iamVjdDsKIHN0
cnVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTSW50ZXJuYWxQcm9t
aXNlOwogY2xhc3MgSlNNb2R1bGVSZWNvcmQ7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiBjbGFzcyBJbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggYTYwNjZmNGNlMzk5
OTk2YzY1NGRiNjAzYzBhNDcyNGRkMDg0MDM2OC4uMjc5ZjYyZmM5ZjE5ODMxYTJhNjEyNTA3N2Q2
OTJmNTgxMGRmYzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmgKQEAgLTM0LDExICszNCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiBjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTTW9kdWxlTG9hZGVyOwogY2xhc3Mg
U291cmNlT3JpZ2luOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDE1Mzg0YTcxMWYzNTZjZWU0
NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIuLjdjYTVmODhmYmZhYzk1MDc2MzQzNzRkMzVmNTE1YWM3
OTdjNGEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAt
MzIsNyArMzIsOCBAQAogI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U3RydWN0dXJlZENsb25lLmNwcAppbmRleCAzYTM4YWM1ZWM2YTIzMDExYmRiMTExZWEwMTYxMjhh
NWIzYmZlNTczLi5hNmRhNjM5M2YwMDcyZjNiZDMzY2Y2MmFhZjhmOThiMGZiNWJjOTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTM5
LDE1ICszOSwxMyBAQCBlbnVtIGNsYXNzIENsb25lTW9kZSB7CiAgICAgUGFydGlhbCwKIH07CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhlY1N0
YXRlKiwgQ2xvbmVNb2RlKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFy
cmF5QnVmZmVySW1wbChFeGVjU3RhdGUqIHN0YXRlLCBDbG9uZU1vZGUgbW9kZSkKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBjbG9uZUFycmF5QnVmZmVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBDbG9uZU1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQo
c3RhdGUpOwogICAgIEFTU0VSVChzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKLSAgICBBU1NFUlQo
c3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgQVNTRVJUKHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KTsKIAotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvKiBidWZmZXIg
PSB0b1Vuc2hhcmVkQXJyYXlCdWZmZXIodm0sIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNTgsNjAgKzU2LDYwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhlY1N0YXRlKiBzdGF0ZSwgQ2xvbmVNb2RlIG1vCiAg
ICAgICAgIEFTU0VSVChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID09IDMpOwogICAgICAgICBpbnQg
c3JjQnl0ZU9mZnNldCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvTnVtYmVyKHN0YXRlKSk7CiAgICAgICAgIGludCBzcmNMZW5ndGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b051bWJlcihzdGF0ZSkpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+
dm0oKSwgc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUo
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIGJ1ZmZlci0+c2xpY2Uoc3JjQnl0ZU9m
ZnNldCwgc3JjQnl0ZU9mZnNldCArIHNyY0xlbmd0aCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIGdsb2JhbE9iamVj
dC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCks
IGJ1ZmZlci0+c2xpY2Uoc3JjQnl0ZU9mZnNldCwgc3JjQnl0ZU9mZnNldCArIHNyY0xlbmd0aCkp
KTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpjcmVh
dGUoc3RhdGUtPnZtKCksIHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVy
U3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwg
Z2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
OjpEZWZhdWx0KSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xv
bmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChzdGF0
ZSwgQ2xvbmVNb2RlOjpQYXJ0aWFsKTsKKyAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIENsb25lTW9kZTo6UGFydGlhbCk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25l
QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXJJbXBsKHN0YXRlLCBDbG9uZU1v
ZGU6OkZ1bGwpOworICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgQ2xvbmVNb2RlOjpGdWxsKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJW
aWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgQVNTRVJUKHN0YXRlLT5hcmd1bWVudENvdW50KCkp
OworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvKiBidWZmZXJWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KHZtLCB2YWx1ZSk7CiAgICAgQVNTRVJUKGJ1ZmZlclZpZXcpOwogCiAgICAgYXV0byog
YnVmZmVyID0gYnVmZmVyVmlldy0+dW5zaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAg
IHRocm93RGF0YUNsb25lRXJyb3IoKnN0YXRlLCBzY29wZSk7CisgICAgICAgIHRocm93RGF0YUNs
b25lRXJyb3IoKmNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
ICAgICBhdXRvIGJ1ZmZlckNsb25lID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YnVmZmVyVmlldy0+c3RydWN0dXJlKHZtKTsKIAogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50
OEFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0lu
dDhBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBi
dWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQ4QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0
cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwg
YnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0ludDE2QXJy
YXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZB
cnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZm
ZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQxNkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1
ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5
Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDMyQXJy
YXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVy
Vmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MzJBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0
dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZm
ZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVWludDhBcnJheSo+
KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OEFycmF5
OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZp
ZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVy
ZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVy
Vmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQ4Q2xhbXBlZEFy
cmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4
Q2xhbXBlZEFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9u
ZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUo
Y2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNVaW50MTZBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVm
ZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRl
KGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVWludDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1
ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgo
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0
ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU0Zsb2F0MzJBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNGbG9hdDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5n
dGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFycmF5Ojpj
cmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJW
aWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0NjRBcnJh
eTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5n
dGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNyZWF0
ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oCmluZGV4IGE2ZTRm
ODMwNjMzZWFjODM2ZjAyODkxNjc5YThiNWIzZGEwYmY3MTUuLjI0NjZiOWY3NWU3ZjA2YmQzNWFh
NDczNjliNmM3Y2QwMDAwYTA3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1N0cnVjdHVyZWRDbG9uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5oCkBAIC0yNSwxNCArMjUsMTYgQEAKICAqLwogCiBuYW1lc3BhY2UgSlND
IHsKK2NsYXNzIENhbGxGcmFtZTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogdXNpbmcgRW5jb2Rl
ZEpTVmFsdWUgPSBpbnQ2NF90OwotY2xhc3MgRXhlY1N0YXRlOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1
Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRD
bG9uZUFycmF5QnVmZmVyVmlldyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjYzAyOGMyNTEzYWIxOGNlNTA1
NzZjZjY4NzlmNmY3NzQxODk3NzdlLi4wODc2MTc5OTYxYTU1NzJiODQxYjY4NzczMWI0Mjc5OTZi
MzUxODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUg
PyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVW
YWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7CiAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1l
KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0
aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFt
ZX0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgfQogCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
IAogICAgIGlmIChIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiLy8gQ3VzdG9tIGNvbnN0cnVjdG9yXG4iKTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUmKTtcblxuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NO
YW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUmKTtcblxuIik7CiAgICAg
fQogCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewpAQCAt
Mzk3MCw3ICszOTcwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25k
aXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAg
ICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6
RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTtcbiIpOwogICAgICAgICAgICAgaWYgKCRvcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJG5h
bWVPZkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRmdW5jdGlvbk5hbWUpIC4gIldpdGhvdXRUeXBlQ2hlY2siOwpAQCAtNTE4Niw4ICs1MTg2LDkg
QEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBvbGluZURlZmluaXRpb24KICAgICBwdXNoKEBj
YWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cywgIlByb21pc2VFeGVjdXRpb25TY29wZTo6JHtl
eHBvc3VyZVNjb3BlfSIpIGlmICRoYXNQcm9taXNlUmV0dXJuVHlwZSAmJiAhJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9OwogICAgIHB1c2goQGNhbGxG
dW5jdGlvblRlbXBsYXRlQXJndW1lbnRzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dCIpIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmll
cn0gYW5kIG5vdCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlm
aWVyfSk7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7ZnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFt
ZX0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gJHtpZGxPcGVyYXRpb25UeXBlfTwke2NsYXNzTmFtZX0+Ojoke2Nh
bGxGdW5jdGlvbk5hbWV9PCIgLiBqb2luKCIsICIsIEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3Vt
ZW50cykgLiAiPigqc3RhdGUsIFwiIiAuICRvcGVyYXRpb24tPm5hbWUgLiAiXCIpO1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KQEAgLTU0NzQsOCArNTQ3NSw5IEBA
IHN1YiBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKUyR7aW50ZXJmYWNlTmFtZX06OnNlcmlhbGl6
ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUpKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0
ZSogc3RhdGUpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlMke2ludGVyZmFjZU5hbWV9Pjo6Y2FsbDwke3NlcmlhbGl6ZXJOYXRpdmVG
dW5jdGlvbk5hbWV9Qm9keT4oKnN0YXRlLCBcIiR7c2VyaWFsaXplckZ1bmN0aW9uTmFtZX1cIik7
XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKQEAgLTU1MjIsMTMgKzU1MjQsMTMgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2Fs
bGVyRGVmaW5pdGlvbnMKIAogICAgICAgICBteSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJj
YWxsJHtjbGFzc05hbWV9IjsKIAotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0oRXhlY1N0YXRl
KiBzdGF0ZSlcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7XG4iKTsKIAotICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcigkbGVnYWN5Q2Fs
bGVyc1swXSwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAic3RhdGUi
KTsKKyAgICAgICAgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIoJGxlZ2FjeUNhbGxlcnNbMF0s
ICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAiIiwgImdsb2JhbE9iamVjdCwg
c3RhdGUiKTsKIAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgIH0g
ZWxzZSB7CkBAIC01NTQ5LDEzICs1NTUxLDEzIEBAIHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRl
ZmluaXRpb24KIAogICAgIG15ICRpc092ZXJsb2FkZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRz
fSAmJiBAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9fSA+IDE7CiAgICAgaWYgKCRpc092ZXJsb2Fk
ZWQpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjYWxsJHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNT
dGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2Fk
SW5kZXh9KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4i
KTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3Rh
dGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgfQogCiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIApAQCAtNjQy
Myw4ICs2NDI1LDkgQEAgRU5ECiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIDw8RU5EKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9u
TmFtZX0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhbGw8JHtmdW5jdGlv
bk5hbWV9Q2FsbGVyPigqc3RhdGUsICIke3Byb3BlcnR5TmFtZX0iKTsKIH0KIApAQCAtNzE4Niwx
MyArNzE4OSwxMyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zCiAKICAgICAg
ICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gImNvbnN0cnVjdCR7Y2xhc3NOYW1l
fSI7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qo
RXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0
ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjbGFzc05hbWV9Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwog
Ci0gICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcihAeyRpbnRlcmZhY2UtPmNv
bnN0cnVjdG9yc31bMF0sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAiIiwg
InN0YXRlIik7CisgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcihAeyRpbnRl
cmZhY2UtPmNvbnN0cnVjdG9yc31bMF0sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJl
Zml4LCAiIiwgImdsb2JhbE9iamVjdCwgc3RhdGUiKTsKIAogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2lmIChAY29uc3RydWN0b3JzID09IDEp
IHsKQEAgLTcyMTYsMjEgKzcyMTksMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Db25zdHJ1Y3Rvcn0pIHsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInRlbXBsYXRlPD4gSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChleGVjKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oKmV4ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKHN0YXRlKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGNvbnN0cnVjdCR7Y2xh
c3NOYW1lfShnbG9iYWxPYmplY3QsICpzdGF0ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3Ry
dWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
YW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpKSB7CiAgICAg
ICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHsk
b3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogICAgICAgICAgICAgaWYgKCRpc092ZXJsb2Fk
ZWQpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNz
TmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdChFeGVjU3Rh
dGUqIHN0YXRlKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05h
bWV9Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSlcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRl
LT5qc0NhbGxlZSgpKTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAppbmRleCA5ZGEwZGVkZDRlMzg5YWI4YWI4ZjVk
YWNjMzNkZjY1ZWViZDI5NGRhLi45YzM4OTk1MjE0ZmMwNTJhZWYzMThiNDhkMmJmNTBlYzI5NjQ3
MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmNwcApAQCAtNDUsMTUgKzQ1LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25EZWxldGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkFkZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFy
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAg
LTIyMiw4ICsyMjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExp
a2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keT4oKnN0YXRlLCAiZ2V0
Iik7CiB9CiAKQEAgLTIzOCw4ICsyMzksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KEpTQzo6RXhlY1N0YQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keT4o
KnN0YXRlLCAiaGFzIik7CiB9CiAKQEAgLTI1MCw4ICsyNTIsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keShK
U0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRF
bnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRyaWVzIik7CiB9CiAKQEAgLTI2Miw4ICsyNjUsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25LZXlzQm9keShKU0M6OkV4ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbktleXNCb2R5Pigqc3RhdGUsICJrZXlzIik7CiB9CiAKQEAgLTI3NCw4ICsyNzgs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25WYWx1ZXNCb2R5KEpTQzo6RXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHk+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCkBA
IC0yOTAsOCArMjk1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHkoSlNDOjpFeGUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25Gb3JFYWNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9y
RWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2giKTsKIH0KIApAQCAtMzA2LDggKzMxMiw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkFkZEJvZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oZm9yd2FyZEFkZFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtl
eSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25BZGQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5Pigqc3RhdGUsICJhZGQiKTsKIH0KIApAQCAtMzE5LDgg
KzMyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkNsZWFyQm9keShKU0M6OkV4ZWNTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlr
ZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhckJvZHk+KCpzdGF0ZSwgImNs
ZWFyIik7CiB9CiAKQEAgLTMzNSw4ICszNDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGVCb2R5KEpTQzo6RXhlYwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRGVsZXRlQm9keT4oKnN0YXRlLCAiZGVsZXRlIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCmluZGV4IDc0Nzg5NTkzMTIyNjEyNmViMzExODE3OWI1ODg2ZDY5NDAzNTJkYTguLmNm
YTI4MTAxM2MxYmExZTA2YWY3ZmIwOWEyYmUyM2E0NjBhODQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25IYXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVl
cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkdldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uSGFzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjE2LDggKzIxNiw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
R2V0Qm9keShKU0M6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZEdldFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkdldChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46
OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldEJvZHk+KCpzdGF0ZSwg
ImdldCIpOwogfQogCkBAIC0yMzIsOCArMjMzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KEpTQzoK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9NYXBM
aWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFz
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keT4oKnN0YXRlLCAiaGFzIik7CiB9CiAK
QEAgLTI0NCw4ICsyNDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5KAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0
ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRW50cmllc0JvZHk+KCpzdGF0ZSwgImVudHJpZXMiKTsKIH0KIApAQCAtMjU2
LDggKzI1OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkoSlNDCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVk
VGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFk
T25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlz
Qm9keT4oKnN0YXRlLCAia2V5cyIpOwogfQogCkBAIC0yNjgsOCArMjcyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25WYWx1ZXNCb2R5KEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
blZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNh
bGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHk+KCpzdGF0ZSwg
InZhbHVlcyIpOwogfQogCkBAIC0yODQsOCArMjg5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9k
eSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFj
aFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRm9yRWFjaChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1h
cExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9k
eT4oKnN0YXRlLCAiZm9yRWFjaCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCmluZGV4IDdlMzlmMGQyYjc5NTkxYTY5NDEwM2Q0MDg0ZDM1NTYzOWY2ZDY2OGYuLmExNDc3
ZTEyZWZkYjZmNGZiYzkyMzE5NmYzNmFjNTU0MzM1NWFiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3Rp
dmVET01PYmplY3QuY3BwCkBAIC00Niw4ICs0Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFBy
b3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RB
Y3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIyNyw4ICsy
MjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURP
TU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVu
Y3Rpb25Cb2R5Pigqc3RhdGUsICJleGNpdGluZ0Z1bmN0aW9uIik7CiB9CiAKQEAgLTI0NSw4ICsy
NDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxsPGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2VCb2R5Pigqc3Rh
dGUsICJwb3N0TWVzc2FnZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA5
NGJhYWY0ZmJmOTVmMDkwOThkNjZmN2UwMThlYmRkNzI2ZDJkZWZiLi4zMGU0ZDhkNWE4MGI1ZTcw
ZTRmM2RjYmQzMDc1ODAxZDdlOWJlZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAg
LTQ3LDggKzQ3LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC00MTYsOCArNDE2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0UKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VS
ZWFjdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
Q0VSZWFjdGlvbnM+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ0VSZWFjdGlvbnNCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ0VSZWFjdGlvbnMiKTsK
IH0KIApAQCAtNDMxLDggKzQzMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENFUmVhY3Rpb25zTm90TmVlZGVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q0VSZWFjdGlvbnNOb3ROZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9u
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkIik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCA4YjE5OTVmYjY5ZWVmNjVh
OGQxMzhkNmMzMjk3MDIyZjRlNzU2MTBjLi4zOGQ0MWYzNWUxYmU2MzgzYzEyODRkMDc5ZjgxY2Y5
YjYxMjVhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9u
cwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNTYsOCArMjU2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGVGdW5jdGlvblQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqc3RhdGUsIGltcGwudmFsdWUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA3NTllOTBiYjUyN2Q2NWQyMTJjMTNlOWUzNGQ0ODY2
NGZkMzQ5NWZhLi42YzAzZjQ3NjI3MzA5NWIzNDUzYjRiYzkwMDU5ZWIzMjM0YWE3Yzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC01MSwxNCArNTEsMTQgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNl
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJn
dW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxh
YmxlVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldp
dGhWYXJpYW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0
aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRB
cmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0zNTMsOCArMzUzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RP
cGVyYXRpb25JbnRlcmZhY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbklu
dGVyZmFjZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZUJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25JbnRl
cmZhY2UiKTsKIH0KIApAQCAtMzY5LDggKzM3MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25TcGVjaWZpZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVG
dW5jdGlvblRlc3RPcGVyYXRpb25TcGVjaWZpZWRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9u
U3BlY2lmaWVkIik7CiB9CiAKQEAgLTM5Myw4ICszOTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzQm9keT4oKnN0YXRl
LCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiKTsKIH0KIApAQCAtNDEzLDggKzQxNiw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90
eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0
T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQiKTsKIH0KIApAQCAtNDMzLDggKzQzNyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNl
cj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldp
dGhWYXJpYW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRB
cmd1bWVudCIpOwogfQogCkBAIC00NTMsOCArNDU4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRy
YWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlv
bldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25X
aXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQiKTsKIH0KIApAQCAtNDcxLDggKzQ3Nyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3Vt
ZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJp
YW50QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVG
dW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnRCb2R5Pigqc3Rh
dGUsICJ0ZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKQEAg
LTQ4OSw4ICs0OTYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhE
ZWZhdWx0VmFyaWFudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFy
Z3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3Vt
ZW50Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggNWFlZmQ2OWE1NGQxZTMwYWVhZGEwNTA0
NzRkOGFlOGNlNWNkOGI2Mi4uNjEyN2Q4ZTE0N2U3YTRiOTc4OTQ0OTU4N2IwZTg1ODQ2OGE3ZmM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTU0LDE1ICs1NCwxNSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtV2l0aG91dFR5cGVDaGVjayhK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8
SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRT
aG9ydD4pOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNB
dHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25I
YXNBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklU
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudEJ5SWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50QnlJZFdpdGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01K
SVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZVdpdGhvdXRUeXBl
Q2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1l
bnRUeXBlPElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KTsKIAogLy8gQXR0cmli
dXRlcwpAQCAtMTEyNSw4ICsxMTI1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQm9keSgKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0
YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQm9keT4oKnN0YXRlLCAiZ2V0QXR0
cmlidXRlIik7CiB9CiAKQEAgLTExNTcsOCArMTE1OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5KEpTQzo6
RXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25JdGVtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uSXRlbUJvZHk+KCpzdGF0ZSwgIml0ZW0iKTsKIH0KIApAQCAtMTE4NSw4ICsxMTg3LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keT4oKnN0YXRlLCAiaGFzQXR0cmli
dXRlIik7CiB9CiAKQEAgLTEyMTMsOCArMTIxNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9k
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4o
KnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQo
V1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keT4oKnN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsK
IH0KIApAQCAtMTI0Myw4ICsxMjQ3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RG
TW92ZShlbGVtZW50TmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVCb2R5Pigqc3RhdGUsICJnZXRFbGVtZW50
c0J5TmFtZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXgg
ODlkYjY0NDU4Yzc5YTkyYjg0Nzg0MGI1OTUyY2UwMThhOGUxZjJkMS4uNTk1N2I2M2U0MDEzMTNk
ODBlY2NjNDE4MTcwNDRjOWE4MTMyNTFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gRnVuY3Rp
b25zCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFi
bGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogI2VuZGlmCiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTI5Nyw4ICsyOTcsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0
dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nPjo6Y2FsbDxqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFi
bGVkQnlTZXR0aW5nT3BlcmF0aW9uQm9keT4oKnN0YXRlLCAiZW5hYmxlZEJ5U2V0dGluZ09wZXJh
dGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjZk
OGQ1YzIxMTYyNDQ1YzFkMWYxYzE5NjVjMjdhNTg4YjE2Njg1NS4uNTU0ZWM4YTBkM2I3Y2U3OTQx
MDI5N2ZmNzBjNmE2ZTFhNGNkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcApAQCAtMTUzLDkgKzE1Myw5IEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIAogdXNpbmcgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yPjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3Rh
dGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXgg
NDEyZTY1ZjI4YmQ0ODcxYmEwZDdjNjc0ZTcyNzQyY2Y4OTY2ZmQ5NC4uYmM2MDVmNzAxYjgxMGE5
NzUzNmRjYTYxN2U5ZTMyMjk3MGYzNjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0y
NDYsOCArMjQ2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQm9keShKU0MKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5pdGVtKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25J
dGVtKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OmNhbGw8anNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVtIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggMmZiNWY2MGQwNDNiNTY4NTJi
YmY5MWFhYmYwMDQxODdhMDJmMzg0Zi4uZDc4MTI4NWQ2ZWQ0MGViNDgxZGVhNjA3ZjBlYWY3MzM3
ODRkNmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTEyMCwyMyArMTIwLDIz
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJl
Z3VsYXJPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJh
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b25TdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZChKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1
bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxl
ZEluU3BlY2lmaWNXb3JsZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJs
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvblRlc3RQcml2YXRlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKIAogLy8gQXR0cmlidXRlcwpAQCAtMjUwOCw4
ICsyNTA4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmEKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxs
PGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQm9keT4o
KnN0YXRlLCAicmVndWxhck9wZXJhdGlvbiIpOwogfQogCkBAIC0yNTYzLDggKzI1NjQsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRBdFJ1bgogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25PdmVybG9hZERpc3Bh
dGNoZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKIH0KIApAQCAtMjU4
Myw4ICsyNTg1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXQKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uU3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uU3RhdGljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsU3RhdGljPGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
Qm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpOwogfQogCkBA
IC0yNjAzLDggKzI2MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxk
Iik7CiB9CiAKQEAgLTI2MjEsOCArMjYyNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5h
YmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHk+KCpz
dGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIik7
CiB9CiAKQEAgLTI2MzksOCArMjY0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxl
ZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJs
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZEJvZHk+KCpz
dGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCIp
OwogfQogCkBAIC0yNjU0LDggKzI2NjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQ
cml2YXRlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blRlc3RQcml2YXRlRnVuY3Rpb25Cb2R5LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
Pigqc3RhdGUsICJ0ZXN0UHJpdmF0ZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTI2NzAsOCArMjY3Nyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25DYWxj
dWxhdGVTZWNyZXRSZXN1bHRCb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+
KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwogfQogCkBAIC0yNjgzLDggKzI2OTEs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25H
ZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFu
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25H
ZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBA
IC0yNjk3LDggKzI3MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlRwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xl
YW4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAppbmRleCBmMWNlOWVlNDY5NzY5NDE1MmNiMzM2NjM4NWJkNTUzYzA1MWU1ZmVk
Li5mNWY4NjdjNDRmNWE5ZDk2YmYwNmRkYzNmMWE0YzRjMTdjOWE1NWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNzYsOCArMjc2LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZUZ1bmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKnN0YXRlLCAiaW5kZXhl
ZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGMwM2Q3OGI2YjZlNWJj
Y2ViY2VjMGJkZTUxZmI2NDRjNWNkMGFjNTEuLmQ0NWFkMDZmZWQyNTZkOTBmMDRiZTdkZGQ3ODEx
YTg3ZTE1YjlhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC02OCwzMSArNjgsMzEgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKIAogLy8gQXR0cmlidXRlcwpAQCAt
MjQ0LDkgKzI0NCw5IEBAIHN0YXRpY19hc3NlcnQoVGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVO
VEFMQ09OU1RBTlQxID09IDEsICJTVVBQTEVNRU5UQUxDT05TVEFOCiBzdGF0aWNfYXNzZXJ0KFRl
c3RTdXBwbGVtZW50YWw6OkNPTlNUX0lNUEwgPT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdFN1cHBs
ZW1lbnRhbCBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCiAKLXRlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTg3Myw4ICs4NzMs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDFCb2R5Pigqc3RhdGUsICJpbXBs
ZW1lbnRzTWV0aG9kMSIpOwogfQogCkBAIC04OTgsOCArODk5LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVt
ZW50c01ldGgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRl
c3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
aW1wbC5pbXBsZW1lbnRzTWV0aG9kMigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJn
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyQm9keT4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhv
ZDIiKTsKIH0KIApAQCAtOTEzLDggKzkxNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRoCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbXBsZW1lbnRzTWV0aG9kMygq
c3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uSW1wbGVtZW50c01ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kM0JvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNN
ZXRob2QzIik7CiB9CiAKQEAgLTkyOSw4ICs5MzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNN
ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlv
bkltcGxlbWVudHNNZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kNChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0YXRpYzxqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDRCb2R5Pigqc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kNCIp
OwogfQogCkBAIC05NDYsOCArOTUwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzQm9keSgKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3Vs
dC5ub2RlcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRh
a2VOb2RlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blRha2VOb2Rlc0JvZHk+KCpzdGF0ZSwgInRha2VOb2RlcyIpOwogfQogCkBAIC05NjMsOCArOTY4
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxQm9keT4oKnN0YXRl
LCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOwogfQogCkBAIC05ODgsOCArOTk0LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50
ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhy
b3dTY29wZSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihp
bXBsLCAqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3Vw
cGxlbWVudGFsTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBw
bGVtZW50YWxNZXRob2QyQm9keT4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogfQog
CkBAIC0xMDAzLDggKzEwMTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VwcGxlbWVudGFsTWV0aG9kMygqc3RhdGUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kM0JvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRh
bE1ldGhvZDMiKTsKIH0KIApAQCAtMTAxOSw4ICsxMDI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVt
ZW50YWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZXRob2Q0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsU3RhdGljPGpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0Qm9keT4oKnN0YXRlLCAic3VwcGxlbWVu
dGFsTWV0aG9kNCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAppbmRleCA3NGY4NDc1YzkyZGQy
ZTZiN2Y1YTU1YjE3MDQ3YTQ2N2MzMGFlZmMyLi44N2E4ODFkNDU0OGU5MjRjMzM2MTRkYzdhZTQw
MTc2Mzc0ZTBiNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVy
YXRvcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFi
bGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3lt
Ym9sSXRlcmF0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlv
blZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0xOTgsOCArMTk4LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihFeGVjU3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRlc3RJdGVyYWJsZUl0ZXJh
dG9yPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWUpKTsKIH0KIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25F
bnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEl0ZXJhYmxlPjo6Y2FsbDxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0Nh
bGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCkBAIC0yMDgsOCArMjA5LDkgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5
c0NhbGxlcihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3Jl
YXRlPFRlc3RJdGVyYWJsZUl0ZXJhdG9yPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6S2V5
KSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktl
eXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNhbGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtleXMiKTsKIH0KIApAQCAtMjE4LDggKzIyMCw5IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvblZhbHVlc0NhbGxlcihFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVy
YXRvckNyZWF0ZTxUZXN0SXRlcmFibGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktp
bmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCkBA
IC0yMjgsOCArMjMxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcihFeGVjU3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yRm9yRWFjaDxUZXN0SXRlcmFibGVJdGVyYXRvcj4oKnN0YXRl
LCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+Ojpj
YWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqc3RhdGUs
ICJmb3JFYWNoIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDU3ZDQwZmVlYTFkN2MxNDRkMzA0MWM3YzVhM2ExNDMxYWEwMTA5ZTMuLmIzNjU3
ZWQ4YWY5YmQxM2I5MmJkZjRlZDQ5NTQxNzE5MmNmMjYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9t
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3Rv
bUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBB
dHRyaWJ1dGVzCiAKQEAgLTIyNiw4ICsyMjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlcwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3RvbUZ1bmN0aW9u
KCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I+OjpjYWxsPGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVu
Y3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24i
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IGM5MjA2NWRjOTVmNzMyMmNkMDhiYzI3ZjYxZGRhN2VjZWYwMWZhYzguLjkzYzFmNGI5ZGFi
MzhhMjdmZGVlMjM1OTcwNDk4OWMyZTQ1MGJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTg0LDgg
KzE4NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyPjo6Y2FsbDxqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RCb2R5Pigqc3RhdGUsICJtZXRob2QiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXgg
NzM1NDdhYjk3NjhkYjJiYzllOGVjYTVjMGU0Y2EzMTg4MTVlYjhhYS4uNDhiN2NjYWZiYjE3ZGY1
NDRhNjNmMjY3NDQzMDYwMzg2ODEyOGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00NCw4ICs0
NCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzQ2LDggKzM0Niw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllclByb3RvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KIApAQCAtMzY2LDggKzM2Nyw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5k
ZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpz
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25J
bmRleGVkU2V0dGVyQm9keT4oKnN0YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNmU5OGY3NjA2NzRlMGJhMDMzNjJlZDhk
OTAyNDAyODY3ZDBjODVlMS4uNWIyMzFkYjY5MGM5NzQ1ZTdlODhmMTRkYmNlNDlhNmZiMjMwMzg3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtODgsOSArODgsOSBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sCiAKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQ29u
c3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKIAotdGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oc3Rh
dGUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKaW5kZXggYTRmNmQ4MjMzYjBkYTAwM2VjMmYyODg3MDI1YzYxNDJjNDdk
YmQ3My4uODNkN2Y5OTNhYWVlYjRkMDU2ZDMzYTFkYjI0MjhmNGJjYzJmNWE0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjU3LDggKzI1Nyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZUZ1bmN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyQm9keT4oKnN0YXRlLCAibmFtZWREZWxldGVyIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cAppbmRleCBjMzkxZjJmOGI5NWE4YTI4NDBiZDc0NGExYWU1ZTI3Y2Y3NzAxZWVlLi4zYTQ4OWUx
YjRiMDgxYWY5MjViMzA5ZDY1YjY2MTRmNGFmYmI3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uR2V0dGVyTmFtZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlv
bkdldHRlck5hbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8v
IEF0dHJpYnV0ZXMKIApAQCAtMjMyLDggKzIzMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLmdldHRlck5hbWUoV1RGTW92ZShuYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rp
b25HZXR0ZXJOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRl
ck5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWVCb2R5Pigqc3RhdGUsICJn
ZXR0ZXJOYW1lIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAppbmRleCA1N2FlNGFlM2Q5NTZmMmU0YjEwNjdmMmE2ODI5MDdiMDkwNzcz
ZjFiLi44ZTQyMjRjYTJjMjhiZjE2ZTBhODA3NWY1YTk1ZjMxODdhMjU5NTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yOTgsOCArMjk4LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rp
b25OYW1lZFNldHRlckJvZHk+KCpzdGF0ZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA1
NzU3ODU3N2ZlNzRmNGZjMTQ2YTM0NmI2NzRhZDg5MWFlMTRmNDMxLi44ZTQzNGI5MDhmODg2ZmVl
MWQ2ZmJjZmY2ZmQ5NDRlZjY1YzRjZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVu
Y3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMs
OCArMzIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVk
U2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHk+KCpzdGF0
ZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKQEAgLTM0MCw4ICszNDEsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1
bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCpzdGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDM1MmM4NjU0NDM0MWNjMzIxNDg3Y2QyZjc1YTU5ZjU4
ZDhjYTQxYTcuLjMxOTczZmQ0YzRkMzNlMjk5NTk4MzlmNmQ1ZTVhMDE5ZWYxNTZlZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25O
YW1lZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25J
bmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAv
LyBBdHRyaWJ1dGVzCiAKQEAgLTM0Niw4ICszNDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKnN0
YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KIApAQCAtMzkwLDggKzM5MSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyUHJvCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3Bh
dGNoZXI+KCpzdGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5k
ZXggMTI3M2ZkNmYxYmFjOGVlMmU5MWFhOTE1ODk1NTdlYzE0ZTliODE0MC4uZjZiZjI2M2U2ZjU4
NmY4MTQ4NWY5NzVlZWFlZmYyYmQzNjEyNGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9w
ZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0zMzYsOCArMzM2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGEKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IDk4M2JmMzRm
MGIxYzAxYTQ3MzUzZjdhMGU3ZTliNmZjMWQzNmM5ZGIuLjhkNDI3ZmRmNzM1MDIxZjcyZGQ3Zjgw
NmI4OGNhZWMxYzk3ODc5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
SW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTMyMyw4ICszMjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
T3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJsZU9w
ZXJhdGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggODcwNmVlNThkNmU3YTNlMTA5ZTAzYzMy
MjQ5ZjFkMTBkYmI1Y2YxZS4uYTJhMTgwMTcyYjczMzViNDEyZjVmYjFlMzIwN2NlNDdkYTMwOTMy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcApAQCAtNDgsMTggKzQ4LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBl
RnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRT
ZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0
UmVzdWx0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRv
cihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25L
ZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAt
OTUsOSArOTUsOSBAQCBjbGFzcyBKU1Rlc3ROb2RlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNO
b25GaW5hbE9iamVjdCB7CiAKIHVzaW5nIEpTVGVzdE5vZGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3I8SlNUZXN0Tm9kZT47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRl
KQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
QEAgLTMwMCw4ICszMDAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2VCbwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3ROb2RlPjo6
Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvZHksIFBy
b21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RXb3JrZXJQ
cm9taXNlIik7CiB9CiAKQEAgLTMxNCw4ICszMTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVz
dQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3Vs
YXRlU2VjcmV0UmVzdWx0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5p
bmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNh
bGN1bGF0ZVNlY3JldFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JX
b3JrZXI+KCpzdGF0ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwogfQogCkBAIC0zMjcsOCAr
MzI5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRT
ZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+Ojpj
YWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3Rh
dGUsICJnZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKQEAgLTM0MSw4ICszNDQsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVz
dEZlYXR1cmVHZXRTZWNyZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29s
ZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuIik7CiB9CiAKQEAgLTM2OCw4ICszNzIsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXIoRXhlY1N0YXRlKgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdE5vZGVJdGVyYXRv
cj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVz
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNh
bGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50
cmllcyIpOwogfQogCkBAIC0zNzgsOCArMzgzLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyKEV4ZWNTdGF0ZSosIEoK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRlc3ROb2RlSXRlcmF0
b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpLZXkpKTsKIH0KIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlND
OjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rl
c3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyPigqc3RhdGUsICJrZXlzIik7CiB9CiAK
QEAgLTM4OCw4ICszOTQsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhdGUqLAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdE5vZGVJdGVyYXRvcj4oKnRoaXNPYmpl
Y3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcj4oKnN0YXRlLCAidmFsdWVzIik7CiB9CiAKQEAg
LTM5OCw4ICs0MDUsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXIoRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoaXRlcmF0b3JGb3JFYWNoPFRlc3ROb2RlSXRlcmF0b3I+KCpzdGF0ZSwgKnRo
aXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUq
IHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKQEAg
LTQyMCw4ICs0MjgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlY1N0YXRlKiBzdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRvSlNPTkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGQ4
MDk2OWUwNDA5Mzg2NWJhOTRlNGFhYzc5N2UyYjc2NWRiNTJkOTguLjIwOTMyZWIzNzE5ODg3YzAy
MTgyYmIxMzhkNmU3NDBiODJiMTc4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDIwLDE3OCArMTQyMCwx
NzggQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmEKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3Vs
dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJv
b2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVN
ZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9k
V2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9k
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVu
Y3Rpb25VbmZvcmdlYWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGlj
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhVU1ZTdHJpbmdBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJs
ZVVTVlN0cmluZ0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVC
eXRlU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0Fy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6
ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZChKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1Ymxp
Y0FuZFByaXZhdGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0
YXRlT2JqKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVXaXRoU3BhY2VzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVu
dChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuSXNGYWxzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0
YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRN
ZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25C
eXRlTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
SW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
WFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFs
TWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEVudW1BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERl
ZmF1bHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5n
QXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5
dGVTdHJpbmdBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZh
dGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRF
dmVudExpc3RlbmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UmVtb3ZlRXZlbnRMaXN0ZW5lcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFy
Z3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENh
bGxlckRvY3VtZW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZh
dWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlv
bmFsQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNOdWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxs
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05h
TihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb25nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25n
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJ
c0VtcHR5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2Jq
ZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
WFBhdGhOU1Jlc29sdmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxNZXRob2QxKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24o
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5n
VW5pb25zKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rp
bmd1aXNoaW5nVW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxl
VW5pb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQ
YXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uQ2xhc3NNZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRo
MkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFi
bGVVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkV2l0aE9wdGlvbmFsVW5pb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdBcnJheUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFy
YW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252
ZXJ0MyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2Rl
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1
bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJ
bnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBP
bk9wdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExv
bmdTZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0
cmluZ0FycmF5RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0
TnVsbGFibGVTZXF1ZW5jZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29udmVydDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252
ZXJ0NChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQ
b2ludEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3JhbmdlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNTdHJpbmdNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2Fk
ZWRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
VGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlz
ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25U
ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blBy
b21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoQ09ORElUSU9OMSkgfHwgRU5BQkxFKENPTkRJVElPTjIp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE92ZXJsb2FkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlm
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRh
Y2hTaGFkb3dSb290KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxE
aWN0aW9uYXJ5UGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJh
bWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
b0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0
aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZh
bHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9Xb3JrZXJGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE5NDAsOSAr
MTk0MCw5IEBAIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQgPT0gMHgxYWJj
LCAiQ09OU1RfVkFMVUVfMTQgaW4gVGVzdE9iaiBkb2VzCiBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6
OkNPTlNUX0lNUEwgPT0gMTUsICJDT05TVF9JTVBMIGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2gg
dmFsdWUgZnJvbSBJREwiKTsKIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6cmVhZG9ubHkgPT0gMCwg
InJlYWRvbmx5IGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIAot
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iakNvbnN0
cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMjUwNCw5ICsyNTA0LDkgQEAgdm9pZCBK
U1Rlc3RPYmo6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBzdGF0ZSwgUHJvcGVydHkKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMShFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7
CkBAIC0yNTE4LDkgKzI1MTgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxK
U1Rlc3RPYmoxKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNU
ZXN0T2JqMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
YWxsSlNUZXN0T2JqMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0yNTMxLDkgKzI1MzEs
OSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmoyKEV4ZWNTdGF0
ZSogc3RhdGUpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwu
bGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzKFdURk1vdmUocGFyYW0pKSkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmozKEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmozKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTI1NDMsMjAgKzI1NDMsMjAgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMyhFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEpTVGVzdE9iaihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNUZXN0T2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIGNhbGxK
U1Rlc3RPYmozKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNhbGxKU1Rlc3RPYmozKGdsb2JhbE9i
amVjdCwgc3RhdGUpOwogICAgIH0KICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAg
SlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gY2FsbEpTVGVzdE9iajEoc3RhdGUpOwotICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9i
ajIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGNhbGxKU1Rlc3RPYmoxKGdsb2JhbE9iamVj
dCwgc3RhdGUpOworICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajIoZ2xvYmFsT2JqZWN0LCBz
dGF0ZSk7CiAgICAgfQogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKIH0KQEAgLTU1NDUsOCArNTU0NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyCiAg
ICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0
Y2hlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogfQogCkBAIC01NTY1
LDggKzU1NjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25T
dGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljIik7CiB9CiAKQEAgLTU1ODUsOCArNTU4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29yCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIik7CiB9CiAKQEAgLTU2MDMsOCArNTYwNiw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RCCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
b3JsZFNwZWNpZmljTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V29ybGRTcGVjaWZpY01ldGhvZEJvZHk+KCpzdGF0ZSwgIndvcmxkU3BlY2lmaWNNZXRob2QiKTsK
IH0KIApAQCAtNTYxNyw4ICs1NjIxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWwKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0
UmVzdWx0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0
ZSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpOwogfQogCkBAIC01NjMwLDggKzU2MzUsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRTZWNyZXRCb29sZWFuQm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVh
bihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0
Qm9vbGVhbiIpOwogfQogCkBAIC01NjQ0LDggKzU2NTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNl
Y3JldAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJv
b2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xl
YW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKTsKIH0KIApAQCAt
NTY2MCw4ICs1NjY3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kQm9keT4oKnN0YXRlLCAidm9pZE1ldGhvZCIpOwogfQogCkBAIC01NjgyLDggKzU2OTAs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKIH0K
IApAQCAtNTY5NSw4ICs1NzA0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZEJvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2Qi
KTsKIH0KIApAQCAtNTcxNiw4ICs1NzI2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm8KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kV2l0
aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Qnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQm9k
eT4oKnN0YXRlLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAgLTU3MjksOCArNTc0MCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9jdGV0TWV0aG9kQm9keShKU0M6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZEJvZHk+KCpzdGF0ZSwgIm9jdGV0TWV0aG9kIik7CiB9CiAKQEAgLTU3
NTAsOCArNTc2Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3NCCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92
ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9k
V2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0
ZSwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKIH0KIApAQCAtNTc2Myw4ICs1Nzc2LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZEJvZHkoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZEJvZHk+KCpzdGF0ZSwgImxvbmdNZXRob2QiKTsKIH0KIApAQCAtNTc4NCw4ICs1Nzk4LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RG
TW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAibG9uZ01ldGhvZFdpdGhB
cmdzIik7CiB9CiAKQEAgLTU3OTcsOCArNTgxMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZEJvZHkoSlNDOjpF
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4o
KnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZEJvZHk+KCpzdGF0ZSwgIm9iak1ldGhvZCIp
OwogfQogCkBAIC01ODE4LDggKzU4MzQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0
ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhv
ZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwg
Im9iak1ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAgLTU4MzEsOCArNTg0OCw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3Jn
ZWFibGVNZXRob2RCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+
KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9keT4oKnN0YXRlLCAidW5mb3JnZWFibGVNZXRob2Qi
KTsKIH0KIApAQCAtNTg0OSw4ICs1ODY3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW4KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNTg2
Nyw4ICs1ODg2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBh
cmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhO
U1Jlc29sdmVyUGFyYW1ldGVyQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZl
clBhcmFtZXRlciIpOwogfQogCkBAIC01ODgwLDggKzU5MDAsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z01ldGhvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExE
T01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdNZXRob2QoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9k
Qm9keT4oKnN0YXRlLCAibnVsbGFibGVTdHJpbmdNZXRob2QiKTsKIH0KIApAQCAtNTg5Miw4ICs1
OTEzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBUZXN0T2JqOjpudWxs
YWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0
aWNNZXRob2RCb2R5Pigqc3RhdGUsICJudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCIpOwogfQog
CkBAIC01OTA5LDggKzU5MzEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUs
IGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJp
bmdTcGVjaWFsTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQm9keT4oKnN0YXRlLCAibnVsbGFibGVTdHJpbmdTcGVj
aWFsTWV0aG9kIik7CiB9CiAKQEAgLTU5MjcsOCArNTk1MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVt
QXJnQm9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZ0JvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CiB9CiAKQEAgLTU5NDUsOCArNTk2OSw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTdGFuZGFsb25lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZyIpOwogfQogCkBAIC01OTYxLDggKzU5ODYsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxFbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxFbnVtQXJnIik7CiB9CiAKQEAgLTU5NzcsOCArNjAwMyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1
bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0
VmFsdWUiKTsKIH0KIApAQCAtNTk5Niw4ICs2MDIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVz
QWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5t
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKFdURk1vdmUoc3RyQXJnKSwgKm9iakFy
ZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0Jv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKIH0KIApA
QCAtNjAxNCw4ICs2MDQyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0EKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
ZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZyIpOwogfQogCkBAIC02MDMyLDggKzYwNjEsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTnVsbGFibGVVUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmdCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmciKTsKIH0KIApAQCAtNjA1MCw4ICs2
MDgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
KTsKIH0KIApAQCAtNjA2OCw4ICs2MDk5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmcKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5
dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJn
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmciKTsKIH0KIApAQCAtNjA4Niw4
ICs2MTE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnkKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0Fy
ZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3Ry
aW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyIpOwog
fQogCkBAIC02MTA0LDggKzYxMzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIApAQCAtNjEyMiw4ICs2MTU2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2Vy
aWFsaXplZFZhbHVlQm9keSgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9k
eT4oKnN0YXRlLCAic2VyaWFsaXplZFZhbHVlIik7CiB9CiAKQEAgLTYxNDAsOCArNjE3NSw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhSZWNvcmQiKTsKIH0KIApAQCAtNjE1NCw4
ICs2MTkwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkIKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2Vw
dGlvbiIpOwogfQogCkBAIC02MTY3LDggKzYyMDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
UgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93
U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
RXhjZXB0aW9uUmV0dXJuaW5nTG9uZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmciKTsKIH0KIApAQCAtNjE4MCw4ICs2MjE4LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdEJvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QiKTsKIH0KIApAQCAt
NjE5Miw4ICs2MjMxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kQm9keShKU0MKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZCgqc3RhdGUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZEJvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhv
ZCIpOwogfQogCkBAIC02MjA0LDggKzYyNDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFy
Z3MoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJjdXN0b21NZXRob2RXaXRoQXJncyIp
OwogfQogCkBAIC02MjIxLDggKzYyNjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keShKUwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5w
cml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keSwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKnN0YXRlLCAicHJpdmF0ZU1ldGhvZCIpOwogfQogCkBAIC02MjM4LDggKzYyODAsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25QdWJsaWNBbmRQcml2YXRlTWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUo
YXJndW1lbnQpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blB1YmxpY0FuZFByaXZhdGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQm9keT4oKnN0YXRlLCAicHVibGljQW5kUHJpdmF0
ZU1ldGhvZCIpOwogfQogCkBAIC02MjYwLDggKzYzMDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
Qm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRF
dmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXJCb2R5Pigqc3RhdGUs
ICJhZGRFdmVudExpc3RlbmVyIik7CiB9CiAKQEAgLTYyODIsOCArNjMyNiw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92
ZUV2ZW50TGlzdGVuZXJCCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExp
c3RlbmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRM
aXN0ZW5lckJvZHk+KCpzdGF0ZSwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKIH0KIApAQCAtNjI5
Niw4ICs2MzQxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRCb2QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWQoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkQm9keT4oKnN0YXRlLCAid2l0aEV4ZWNTdGF0ZVZvaWQi
KTsKIH0KIApAQCAtNjMwOSw4ICs2MzU1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakJvZHkKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoRXhlY1N0YXRlT2JqKCpz
dGF0ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmooRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0
YXRlT2JqKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0
ZU9iakJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVPYmoiKTsKIH0KIApAQCAtNjMyMyw4ICs2
MzcwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uQm9keT4oKnN0YXRl
LCAid2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24iKTsKIH0KIApAQCAtNjMzNiw4ICs2Mzg0LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKCpzdGF0ZSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhl
Y1N0YXRlT2JqRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVPYmpF
eGNlcHRpb24iKTsKIH0KIApAQCAtNjM1Myw4ICs2NDAyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Qm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQiKTsKIH0KIApAQCAtNjM3MCw4ICs2NDIwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQm9keT4oKnN0
YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUiKTsKIH0KIApAQCAt
NjM4Niw4ICs2NDM3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbigqc3RhdGUsICpjb250ZXh0KSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2Vw
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIApAQCAt
NjQwMiw4ICs2NDU0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkMKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAqY29udGV4dCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlV2l0aFNwYWNlc0JvZHk+KCpzdGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyIpOwogfQogCkBAIC02NDIxLDggKzY0NzQsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoRG9jdW1lbnRBcmd1bWVudAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1
bWVudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERv
Y3VtZW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRoRG9jdW1lbnRBcmd1bWVudCIpOwogfQog
CkBAIC02NDM4LDggKzY0OTIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRB
cmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1l
bnRCb2R5Pigqc3RhdGUsICJ3aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCIpOwogfQogCkBAIC02
NDUyLDggKzY1MDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnRCb2R5Pigqc3Rh
dGUsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQiKTsKIH0KIApAQCAtNjQ2OCw4ICs2NTI0LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXJnIik7CiB9CiAKQEAgLTY0ODQsOCArNjU0MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFy
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCkBAIC02NTA0LDgg
KzY1NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlv
bmFsQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogfQogCkBAIC02NTI2LDggKzY1ODUsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3NCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKIH0KIApAQCAtNjU0Miw4ICs2NjAyLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nIik7CiB9CiAKQEAgLTY1NTgsOCArNjYxOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTVlN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFVTVlN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVT
VlN0cmluZyIpOwogfQogCkBAIC02NTc0LDggKzY2MzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEF0b21TdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nIik7CiB9CiAKQEAgLTY1OTAsOCArNjY1Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1
ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIp
OwogfQogCkBAIC02NjA2LDggKzY2NzAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFs
dWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZh
bHVlIik7CiB9CiAKQEAgLTY2MjIsOCArNjY4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzTnVsbCIpOwogfQogCkBAIC02NjM4LDggKzY3MDQsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogfQogCkBAIC02
NjU0LDggKzY3MjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3Ry
aW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lz
TnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmdJc051bGxCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9t
U3RyaW5nSXNOdWxsIik7CiB9CiAKQEAgLTY2NzAsOCArNjczOCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0Jv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0K
IApAQCAtNjY4Niw4ICs2NzU1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVMKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
VVNWU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02
NzAyLDggKzY3NzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3Ry
aW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdJc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02NzE4
LDggKzY3ODksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEbwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05h
TihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTiIpOwogfQogCkBA
IC02NzM0LDggKzY4MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9h
dElzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0
SXNOYU5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOIik7CiB9CiAK
QEAgLTY3NTAsOCArNjgyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9u
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nIik7CiB9CiAKQEAgLTY3
NjYsOCArNjg0MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25n
SXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxM
b25nTG9uZ0lzWmVyb0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNa
ZXJvIik7CiB9CiAKQEAgLTY3ODIsOCArNjg1Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKIH0KIApAQCAtNjc5OCw4ICs2ODc0LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVy
byhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1pl
cm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxVbnNpZ25lZExvbmdMb25nSXNaZXJvQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
VW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOwogfQogCkBAIC02ODE0LDggKzY4OTEsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxTZXF1ZW5jZSIpOwogfQogCkBAIC02ODMwLDggKzY5MDgsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHlCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkiKTsKIH0KIApAQCAtNjg0Niw4
ICs2OTI1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiIpOwogfQogCkBAIC02ODYyLDggKzY5NDIsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOwogfQogCkBA
IC02ODc4LDggKzY5NTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnko
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnlCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoT3B0aW9uYWxBbnkiKTsKIH0KIApAQCAtNjg5NCw4ICs2OTc2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsT2IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0Iik7CiB9CiAKQEAgLTY5MTAsOCArNjk5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlckJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIpOwogfQogCkBAIC02OTI2LDggKzcwMTAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZVdyYXBwZXJJc051bGxCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJJc051bGwiKTsKIH0KIApAQCAtNjk0Miw4ICs3MDI3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsWFAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIik7CiB9CiAKQEAgLTY5NTgs
OCArNzA0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZEJvZHk+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCIpOwogfQogCkBAIC02OTc0LDggKzcwNjEsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxQcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxQcm9taXNlIik7CiB9CiAKQEAgLTY5OTIsOCArNzA4MCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0FyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxs
YmFja0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhD
YWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogfQogCkBA
IC03MDEyLDggKzcxMDEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogfQogCkBAIC03MDI4LDggKzcxMTgs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogfQog
CkBAIC03MDQ2LDggKzcxMzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OwogfQogCkBAIC03MDY2LDggKzcxNTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
RnVuY3Rpb25BcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKQEAgLTcwODIsOCArNzE3NSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0Z1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRP
cHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0
aW9uYWxBcmciKTsKIH0KIApAQCAtNzA5Nyw4ICs3MTkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RX
aXRoQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25T
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
U3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnQm9keT4oKnN0YXRlLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmciKTsKIH0KIApAQCAtNzExNCw4ICs3MjA5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRo
Q2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keT4oKnN0YXRlLCAic3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQXJnIik7CiB9CiAKQEAgLTcxMjgsOCArNzIyNCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMUJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKnN0YXRlLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJj
b25kaXRpb25hbE1ldGhvZDEiKTsKIH0KIApAQCAtNzE0NSw4ICs3MjQyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QyQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRo
b2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRo
b2QyQm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiB9CiAKQEAgLTcxNjIsOCAr
NzI2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kM0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsTWV0aG9kM0JvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMyIp
OwogfQogCkBAIC03MzYzLDggKzc0NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kT3ZlcgogICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hl
cj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogfQogCkBAIC03NDIwLDggKzc1MjAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXJPdmVybG9h
ZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0
ZXIiKTsKIH0KIApAQCAtNzQ2Nyw4ICs3NTY4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgK
ICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlz
aGluZ1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlz
aGluZ1VuaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUs
ICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24iKTsKIH0KIApAQCAtNzUx
Niw4ICs3NjE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0Nv
dW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRp
c3Rpbmd1aXNoaW5nVW5pb25zT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVk
TWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOwogfQogCkBAIC03NTY0LDggKzc2Njcs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1
aXNoaW5nVW5pb25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RX
aXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIpOwogfQogCkBAIC03NjEzLDggKzc3MTcsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZFdpdGhOdWxsYWJsZQogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZFdpdGhOdWxsYWJsZVVuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVV
bmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51
bGxhYmxlVW5pb25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxh
YmxlVW5pb24iKTsKIH0KIApAQCAtNzY2Myw4ICs3NzY4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0
aW9uYWwKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRo
T3B0aW9uYWxVbmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkV2l0aE9wdGlvbmFsVW5pb25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24iKTsKIH0KIApAQCAtNzcxMiw4ICs3ODE4LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoTnVsbGFibGUKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVs
bGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5n
UGFyYW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZFdpdGhOdWxsYWJs
ZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyIik7CiB9CiAKQEAgLTc3MjUsOCArNzgzMiw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uQ2xhc3NNZXRob2RCb2R5KEpTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0
aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01l
dGhvZEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kIik7CiB9CiAKQEAgLTc3MzksOCArNzg0Nyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETExvbmc+KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKFdURk1vdmUoYXJn
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsIik7CiB9CiAKQEAgLTc3NTEsOCArNzg2MCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2QyQm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmNsYXNz
TWV0aG9kMigqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25D
bGFzc01ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kMkJvZHk+KCpzdGF0ZSwgImNsYXNzTWV0aG9kMiIpOwogfQogCkBAIC03ODA0
LDggKzc5MTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxTwogICAgIHJldHVybiBhcmdzQ291
bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDFPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRo
b2QxIik7CiB9CiAKQEAgLTc4MjYsOCArNzkzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1w
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcEJvZHk+
KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiB9CiAKQEAgLTc4NDIsOCArNzk1NCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHk+
KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbCIpOwogfQogCkBAIC03ODYy
LDggKzc5NzUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VCb2R5
Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UiKTsKIH0KIApAQCAtNzg3OCw4
ICs3OTkyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3IKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25P
cHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0
aW9uYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5m
b3JjZVJhbmdlT25PcHRpb25hbCIpOwogfQogCkBAIC03ODk2LDggKzgwMTEsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoVW5zaWduZWRMbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsKIH0KIApAQCAtNzkxMyw4ICs4MDI5LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXJyYXlGdW5jdGlvbihXVEZNb3ZlKHZh
bHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmlu
Z0FycmF5RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiB9CiAK
QEAgLTc5MzAsOCArODA0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxET01TdHJpbmdMaXN0Pj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uKCp2YWx1ZXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJkb21TdHJp
bmdMaXN0RnVuY3Rpb24iKTsKIH0KIApAQCAtNzk0Niw4ICs4MDY0LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9u
V2l0aE9wdGlvbmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyQm9keT4o
KnN0YXRlLCAib3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIiKTsKIH0KIApAQCAt
Nzk2Niw4ICs4MDg1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXQKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxs
YWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJs
ZVNlcXVlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiB9CiAKQEAgLTc5ODMsOCArODEwMyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRCeUlkQm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51
bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50Pj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwg
ImdldEVsZW1lbnRCeUlkIik7CiB9CiAKQEAgLTc5OTYsOCArODExNyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0Rv
Y3VtZW50Qm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFj
ZTxTVkdEb2N1bWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBCaW5kaW5nU2VjdXJpdHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKCpzdGF0ZSwgaW1w
bC5nZXRTVkdEb2N1bWVudCgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRTVkdEb2N1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dFNWR0RvY3VtZW50Qm9keT4oKnN0YXRlLCAiZ2V0U1ZHRG9jdW1lbnQiKTsKIH0KIApAQCAtODAx
NCw4ICs4MTM2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b252ZXJ0MShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9k
eT4oKnN0YXRlLCAiY29udmVydDEiKTsKIH0KIApAQCAtODAzMiw4ICs4MTU1LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDJCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQm9keT4oKnN0YXRlLCAiY29udmVydDIi
KTsKIH0KIApAQCAtODA1MCw4ICs4MTc0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDNCb2R5KEpTQzo6RXgKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQzQm9keT4oKnN0YXRlLCAiY29udmVydDMiKTsKIH0KIApAQCAtODA2OCw4ICs4
MTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDRCb2R5KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keT4oKnN0
YXRlLCAiY29udmVydDQiKTsKIH0KIApAQCAtODA4MSw4ICs4MjA3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBv
aW50RnVuY3Rpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubXV0
YWJsZVBvaW50RnVuY3Rpb24oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uQm9keT4oKnN0YXRlLCAibXV0YWJsZVBvaW50
RnVuY3Rpb24iKTsKIH0KIApAQCAtODA5NSw4ICs4MjIyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlQm9keShKU0M6
OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Jh
bmdlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3JhbmdlQm9keT4oKnN0YXRlLCAib3JhbmdlIik7CiB9CiAKQEAgLTgxMTUsOCAr
ODI0Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljU3RyaW5n
TWV0aG9kIik7CiB9CiAKQEAgLTgxMzUsOCArODI2NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0
aG9kCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJv
ZHk+KCpzdGF0ZSwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CiB9CiAKQEAgLTgxNTUsOCArODI4
NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZEJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwog
fQogCkBAIC04MTc1LDggKzgzMDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kQgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2RCb2R5Pigqc3RhdGUsICJ2
YXJpYWRpY1VuaW9uTWV0aG9kIik7CiB9CiAKQEAgLTgxOTUsOCArODMyNyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueUJv
ZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFueUJvZHk+KCpzdGF0ZSwgImFueSIpOwogfQogCkBAIC04MjA5LDggKzgz
NDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbiIp
OwogfQogCkBAIC04MjI3LDggKzgzNjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Qm9k
eSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFBy
b21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Iik7CiB9CiAKQEAgLTgyNDEsOCArODM3Niw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhFeGNlcHRpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29y
a2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBA
IC04MjU3LDggKzgzOTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aE9wdGlvbmFsSW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFy
Z3VtZW50Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRl
LCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CiB9CiAKQEAg
LTgzMDIsOCArODQzOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlCiAgICAgcmV0dXJuIGFy
Z3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b25PdmVybG9hZERpc3BhdGNoZXIsIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3Jr
ZXI+KCpzdGF0ZSwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiB9CiAKQEAgLTgz
MTUsOCArODQ1Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
PEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RT
dGF0aWNQcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09y
V29ya2VyPigqc3RhdGUsICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgz
MjgsOCArODQ2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rp
b25XaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC04MzQwLDgg
Kzg0ODAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigqc3RhdGUsIFdURk1v
dmUocHJvbWlzZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb25Cb2R5
LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0Q3Vz
dG9tUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzNTIsOCArODQ5Myw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVz
dFN0YXRpY0N1c3RvbVByCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OnRl
c3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oKnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+Ojpj
YWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJv
bWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4o
KnN0YXRlLCAidGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbiIpOwogfQogCkBAIC04MzY0
LDggKzg1MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093bgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+dGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24o
KnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0T2JqPjo6Y2FsbFJldHVybmluZ093blByb21pc2U8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRl
c3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzNzcsOCArODUy
MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFByb21pc2U8SURMVm9pZD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLnRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9u
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsUmV0dXJuaW5nT3duUHJvbWlzZTxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1
bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5
RnVuY3Rpb24iKTsKIH0KIApAQCAtODQzMiw4ICs4NTc2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVy
bG9hZE8KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkT3ZlcmxvYWREaXNwYXRjaGVyPigqc3Rh
dGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7CiB9CiAKQEAgLTg0ODIsOCArODYyNyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9u
YWxPdmVybG9hZE92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAic2luZ2xlQ29uZGl0aW9uYWxP
dmVybG9hZCIpOwogfQogCkBAIC04NTAwLDggKzg2NDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290
Qm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRh
Y2hTaGFkb3dSb290KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3RCb2R5Pigqc3RhdGUs
ICJhdHRhY2hTaGFkb3dSb290Iik7CiB9CiAKQEAgLTg1MTgsOCArODY2NSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJh
dGlvbldpdGhFeHRlcm5hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlv
bmFyeVBhcmFtZXRlckJvZHk+KCpzdGF0ZSwgIm9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25h
cnlQYXJhbWV0ZXIiKTsKIH0KIApAQCAtODUzNiw4ICs4Njg0LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNl
UGFyYW1ldGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QnVmZmVyU291cmNlUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFyYW1l
dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFy
YW1ldGVyQm9keT4oKnN0YXRlLCAiYnVmZmVyU291cmNlUGFyYW1ldGVyIik7CiB9CiAKQEAgLTg1
NTQsOCArODcwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkQm9kCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJvZHk+KCpzdGF0ZSwgImxlZ2FjeUNhbGxlck5hbWVk
Iik7CiB9CiAKQEAgLTg1NzUsOCArODcyNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXR1cm5WYWx1ZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFs
dWVPcHRpbWl6YXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb25Cb2R5Pigqc3RhdGUsICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iKTsK
IH0KIApAQCAtODU5Niw4ICs4NzQ3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJldHVyblZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9w
dGltaXphdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbkJvZHk+KCpzdGF0
ZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24iKTsKIH0KIApAQCAt
ODYxMCw4ICs4NzYyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWQKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dp
bmRvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uQm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIik7CiB9CiAKQEAgLTg2MjQsOCArODc3Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsbHlFeHBvc2VkCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5j
dGlvbkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIp
OwogfQogCkBAIC04NjM4LDggKzg3OTIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5
RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2Vy
RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29y
a2VyRnVuY3Rpb24iKTsKIH0KIApAQCAtODY1MSw4ICs4ODA2LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5
KEpTQzo6RXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigq
c3RhdGUsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApAQCAtODY4NSw4ICs4ODQx
LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRvSlNPTkJvZHkoRXhlY1N0YXRlKiBzdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE9iajo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4o
KnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAppbmRleCA1NjE5NzYwMjg4YTkwY2U4MDNhZTVhNDEwODhlYjZlM2IyMTdm
NTYwLi4zMjY2Mzc0Zjg3NDA5YzZmYTQ5MDNhOWQyNjE3ZTI3YzMyMjZlNTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC03NSw5ICs3NSw5IEBA
IGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKIAogdXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPjsKIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC04OCw5
ICs4OCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczEoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVj
dCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0x
MDEsOSArMTAxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3RhdGUqIHMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUo
b2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
QEAgLTExNCw5ICsxMTQsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogcwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
TW92ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVl
KCkpOwpAQCAtMTI3LDkgKzEyNyw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUqIHN0YXRlKQor
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzNShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anND
YWxsZWUoKSk7CkBAIC0xNDAsMjYgKzE0MCwyNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogcwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CiB9CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50
ID09IDApIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM1KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM1KGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgIH0KICAgICBpZiAoYXJnc0Nv
dW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVm
ZmVyPih2bSkpCi0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczEoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgICAgICBpZiAo
ZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0Fy
ZyktPmluaGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4g
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoc3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKGdsb2JhbE9i
amVjdCwgc3RhdGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAm
JiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQotICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKHN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMyhnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5n
QXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczUoc3RhdGUpOwotICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KGdsb2JhbE9iamVjdCwgc3RhdGUpOwor
ICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoZ2xv
YmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAzNzU4OTAxN2NjYTQ0MmNj
ZmVlYjczN2U5ZGJlNGY5OWJiNTdhOWFlLi4yYTI5YTQ4YzQ5NGZlY2Q1ZjcxZWVkYzM1ZmYyZDc1
ZTU3OTI1N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC03NCw5ICs3NCw5IEBAIGNsYXNzIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsCiAKIHVzaW5nIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZT47CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoRXhlY1N0YXRl
KiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtODcsOSArODcs
OSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92
ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoRXhlY1N0YXRlKiBzdGF0
ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMTAwLDIyICsxMDAsMjIg
QEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMigKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUo
b2JqZWN0KSkpOwogfQogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9
IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFy
Z3NDb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShnbG9iYWxPYmplY3Qs
IHN0YXRlKTsKICAgICB9CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFs
dWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
ICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKHN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlMShnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICAgICAgaWYgKGhh
c0l0ZXJhdG9yTWV0aG9kKCpzdGF0ZSwgZGlzdGluZ3Vpc2hpbmdBcmcpKQotICAgICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Ux
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UyKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShnbG9iYWxPYmplY3QsIHN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UyKGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgIH0KICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5jcHAKaW5kZXggNDRlZmM3MDg1MmUxNGIwMzVlYzliZDkxMmMxYmM0NzJj
MDYzMWNkZC4uZjMxYzljMjE5OGM3YThkZDBmMDE3NmVlNTU5OGQ3NDIwZTc3MDhlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRl
bShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yMzUs
OCArMjM1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXQKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0oV1RGTW92ZShuYW1lKSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZEl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZEl0ZW1Cb2R5Pigqc3RhdGUsICJuYW1lZEl0ZW0iKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAppbmRleCA1ZDY1YWRhY2FlYTRiOGZk
ZTgzYjIwN2I3YTRlMDkzZDhiMmM2YzUxLi5iZDZjNDkyZjZjNWZiZWVhZWEwZWYzYjI2MGZmOTUx
M2JiZDE1ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cApAQCAtMTU0LDkgKzE1NCw5IEBAIGNsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFBy
b3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogCiB1c2luZyBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1
Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDVjMGQ3ODJiYjMyOWYxMTc5OTliMzdjZDJj
YjI0ZDIxZDg3MDJmMTYuLmY4OGE2ZTExNzA3NzZiZmNkODI1ZTM3YjFkYTViYWNhOWU4YTlmNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
ZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtNjY1LDggKzY2NSw5IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlw
ZUZ1bmN0aW9uVG9KU09OQm9keShFeGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUoKnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlh
bGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhbGw8anNU
ZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9K
U09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmlu
ZGV4IDdlYjE1MjYwOWVjZTk3NGZlODVhNWI2YWUyMGVkNzI5YWRkNzFkNDAuLmJlMWYzNzg4YjE0
Zjk5N2YwNGZjZTY0MWVlNDhjYTdlNDJjZTlmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIyMCw4ICsyMjAsOSBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05CbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCBjZjI3MWUy
YWNiOGRhZjE1ZmM3NDE5NmMxNjM3Y2QyY2U2ZDczNDliLi5kY2MzY2VlYzZjZTc5MTQ1ZDkyZThm
OTdjOWE0ODE1MjY0ZjVhYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI1NSw4
ICsyNTUsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6c2VyaWFsaXplKCpzdGF0ZSwg
KnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpjYWxsPGpz
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+
KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU5YjVlZjZiNTE4NzMxODM2ZWRm
MmY3ZjU0NDU2MmY3N2FhZGM0YmIuLjBlZWY0MTZlMDA0MWVlMTFlZjQ3MmU2YzJiY2U4ZWFjYmNh
ZTI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCkBAIC01MSw4ICs1MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25S
ZXR1cm5pbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzIzLDggKzMy
Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImZ1
bmN0aW9uIik7CiB9CiAKQEAgLTMzNiw4ICszMzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
RgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXJpYWxpemVkU2NyaXB0VmFs
dWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcGwuZnVuY3Rpb25SZXR1cm5pbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nQm9keT4oKnN0YXRlLCAiZnVuY3Rpb25SZXR1cm5p
bmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKaW5kZXggZTVjNjJlMzk2NDM1MzEy
MGZlYzdhYjgxOTZhYzdiYWM0NmFiMGQ1Ni4uNzE5NjZmNzYwYzA0YzlkYjdmMTNmNjhlZDIwYzhi
NjU5YjNlOWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3Nyw4ICsx
NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZp
ZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZp
ZXI+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCmluZGV4IDc1MmUyNjZjYmM3ODg5ZDMzYjZm
NmRlMTNjZGY4MTE3MzJmMzdhOTguLjNlMmQ4ODkwYTk1ZTFlMWIzMThmMzIxYzQ5NTgyODU5YWE5
YmQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBA
IC0xNzcsOCArMTc3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYTAy
YTAyMDNhMmNkODM2YTU4MDM1N2YwMjk5MzFlOTllNDZmYTFkOS4uNDA5MTM4NDZhM2E1MWY1MDg3
YzQxOGJmZGJhYTc2MWNhMjgwNTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uLmNwcApAQCAtNDEsOCArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZp
ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1
bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
IC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc5LDggKzE3OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3RpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZp
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHk+KCpzdGF0ZSwgImlkZW50aWZpZXIi
KTsKIH0KIApAQCAtMTkyLDggKzE5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3RpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlk
ZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHAKaW5kZXggZTZlZWE5OWMwYzYwODY5NTgwYzkwZGEyNDliYjU4MDdhYjI2ZmQ0NS4uYzAyY2Zm
OTZhNmI5YWFiYTA1NDY5N2E2NzRlYWI1ZjY4M2M5OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTQx
LDggKzQxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc5LDggKzE3OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQ
cm90b3R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCBpbXBsLmFsdGVybmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90
b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cz46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBl
RnVuY3Rpb25JZGVudGlmaWVyQm9keT4oKnN0YXRlLCAiaWRlbnRpZmllciIpOwogfQogCkBAIC0x
OTIsOCArMTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHkKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRp
ZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUs
ICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGJjYTBmYWQ4M2M1MWY4OTQxMzJi
YjhjYjBmNWZmOTJlYmIyOTE4YzguLmQyMWFjM2RiMDZmZmM5YzU2YjIzZTY1MjAzODc1ZmVkMWM5
NDgwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8v
IEF0dHJpYnV0ZXMKIApAQCAtMTc3LDggKzE3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLnRvU3RyaW5nKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz46OmNhbGw8anNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCBjZjBmMTFiMjlmMDQzZGRiNmQ3ZTZh
OWE3NmY5MTNjNDhhZGY4MjE3Li4xNjNiZjYyZTU5ZWFiMTQ1ZmUxYWVlY2RhMGVhMTUzMTY4Njg3
NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1
bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xOTks
OCArMTk5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGU+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggNTdj
ZWM4NmJlZmU3YjRhZjY4ZDJkNTFhNTNhNGEyNGM5NTQ1ODAwMS4uNzBjNmZhNWM2YWI5MGNlNTVk
MDRiNjAxNzYxNGJmMDRkMjI4NmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAv
LyBBdHRyaWJ1dGVzCiAKQEAgLTIxOCw4ICsyMTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVG
dQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
aW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9T
dHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNmI4YzA0YWM4ZTE4ZmVkYWJk
ZjU4MGQ4NWJjZTRlMjk0MzdjMTc1OC4uZDhiNDM4OTY1YTNlNWI3M2UwMmMzNDQ5MmMxODE3NDY0
MWM4ZTc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC02MCwyMSArNjAsMjEgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2Vx
dWVuY2VBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0Fy
ZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNB
cmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJn
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcEluVHlwZWRlZihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TZXRTaGFkb3coSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVT
ZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5U
eXBlZGVmKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Q
b2ludEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRS
ZXF1aXJlc0luY2x1ZGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTQyLDkgKzE0Miw5IEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNb
XSA9CiAgICAgeyAiVGVzdFN1Yk9iaiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
clRlc3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSog
c3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IqPihzdGF0ZS0+
anNDYWxsZWUoKSk7CkBAIC00OTYsOCArNDk2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jQm9keShKU0M6OkUK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5Pigqc3RhdGUsICJmdW5jIik7CiB9CiAKQEAgLTUy
Miw4ICs1MjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0JvZHkoSgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU2V0U2hhZG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblNldFNoYWRvd0JvZHk+KCpzdGF0ZSwgInNldFNoYWRvdyIpOwogfQogCkBAIC01
MzksOCArNTQxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oaW1wbC5tZXRob2RXaXRoU2VxdWVu
Y2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVm
cz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogfQogCkBAIC01NTcs
OCArNTYwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5Pigqc3Rh
dGUsICJudWxsYWJsZVNlcXVlbmNlQXJnIik7CiB9CiAKQEAgLTU3NSw4ICs1NzksOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblNlcXVlbmNlT2ZOdWxsYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0JvZHk+KCpzdGF0ZSwgInNl
cXVlbmNlT2ZOdWxsYWJsZXNBcmciKTsKIH0KIApAQCAtNTkzLDggKzU5OCw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTZXF1ZW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVz
QXJnQm9keT4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnIik7CiB9CiAK
QEAgLTYxMSw4ICs2MTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VP
ZlVuaW9uc0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25z
QXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0JvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVu
aW9uc0FyZyIpOwogfQogCkBAIC02MjksOCArNjM2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHko
SlMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25V
bmlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdCb2R5Pigqc3RhdGUsICJ1bmlv
bkFyZyIpOwogfQogCkBAIC02NDksOCArNjU3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
V2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46
OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBCb2R5Pigq
c3RhdGUsICJmdW5jV2l0aENsYW1wIik7CiB9CiAKQEAgLTY2Nyw4ICs2NzYsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bkZ1bmNXaXRoQ2xhbXBJbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHk+KCpzdGF0ZSwgImZ1bmNX
aXRoQ2xhbXBJblR5cGVkZWYiKTsKIH0KIApAQCAtNjgwLDggKzY5MCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9p
bnRGdW5jdGlvbkJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFj
ZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBv
aW50RnVuY3Rpb24oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25Qb2ludEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblBvaW50RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJwb2ludEZ1bmN0aW9uIik7CiB9
CiAKQEAgLTY5Nyw4ICs3MDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdTZXF1
ZW5jZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVzKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5j
ZUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogfQogCkBA
IC03MTQsOCArNzI2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUYKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nU2VxdWVuY2VG
dW5jdGlvbjIoV1RGTW92ZSh2YWx1ZXMpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0
aW9uMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVk
ZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VG
dW5jdGlvbjJCb2R5Pigqc3RhdGUsICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMiIpOwogfQogCkBA
IC03MzEsOCArNzQ0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmMKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJl
cXVpcmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhT
ZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRo
U2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlQm9k
eT4oKnN0YXRlLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKIH0KIApA
QCAtNzQ1LDggKzc1OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+Ojpj
YWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5oCmluZGV4IGZhNDg3MzE1NmRhZmY2MmI4NTg1NDU1OWJkYTk0NTFmYzM5NmRj
YzMuLjllZDcyNWI2ZjI5YjMzOWFlYjA0MmY2MTE3OTdkMDc0YjU4NjI0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfdXRpbGl0eS5oCkBAIC0zNSw4ICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBJZGVudGlmaWVy
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgQmluZGluZ3Mgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggODQ0MDY0
NzUyZjkzZmZiMTQ3Y2IyOTA0ZGM2YjY5NDdhNGY5YzFlNS4uNzdhMjQxY2U2OGYxMmRiY2Q5OGNl
YWUyNjExNzQ4NWU3OGUyNTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQpAQCAtMjQ0LDE0ICsyNDQsMTQgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0M6OlZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHM8T2Jq
Q1J1bnRpbWVPYmplY3Q+KHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKIApAQCAtMjU5LDcg
KzI1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIE9iamNJbnN0YW5jZSogb2JqY0luc3Rh
bmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpDSW5zdGFuY2UoKTsKIAogICAgIGlm
ICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVP
YmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+YmVnaW4oKTsK
IApAQCAtMjY4LDkgKzI2OCw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChbdGFyZ2V0
T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9k
RnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpj
Q2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkp
OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFr
ZVVuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5k
ZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKLSAgICAgICAgY29u
c3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVj
dEltcCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdElt
cCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwogICAgICAgICBmYWxs
YmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01l
dGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IG9iamNJ
bnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChjYWxsRnJhbWUsIGZhbGxiYWNrTWV0aG9kLmdldCgp
KTsKICAgICB9CiAgICAgICAgICAgICAKICAgICBvYmpjSW5zdGFuY2UtPmVuZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKaW5kZXggZmQ2ZTVlZDcxZjJlMGJjYWYz
NTRjZDYyY2UwMjcxOWE1M2FjMTc3OC4uODdmMTZiMGU4MGI2NzAwNWUxN2NjY2UxNWQ2OTNjYWZk
ZDYwY2Q0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBCaW5kaW5nczsKIAogV0VCQ09SRV9FWFBPUlQg
Y29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2Qi
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFJ1bnRpbWVNZXRob2QpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogUnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWV0aG9kKiBtZXRob2QpCiAg
ICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVj
dCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgbmF0aXZlIG9iamVjdCAibWV0aG9kIi4KQEAgLTg1LDM1
ICs4NSwzNSBAQCBJc29TdWJzcGFjZSogUnVudGltZU1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZN
JiB2bSkKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPnJ1bnRpbWVNZXRob2RTcGFjZSgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBSdW50aW1lTWV0aG9kKiBt
ZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oZXhlYy0+anNDYWxsZWUoKSk7Cisg
ICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICBpZiAoIW1ldGhvZC0+bWV0aG9kKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxSdW50aW1lT2JqZWN0Pih2bSkpIHsKICAgICAg
ICAgUnVudGltZU9iamVjdCogcnVudGltZU9iamVjdCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmpl
Y3QqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICAgICAgaW5zdGFuY2UgPSBydW50aW1lT2Jq
ZWN0LT5nZXRJbnRlcm5hbEluc3RhbmNlKCk7CiAgICAgICAgIGlmICghaW5zdGFuY2UpIAotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2FsbGluZyBhIHJ1bnRpbWUgb2Jq
ZWN0IG9mIGEgcGx1Z2luIGVsZW1lbnQ/CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8
SlNIVE1MRWxlbWVudD4odm0pKQogICAgICAgICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5j
ZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpLT53cmFwcGVkKCkp
OwogICAgICAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAgICAgfQogICAgIEFTU0VSVChpbnN0YW5jZSk7CiAKICAgICBp
bnN0YW5jZS0+YmVnaW4oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VN
ZXRob2QoZXhlYywgbWV0aG9kKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZv
a2VNZXRob2QoY2FsbEZyYW1lLCBtZXRob2QpOwogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAppbmRleCA4NzNiYTM0NmJjNGZhM2QyNzdhZDUwNGYyNzczMzBlMjk2
MzQyZWMzLi43ZDBlYTM1NmYyM2QzN2JjNmE1NTUzZjk4Y2MyZmJiMDRmMjM4NzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIyMiwxMiArMjIyLDEyIEBA
IEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgQVNTRVJUKGV4ZWMtPmpzQ2FsbGVlKCktPmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+
KGV4ZWMtPnZtKCkpKTsKLSAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKHN0YXRpY19jYXN0
PFJ1bnRpbWVPYmplY3QqPihleGVjLT5qc0NhbGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgp
LT5pbmhlcml0czxSdW50aW1lT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKKyAgICBSZWZQ
dHI8SW5zdGFuY2U+IGluc3RhbmNlKHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkpLT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogICAgIGluc3RhbmNlLT5i
ZWdpbigpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmludm9rZURlZmF1bHRNZXRo
b2QoZXhlYyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlRGVmYXVsdE1l
dGhvZChjYWxsRnJhbWUpOwogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yNDYsMTQgKzI0NiwxNCBAQCBDYWxsVHlwZSBSdW50
aW1lT2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkK
ICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU09iamVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEFTU0VSVChj
b25zdHJ1Y3Rvci0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZXhlYy0+dm0oKSkpOwotICAgIFJl
ZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Uoc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOworICAgIEpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2Jh
bE9iamVjdCwgY29uc3RydWN0b3ItPmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+KGdsb2JhbE9iamVj
dC0+dm0oKSkpOworICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Uoc3RhdGljX2Nhc3Q8UnVu
dGltZU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPmdldEludGVybmFsSW5zdGFuY2Uo
KSk7CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmludm9rZUNvbnN0cnVjdChleGVjLCBhcmdzKTsK
KyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3Rh
bmNlLT5pbnZva2VDb25zdHJ1Y3QoY2FsbEZyYW1lLCBhcmdzKTsKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiAgICAgCiAgICAgQVNTRVJUKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmgKaW5kZXggZjUxOGMxMjZhODA3MjNkNjUyZDU4NDcxOGYxMmFmNmQ4MmU0NGI2ZS4uMzVi
MTdhZWY1OTY5ZGE4M2YxYWY3M2RiOTQzMzE2Yzk1NTFjZWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9TdWJ0bGVDcnlwdG8uaApAQCAtMzksNyArMzksOCBAQAogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsK
K2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCA2NzZmYmE4NTMy
ZjYwYThjNWNkNGI3NTI0MGNlYjliZDkzNmM4YjNkLi5mNTIyZGY0YmIxMjY3MjEwZTg2Zjg1MWI2
ZWI2NjM2MTZlOGE0MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtMzgsNyArMzgs
OCBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oCmluZGV4IDU4OWM4NDFjYzNlODhjZTc5ZTc0MmU3YjJi
YjM0YWU5ZTY5ZjA4YWIuLjFmNzgyNDJjNTk2MmQ4NTFiMWMwYTkyOGFkNjMxY2Q4YmU0MjhhZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5o
CkBAIC0zMiw3ICszMiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCAxMGUzNGQyNTUzMjllMzNkZDA1Mzk1NjcwYmRhOWUwY2Uz
ZWQyOTg2Li42YmY2MTljZDExNjExMjNmM2ZlNTkwMzg0NmQ3MzMxZjk0ZDY1NGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtODEsOCArODEsOSBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSW5wdXRDdXJzb3I7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggMjY1NmJiNDM0Y2VlNjcxNzVmZDZiMTVhMGJi
OTJjODMxYTA4Y2NhNy4uMGI1ZjNkODdjMDE1ODQ1NTYyYmM5MjljN2NmOGY4ZWI3NGRmNDk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTM2LDkgKzM2LDEwIEBACiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGYwZTY1NGI3MzBiOWRlMmE2
NTBjY2U1MjQyODQyNmUwNmM5YzEyMmUuLmVmYjAxNmY1NWM1MzA0ZmRhNmI0NWRhNGMxNzBjNjFk
YWIzYTA4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aApAQCAtNDAsMTEgKzQwLDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwotY2xh
c3MgRXhlY1N0YXRlOwogY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgVk07CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgU3Ryb25nOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAppbmRleCBkMWY0ZTIwMjUxNmM4YTkzYzhlMzNmMjYxYjZhZTcwMTNmMzg0MzZhLi40
MTQ2ZWU3ZTYyMzMxNDhiNTBiYTA0ZTY3NDA1NGE2NDFmZGU3NjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVk
ZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEFueS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBbnku
aAppbmRleCAzMTE1NDg4ZWMwNmZlMzU4NDE1NjBjYTIxZDQyOTIyNGE4ODY4N2NlLi41ZWY3ZWM0
MTAwZTY3YjdkNmFhZWVjZGFhYzZlZDkxNTIxMzNlNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQW55LmgKQEAgLTMzLDggKzMzLDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDgwNGYyYmNiMjg5NmZjOTAx
YzM1NTRhZDY4MzRhYzFiYWFhNDUzYzAuLjAzNGUxZWY0NzE1ODFmNDcxYmZmODI4YjVkMTM2Y2Y3
Mzk2MTJjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmgKQEAgLTQ2LDggKzQ2LDkgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogfQogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDBjMTFkMjg0M2M1NTNi
OTAyMjM2NmJiZmZiZWNmODQ5MDdmMjM2MmEuLjE0ODdiMTMxZTZiOWY2ODBhOGIyMmNkY2YzYjk0
ZjE1NDUzNzVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsOCBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKaW5kZXggODhlMzI3YWZmNjhkN2QyZDczNTVjMGEwMDEwYjM0OGNhZDFjN2M1My4uYjQ4MjI0
ZWJmMmQ2ODYwYzQzYzk1OWE1MWI2ZTVjNDhjM2ZjMzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCkBAIC00MiwxMCArNDIsMTEgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
T2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaAppbmRleCBmZmJmNjJiMjAxZmUz
MTI4NTM4MjE3OGMzNDlkMGFiMmI3NGU1NTcwLi5kNTZhNmY1ZDExOTgwY2I0ZmIyODdmYTJjNzVi
MTZkMmQ1Mzk1MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCkBA
IC0zNyw3ICszNyw4IEBAIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogfQogCiBuYW1lc3BhY2UgSlND
IHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRE9NV2luZG93LmgKaW5kZXggOTNmZWUxZWJiNGExOTkxMjZhYmY4Nzg4MDMyNjM5Mjk4NmVl
ZjMwZC4uZjU1YmY2YTFjOTBhZThhOGE3N2IxYWU4ZTk5NjM5NDQyZGU1OGM2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCkBAIC0zMSwxMCArMzEsMTEgQEAKICNpbmNsdWRl
IDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwogdGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA2YjY0MmYxOTA3NzdjMzBjZDEyODI0ZmRmYjRh
NTg4MzQ0ODg4NGI4Li5kYzAyYmY0ZjMwNmVhZjI4ZjlmNGE0ZjFjYWIzMDk1OWI2NmQzNDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApA
QCAtMzcsNyArMzcsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXggN2Y3ZjY0NGU0NzE3ZDk4OWUx
MGU1NGRhZTVlMTFlNWMwMWRmZWYyNS4uMmRlZGZhOTcyNTY4NTIwNWRjNWI4OWFhMzZlNjU1Njhm
YWIyNDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaApA
QCAtMzEsNyArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCA1ZmFiZGFjNjQ2NzhiNjljYjExMDQx
ZTZmNzBmOWY2ODJmMzllMDkwLi5kYWYxZDkzMWJhZjE2NDFkYmVjZWIzOGMyMzExNzQ4YjJiYTdm
Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC0zNiw5ICsz
NiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogaWQ7CiAjZW5kaWYKIAogbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIENhbGxGcmFtZTsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICB1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRl
eCA5NDAwZmE3NzlkYWRjOTZlZDc4NzE0NzNlYTkxOTYyNTA0ODVmMTljLi45MDUyOWE5ZThlZDE5
OWVmOGE0N2FjZWFlYjRkYzUzZTg1MzdmZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNCw5ICszNCwxMCBAQAog
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Zh
bHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCBlZTMxYzdjZWM1ZWZlOWZmZmJhNzQwY2Mw
NWMzYjU4MGY3MGNmOTI0Li44ZTNiZmE4N2VjNThmMDY4YTMyOTg0MDlhYTU2YjE0ZjljMDA2MGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTM4LDkgKzM4LDEwIEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKaW5kZXggMzg0
NmQyNzFiNjhiZDY5ODIwMDBiNTJiOWFiYWI5NzY3Njc2MTQ2OS4uY2I3ZGY2NzRhZTA4MjA1YzE5
MTllNDYzZDZmYzNhN2U0YmMwZWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb25zb2xlQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxl
TWVzc2FnZUV2ZW50LmgKaW5kZXggMGVlODE3NmVjNTk5Zjc5NDFlZjdjZWNiMDkxNGVkZWVhODU3
ZTMxMS4uOTNhOGVhZGQ3MDMwMGNlYzhjNThiY2YyYmFjMTFkOTQ3YjMyOGNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oCkBAIC0zNSw4ICszNSw5IEBACiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBK
U1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29s
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
aAppbmRleCA2MzFkYWU5OTAxYWM5YTQzZDIwODY5ZWE1ZDgxZmMzMzQ1OGM4ZTkwLi4xYmI3MTNk
NzA5YTFkNjgyOGRhYTcyNDlmOTRhN2ZiY2ViZmQxMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsK
K2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBlMDc0M2U0YTFiMGU2MTg5NGY1
OTcwMTk5Y2UyM2E1NWEwZDRmODgzLi42YmYwODVlZjRhMzliNWNkY2VkYmU2YmZiMmRjZWQxMTBj
MzU1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNOUE1ldGhvZCk7CiAKIGNvbnN0IENsYXNzSW5m
byBKU05QTWV0aG9kOjpzX2luZm8gPSB7ICJOUE1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOUE1ldGhvZCkg
fTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2Qo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTlBJZGVu
dGlmaWVyIG5wSWRlbnRpZmllcikKICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT52bSgpLCBzdHJ1Y3R1cmUsIGNhbGxNZXRob2QsIG51bGxwdHIpCkBAIC02NiwzMSArNjYsMzEg
QEAgSXNvU3Vic3BhY2UqIEpTTlBNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCiAgICAg
cmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganND
YXN0PEpTTlBNZXRob2QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU05QTWV0aG9kKiBqc05Q
TWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyBDaGVjayBpZiB3ZSdy
ZSBjYWxsaW5nIGEgbWV0aG9kIG9uIHRoZSBwbHVnLWluIHNjcmlwdCBvYmplY3QuCiAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxKU0hUTUxFbGVtZW50Pih2bSkpIHsKICAgICAgICAgSlNIVE1M
RWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgc2NyaXB0IG9iamVjdCBmcm9tIHRo
ZSBlbGVtZW50Ci0gICAgICAgIGlmIChKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2Ny
aXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpKQorICAgICAgICBpZiAoSlNPYmplY3QqIHNjcmlwdE9i
amVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChjYWxsRnJhbWUsIGVsZW1lbnQpKQogICAgICAgICAg
ICAgdGhpc1ZhbHVlID0gc2NyaXB0T2JqZWN0OwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHM8SlNOUE9iamVjdD4odm0pKSB7CiAgICAgICAgIEpTTlBPYmplY3QqIGpzTlBPYmpl
Y3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVjLCBqc05Q
TWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTlBPYmplY3QtPmNhbGxNZXRob2QoY2FsbEZyYW1lLCBqc05QTWV0aG9kLT5ucElkZW50aWZp
ZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGU1NzE1MWMwODQwZmQx
OGY1OWQxOWFjMGUwOTMwYjJjOWVhMDNlY2YuLjAyYTM3MGE5ZWY1ZGY1NjM4MTVlOTM2ZDc3ZmQy
YjcxN2I4MTVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0yMzksMTIgKzIzOSwxMiBAQCBKU1Zh
bHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TlBKU09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsTlBKU09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+anNDYWxs
ZWUoKTsKLSAgICBBU1NFUlQob2JqZWN0LT5pbmhlcml0czxKU05QT2JqZWN0PihleGVjLT52bSgp
KSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgb2JqZWN0LT5pbmhlcml0czxKU05QT2JqZWN0Pihn
bG9iYWxPYmplY3QtPnZtKCkpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNDYXN0
PEpTTlBPYmplY3QqPihvYmplY3QpLT5jYWxsT2JqZWN0KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KS0+Y2FsbE9iamVjdChjYWxs
RnJhbWUpKTsKIH0KIAogSlNDOjpDYWxsVHlwZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6
OkpTQ2VsbCogY2VsbCwgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC0yNTgsMTIgKzI1OCwx
MiBAQCBKU0M6OkNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiBj
ZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU09iamVjdCogY29uc3RydWN0b3Ig
PSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+aW5oZXJpdHM8SlNO
UE9iamVjdD4oZXhlYy0+dm0oKSkpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNhbGxG
cmFtZS0+anNDYWxsZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgY29uc3Ry
dWN0b3ItPmluaGVyaXRzPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVjdCo+KGNvbnN0cnVjdG9yKS0+
Y2FsbENvbnN0cnVjdG9yKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2Fz
dDxKU05QT2JqZWN0Kj4oY29uc3RydWN0b3IpLT5jYWxsQ29uc3RydWN0b3IoY2FsbEZyYW1lKSk7
CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNOUE9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
IGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVj
dE1hcC5oCmluZGV4IDY5Y2E1MTE4MTQzOWRmZTljMWQxNjU3M2U1ODY5MDEzYWY3YTBjYWUuLjY2
ZjFmYzQwOWIxNjVhMzE0MTliNjU5MDUzYjQ1MjcyMWI4ODkwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGlt
ZU9iamVjdE1hcC5oCkBAIC0zOCwxMSArMzgsMTIgQEAgc3RydWN0IE5QT2JqZWN0OwogdHlwZWRl
ZiBzdHJ1Y3QgX05QVmFyaWFudCBOUFZhcmlhbnQ7CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNs
YXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAgICAgY2xhc3MgVk07CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNW
YWx1ZTsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5oCmluZGV4IDgzNTdkOTFjYTVjNWMyNGU3ZDY0NzM2Y2VlZWUzYTViMGQ2NjVh
ZTUuLjc5YzJhNjkxOGViNGM4YTcwOThhNWQ1OWJiMDA1YzU2MDU4MjhhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKQEAg
LTM2LDExICszNiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1l
OwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBj
bGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBBcmdMaXN0OworICAgIHVzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIH0KIAogQGNsYXNzIFdlYlNjcmlwdENhbGxGcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380247</attachid>
            <date>2019-10-04 13:37:18 -0700</date>
            <delta_ts>2019-10-04 15:39:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202569-20191004133717.patch</filename>
            <type>text/plain</type>
            <size>1302969</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NTEzM2I5ZDcxZTM3Mzc0YmY1Y2E4MDBiOTdkYmI1YTQwMjY3ZjZkLi41NjQwMDUzZTQwZDFhNjJj
YmY4MTRlNDdlMjg3ZWZkODVhMTY3NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5ODEgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAg
ICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvQVBJQ2FzdC5oOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9i
YWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNCYXNlSW50ZXJu
YWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUu
aDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRy
eS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
QXR0cmlidXRlRXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVy
YXRvckVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldElu
dGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3Bl
RGVzY3JpcHRpb25zKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU291cmNlSUQpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVl
ZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxs
ZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxl
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxv
Y2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVC
bG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjpyZWdpc3RlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZU9yRW50cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnJldHVyblBDIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNSZXR1cm5QQyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJSZXR1cm5QQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFic3RyYWN0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnRvcE9mRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENh
bGxlckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJl
c3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVj
a2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3Vt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnZXRBcmd1bWVudFVuc2Fm
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldFRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4
ZWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpz
ZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0ZXJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9yUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5kUEMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OmluaXQpOgorICAg
ICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5oOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAg
ICAgICAqIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6
OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnRTdGRPdXQpOgorICAgICAgICAoZnVuY3Rpb25Qcmlu
dFN0ZEVycik6CisgICAgICAgIChmdW5jdGlvbkRlYnVnKToKKyAgICAgICAgKGZ1bmN0aW9uRGVz
Y3JpYmUpOgorICAgICAgICAoZnVuY3Rpb25EZXNjcmliZUFycmF5KToKKyAgICAgICAgKGZ1bmN0
aW9uU2xlZXBTZWNvbmRzKToKKyAgICAgICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAo
ZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcFNpemUpOgorICAgICAgICAo
ZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspOgorICAgICAgICAoZnVuY3Rpb25BZGRyZXNzT2YpOgor
ICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6CisgICAgICAg
IChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAg
ICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdG
bGFncyk6CisgICAgICAgIChmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncyk6CisgICAgICAgIChm
dW5jdGlvbkdldFJhbmRvbVNlZWQpOgorICAgICAgICAoZnVuY3Rpb25TZXRSYW5kb21TZWVkKToK
KyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNl
T3JpZ2luKToKKyAgICAgICAgKGZ1bmN0aW9uUmVhZGxpbmUpOgorICAgICAgICAoZnVuY3Rpb25Q
cmVjaXNlVGltZSk6CisgICAgICAgIChmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pOgorICAg
ICAgICAoZnVuY3Rpb25Ob0RGRyk6CisgICAgICAgIChmdW5jdGlvbk5vRlRMKToKKyAgICAgICAg
KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyk6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCk6CisgICAgICAgIChmdW5jdGlvbkRv
bGxhckNyZWF0ZVJlYWxtKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6Cisg
ICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOgorICAgICAgICAoZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
cG9ydCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U2xlZXApOgorICAgICAgICAoZnVu
Y3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50
R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKToKKyAgICAg
ICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3cpOgorICAgICAgICAoZnVuY3Rpb25X
YWl0Rm9yUmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uSGVhcENhcGFjaXR5KToKKyAgICAgICAg
KGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKToKKyAgICAgICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKGZ1bmN0aW9uTWFsbG9jSW5BTG9vcCk6CisgICAgICAgIChm
dW5jdGlvblRvdGFsQ29tcGlsZVRpbWUpOgorICAgICAgICAoZnVuY3Rpb25KU0NPcHRpb25zKToK
KyAgICAgICAgKGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KToKKyAgICAgICAgKGZ1
bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3
Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1bmN0aW9uUXVpdCk6CisgICAgICAgIChmdW5jdGlvbkZh
bHNlKToKKyAgICAgICAgKGZ1bmN0aW9uVW5kZWZpbmVkMSk6CisgICAgICAgIChmdW5jdGlvblVu
ZGVmaW5lZDIpOgorICAgICAgICAoZnVuY3Rpb25Jc0ludDMyKToKKyAgICAgICAgKGZ1bmN0aW9u
SXNQdXJlTmFOKToKKyAgICAgICAgKGZ1bmN0aW9uSWRlbnRpdHkpOgorICAgICAgICAoZnVuY3Rp
b25FZmZlY3RmdWw0Mik6CisgICAgICAgIChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAg
ICAgIChmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAoZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Mp
OgorICAgICAgICAoZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMpOgorICAgICAgICAoZnVuY3Rpb25J
czMyQml0UGxhdGZvcm0pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblBs
YXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAgICAgKGZ1bmN0aW9uR2VuZXJh
dGVIZWFwU25hcHNob3QpOgorICAgICAgICAoZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZv
ckdDRGVidWdnaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6
CisgICAgICAgIChmdW5jdGlvbkVuc3VyZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChmdW5jdGlv
blN0YXJ0U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyk6CisgICAgICAgIChmdW5jdGlvbk1heEFyZ3VtZW50cyk6CisgICAgICAg
IChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KToKKyAgICAgICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFz
c2VkKToKKyAgICAgICAgKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKToKKyAgICAgICAg
KGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAocnVuV2l0
aE9wdGlvbnMpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENh
bGwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkNMb29wUmVnaXN0ZXI6OmNh
bGxGcmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNMb29wUmVnaXN0ZXI6OmV4ZWNTdGF0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIG9mZmxpbmVhc20vY2xvb3AucmI6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RXaXRoQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxBcnJheUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNs
b3cpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Nw
ZWNpZXNDcmVhdGUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQ
cm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1
bmNDb25jYXRNZW1jcHkpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBl
bmRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEFzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNBZGQpOgorICAgICAgICAoSlNDOjphdG9t
aWNzRnVuY0FuZCk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jQ29tcGFyZUV4Y2hhbmdlKToK
KyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNFeGNoYW5nZSk6CisgICAgICAgIChKU0M6OmF0b21p
Y3NGdW5jSXNMb2NrRnJlZSk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jTG9hZCk6CisgICAg
ICAgIChKU0M6OmF0b21pY3NGdW5jT3IpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY1N0b3Jl
KToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNTdWIpOgorICAgICAgICAoSlNDOjphdG9taWNz
RnVuY1dhaXQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY1dha2UpOgorICAgICAgICAoSlND
OjphdG9taWNzRnVuY1hvcik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNhbGxCaWdJbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OmJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4pOgorICAgICAgICAoSlNDOjpiaWdJbnRDb25z
dHJ1Y3RvckZ1bmNBc0ludE4pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAg
KEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1ZhbHVl
T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbEJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdp
dGhCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29sZWFuRnJv
bUltbWVkaWF0ZUJvb2xlYW4pOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRh
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGllbnQuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjb25zb2xl
TG9nV2l0aExldmVsKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0RlYnVnKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y29uc29s
ZVByb3RvRnVuY0xvZyk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNJbmZvKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1dhcm4pOgorICAgICAgICAoSlNDOjpjb25zb2xl
UHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jRGlyKToKKyAg
ICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0RpclhNTCk6CisgICAgICAgIChKU0M6OmNvbnNv
bGVQcm90b0Z1bmNUYWJsZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUcmFjZSk6
CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNBc3NlcnQpOgorICAgICAgICAoSlNDOjpj
b25zb2xlUHJvdG9GdW5jQ291bnQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQ291
bnRSZXNldCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNQcm9maWxlKToKKyAgICAg
ICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1Byb2ZpbGVFbmQpOgorICAgICAgICAoSlNDOjpjb25z
b2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90
b0Z1bmNUaW1lKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1RpbWVMb2cpOgorICAg
ICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZUVuZCk6CisgICAgICAgIChKU0M6OmNvbnNv
bGVQcm90b0Z1bmNUaW1lU3RhbXApOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jR3Jv
dXApOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQpOgorICAg
ICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQpOgorICAgICAgICAoSlNDOjpjb25z
b2xlUHJvdG9GdW5jUmVjb3JkKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1JlY29y
ZEVuZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KToKKyAgICAg
ICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQYXJzZSk6Cisg
ICAgICAgIChKU0M6OmRhdGVOb3dJbXBsKToKKyAgICAgICAgKEpTQzo6ZGF0ZU5vdyk6CisgICAg
ICAgIChKU0M6OmRhdGVVVEMpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvVVRDU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6ZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNUb1RpbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0cmluZyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXRUaW1lKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldEZ1bGxZ
ZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY0dldFVUQ01vbnRoKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldERhdGUpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZSk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXREYXkpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VVRDRGF5
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldEhvdXJzKToKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dl
dE1pbnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRlcyk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0
TWlsbGlTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vj
b25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRUaW1lKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY1NldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
U2V0VVRDTWludXRlcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRIb3Vycyk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNTZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldFVUQ0Rh
dGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0TW9udGgpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
U2V0RnVsbFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFllYXIp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6
CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9F
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZXNTcGVj
SXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OmNhbGxFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
RXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjplcnJvclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkZ1enouaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmNhbGxGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6aW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKToKKyAgICAgICAgKiBydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJ
bnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoK
KyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnbG9iYWxPYmplY3QgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOgorICAgICAgICAoSlNDOjpjYWxsSW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9j
YWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNP
Zik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKToKKyAgICAgICAg
KEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAg
KEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpj
YWxsSW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdEZ1bmNGb3Jt
YXROdW1iZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVy
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3Jt
YXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OmludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyk6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEludGxQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OmNhbGxJbnRsUGx1cmFsUnVs
ZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0
ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QpOgorICAgICAg
ICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8
c2hhcmluZ01vZGU+Ojpjb25zdHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OmNhbGxB
cnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyRnVuY0lzVmlldyk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0dldHRlckZ1
bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6c2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRl
ckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCk6CisgICAgICAgIChK
U0M6OmJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVu
Y3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ29uc3RydWN0KToK
KyAgICAgICAgKEpTQzo6aXNCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6aGFzSW5zdGFu
Y2VCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFy
Z3NDb3B5KToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAg
ICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb25DYWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgIChKU0M6
OmRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4KToKKyAgICAg
ICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNik6CisgICAgICAgIChKU0M6OmRhdGFW
aWV3UHJvdG9GdW5jR2V0SW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dl
dFVpbnQ4KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYpOgorICAg
ICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMik6CisgICAgICAgIChKU0M6OmRh
dGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9G
dW5jR2V0RmxvYXQ2NCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCk6
CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYpOgorICAgICAgICAoSlND
OjpkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90
b0Z1bmNTZXRVaW50OCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2
KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIpOgorICAgICAgICAo
SlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmll
d1Byb3RvRnVuY1NldEZsb2F0NjQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRlTWF0aC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnByb3RvdHlwZUZvckNvbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVE
YXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVEYXRhKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnbG9iYWxPYmplY3QgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Om1ha2VCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6aGFz
T3duTGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAoSlNDOjphc3NlcnRDYWxsKToKKyAgICAgICAg
KEpTQzo6ZW5xdWV1ZUpvYik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6
Z2xvYmFsRnVuY1BhcnNlSW50KToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1BhcnNlRmxvYXQp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRGVjb2RlVVJJKToKKyAgICAgICAgKEpTQzo6Z2xv
YmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFbmNv
ZGVVUkkpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KToKKyAg
ICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VzY2FwZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNV
bmVzY2FwZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAg
ICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxl
cik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKToKKyAgICAgICAgKEpT
Qzo6Z2xvYmFsRnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3Rv
U2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNCdWlsdGluTG9nKToKKyAgICAgICAgKEpT
Qzo6Z2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNJ
bXBvcnRNb2R1bGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jT3duS2V5cyk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgICogcnVu
dGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclBhcnNl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyk6Cisg
ICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6
CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJSZXNvbHZlU3luYyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlckZldGNoKToK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyRXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OnJ1blN0ZEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jUGFyc2UpOgorICAg
ICAgICAoSlNDOjpKU09OUHJvdG9GdW5jU3RyaW5naWZ5KToKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RUeXBlZEFy
cmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRBcnJheVZp
ZXcpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6dHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6dHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6dHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0TWFwKToK
KyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKToKKyAgICAgICAgKEpT
Qzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRLZXkpOgorICAgICAgICAoSlNDOjptYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAg
ICAoSlNDOjptYXBQcm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0Rl
bGV0ZSk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0dldCk6CisgICAgICAgIChKU0M6Om1h
cFByb3RvRnVuY0hhcyk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY1NldCk6CisgICAgICAg
IChKU0M6Om1hcFByb3RvRnVuY1NpemUpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBYnMpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jQUNvcyk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBU2luKToKKyAgICAg
ICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5j
QVRhbjIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ2VpbCk6CisgICAgICAgIChKU0M6
Om1hdGhQcm90b0Z1bmNDbHozMik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDb3MpOgor
ICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jRXhwKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY0Zsb29yKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0h5cG90KToKKyAgICAgICAg
KEpTQzo6bWF0aFByb3RvRnVuY0xvZyk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNNYXgp
OgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWluKToKKyAgICAgICAgKEpTQzo6bWF0aFBy
b3RvRnVuY1Bvdyk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNSYW5kb20pOgorICAgICAg
ICAoSlNDOjptYXRoUHJvdG9GdW5jUm91bmQpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5j
U2lnbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNTaW4pOgorICAgICAgICAoSlNDOjpt
YXRoUHJvdG9GdW5jU3FydCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUYW4pOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jSU11bCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1
bmNBQ29zaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBU2luaCk6CisgICAgICAgIChK
U0M6Om1hdGhQcm90b0Z1bmNBVGFuaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDYnJ0
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Nvc2gpOgorICAgICAgICAoSlNDOjptYXRo
UHJvdG9GdW5jRXhwbTEpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jRnJvdW5kKToKKyAg
ICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xvZzFwKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3Rv
RnVuY0xvZzEwKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xvZzIpOgorICAgICAgICAo
SlNDOjptYXRoUHJvdG9GdW5jU2luaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUYW5o
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1RydW5jKToKKyAgICAgICAgKiBydW50aW1l
L01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL01pY3JvdGFzay5oOgorICAgICAgICAq
IHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6
Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaDoKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRnVuY3Rpb246Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpU
YWdnZWROYXRpdmVGdW5jdGlvbjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogcnVudGltZS9OdWxs
R2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxsR2V0dGVyRnVuY3Rpb25JbnRl
cm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVy
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6
Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbE51bWJlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29u
c3RydWN0b3JGdW5jSXNJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JG
dW5jSXNTYWZlSW50ZWdlcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKToKKyAgICAgICAg
KEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6CisgICAgICAgIChKU0M6Om51bWJlclByb3Rv
RnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAg
IChKU0M6Om51bWJlclByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQpOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsT2Jq
ZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckFzc2lnbik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
VmFsdWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyk6CisgICAg
ICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
cklzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXMpOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJsZVByb3h5
KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6OmNhbGxQ
cm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwOgorICAgICAgICAoSlNDOjpwZXJm
b3JtUHJveHlSZXZva2UpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0
KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChK
U0M6OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2Jq
ZWN0T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9u
cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcik6CisgICAg
ICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlNDOjpyZWdFeHBD
b25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yTGFz
dE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4pOgorICAg
ICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6
cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgorICAgICAgICAoSlNDOjpzZXRSZWdFeHBD
b25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0
aWxpbmUpOgorICAgICAgICAoSlNDOjplc1NwZWNSZWdFeHBDcmVhdGUpOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsUmVn
RXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJl
Z0V4cFByb3RvRnVuY1Rlc3RGYXN0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jRXhl
Yyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdCk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKToKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dl
dHRlckRvdEFsbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKToKKyAgICAgICAgKEpTQzo6cmVn
RXhwUHJvdG9HZXR0ZXJGbGFncyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyU291
cmNlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdCk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y2FsbFNldCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAg
ICAgIChKU0M6OnNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCk6CisgICAgICAgIChKU0M6OnNl
dFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCk6CisgICAgICAgIChKU0M6OnNldFByaXZhdGVGdW5j
U2V0QnVja2V0S2V5KToKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRTZXQpOgor
ICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNBZGQpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1
bmNDbGVhcik6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0RlbGV0ZSk6CisgICAgICAgIChK
U0M6OnNldFByb3RvRnVuY0hhcyk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1NpemUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpz
dHJpbmdGcm9tQ2hhckNvZGUpOgorICAgICAgICAoSlNDOjpzdHJpbmdGcm9tQ29kZVBvaW50KToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y2FsbFN0cmluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rl
cik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQ2hhckF0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQ2hhckNv
ZGVBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAoSlND
OjpzdHJpbmdQcm90b0Z1bmNTdWJzdHJJbXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNUb1VwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBh
cmUpOgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVu
Y1RvTG9jYWxlVXBwZXJDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVHJpbSk6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1RyaW1FbmQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNT
dGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdJbmNsdWRlc0ltcGwpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OmJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxTeW1ib2wpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3Rv
ckZvcik6CisgICAgICAgIChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAg
KiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN5bWJvbFByb3Rv
R2V0dGVyRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6OnN5bWJvbFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAqIHJ1
bnRpbWUvVGhyb3dTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTVRyYXBz
Lmg6CisgICAgICAgICogcnVudGltZS9XYXRjaGRvZy5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtNYXApOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RXZWFrTWFwKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6cHJv
dG9GdW5jV2Vha01hcERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBHZXQp
OgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwSGFzKToKKyAgICAgICAgKEpTQzo6cHJv
dG9GdW5jV2Vha01hcFNldCk6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2Vha1JlZik6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdFdlYWtSZWYpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtSZWYpOgorICAgICAgICAoSlNDOjpwcm90b0Z1
bmNXZWFrUmVmRGVyZWYpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
ZWFrU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZXRXZWFrU2V0KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1NldERlbGV0
ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXRIYXMpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6RE9NSklUR2V0dGVyQ29tcGxleDo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpET01KSVRGdW5jdGlvbk9iamVjdDo6ZnVuY3Rpb25XaXRoVHlwZUNo
ZWNrKToKKyAgICAgICAgKEpTQzo6RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6ZnVuY3Rpb25X
aXRoVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2Vy
QWRkQnl0ZXMpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJGaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3Jhc2gpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkJyZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkRGR1RydWUpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkZUTFRydWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNwdU1mZW5j
ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1UmR0c2MpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkNwdUNwdWlkKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcHVQYXVzZSk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uQ3B1Q2xmbHVzaCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTExpbnRU
cnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25KSVRUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25Ob0lubGluZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR0MpOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFz
aGVzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKToKKyAgICAgICAgKEpTQzo6Y29kZUJsb2NrRnJvbUFy
Zyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25EdW1wU291cmNlRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wQnl0ZWNv
ZGVGb3IpOgorICAgICAgICAoSlNDOjpkb1ByaW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25E
YXRhTG9nKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25QcmludCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uRHVtcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcFN0YWNrKToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25EdW1wQ2VsbCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSW5kZXhpbmdNb2RlKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25JbmxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OmZ1bmN0
aW9uVmFsdWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldFBJRCk6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uSGF2ZUFCYWRUaW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Jc0hhdmluZ0FC
YWRUaW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVByb3h5KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
cmVhdGVSdW50aW1lQXJyYXkpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZU51bGxSb3Bl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVh
dGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVh
dGVET01KSVRGdW5jdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9N
SklUQ2hlY2tTdWJDbGFzc09iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9N
SklUR2V0dGVyQmFzZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVXYXNt
U3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0
b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdh
dGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4pOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3Jl
YXRlUm9vdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRWxlbWVudCk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uR2V0RWxlbWVudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRl
U2ltcGxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25SZXR1cm5UeXBlRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFy
eU9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcEJhc2ljQmxvY2tFeGVjdXRpb25S
YW5nZXMpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZCk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KToKKyAgICAgICAg
KEpTQzo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rp
b25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRGlz
YWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EZWxldGVB
bGxDb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdsb2JhbE9iamVjdENvdW50
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkdldEdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
TG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0
ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkRlbHRhQmV0
d2VlbkJ1dHRlcmZsaWVzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Ub3RhbEdDVGltZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uUGFyc2VDb3VudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
SXNXYXNtU3VwcG9ydGVkKToKKyAgICAgICAgKiB3YXNtL1dhc21FbWJlZGRlci5oOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5
Q29tcGlsZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6
CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKToKKyAgICAgICAgKEpTQzo6
d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
cik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNX
ZWJBc3NlbWJseUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAo
SlNDOjpjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNX
ZWJBc3NlbWJseU1lbW9yeSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpT
Qzo6d2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2Vt
Ymx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVs
ZUltcG9ydHMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMpOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKEpTQzo6
Y2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUpOgorICAg
ICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0dyb3cpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KToK
KyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldCk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JD
b2RlLmg6CisKIDIwMTktMTAtMDQgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjUwNTgzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDNhYTY0YjhkYjFkYTIxMGEyNDFkZDRhYjZiNmYxMTBhZDMwZTQ0YmEuLjFmM2ZiMDgzNDU5NDI4
MzUwNDA4OTFkOWM0YjdkMDk2ZTFhNTQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MzEgQEAK
KzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRN
ZXJjaGFudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlSYW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b25Db250ZXh0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+Ojpjb25zdHJ1Y3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsVGhyb3dU
eXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlVGhpc1R5cGVFcnJvckZv
ckJ1aWx0aW5zKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWls
dGlucyk6CisgICAgICAgIChXZWJDb3JlOjppc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okl0ZXJhdG9yVHJhaXRzPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01O
YW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0bGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxQbHVnaW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTV2ViQW5pbWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbG9uZUFy
cmF5QnVmZmVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpjbG9uZUFycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU3RydWN0dXJlZENsb25lLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBvbGlu
ZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbik6Cisg
ICAgICAgIChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKToKKyAgICAgICAgKEdlbmVy
YXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUl0ZXJhYmxlRGVm
aW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMpOgorICAg
ICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25HZXQpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25IYXMpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
blZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2gpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQp
OgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDRVJlYWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
U3BlY2lmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVG
dW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVB
cmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVu
Y3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxh
YmxlVmFyaWFudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRCeVNldHRpbmdQ
cm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvblJlZ3VsYXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uR2V0U2VjcmV0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRz
TWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkltcGxlbWVudHNNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVh
Y2gpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlRnVuY3Rpb25OYW1lZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
TmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25U
b0pTT04pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxsSlNUZXN0T2JqMSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxs
SlNUZXN0T2JqMik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsSlNUZXN0T2JqMyk6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsSlNUZXN0T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
blN0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNl
Y3JldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldFNlY3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRo
b2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZVN0cmluZ1NwZWNpYWxNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVU1ZTdHJpbmdBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0Fy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Qcml2YXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRl
T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4
ZWNTdGF0ZVZvaWRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2Jq
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2Fs
bGVyRG9jdW1lbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFy
Z0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0Vt
cHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG9uZ0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9u
Z0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTZXF1ZW5jZUlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFs
c2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBbnkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9u
YWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0
YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNo
aW5nVW5pb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbkNsYXNzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25P
cHRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25Q
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Mik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFy
Z3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVu
Y3Rpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0
b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE92ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9u
YXJ5UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlMSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlv
blRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5j
dGlvblRvSlNPTik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmlu
Zyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU2VxdWVuY2VPZlVuaW9uc0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blN0cmluZ1NlcXVlbmNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAgICogYnJpZGdlL2MvY191
dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRob2Qp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpjYWxsUnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxs
UnVudGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEFueS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUmVtb3RlRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5Lmg6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50Lmg6CisKIDIwMTktMTAtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBpbmNsdWRlcyB0byBtYWtl
IHRoZSBidWlsZCBhIGJpdCBmYXN0ZXI6IERPTVByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE3ODgwMGZl
YzMzMDNkNjhhYmYyMzI5YjU3ZTc0MzM4MjQ1Mzc5Zi4uMDk4MTU3MjUxMjA1NjQ2ZDg3NjJkZDcz
ZjUyZjFhMThjNmUzZWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMC0wNCAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENoYW5n
ZSBzaWduYXR1cmUgb2YgSG9zdEZ1bmN0aW9uIHRvIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y2FsbE1ldGhvZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTlBKU09iamVjdCk6CisgICAgICAg
IChXZWJLaXQ6OmNvbnN0cnVjdFdpdGhDb25zdHJ1Y3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorCiAyMDE5LTEwLTA0ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBJ
bXBsZW1lbnQgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBTUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA5YWIzMDUyNmQxMjNkMjIzMzFmY2FhOTE1OTg3ZDYyNDdhZWQzOTk3Li4y
MDgzNzZkYjMzMjQ1MDFmNTljM2MzMzhiNTQyODMxNWRiZjJiNjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9m
IEhvc3RGdW5jdGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlw
dERlYnVnZ2VyLmg6CisKIDIwMTktMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTaW1wbGlmeSBzYW5kYm94IGVuYWJsaW5nIG1hY3Jv
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApp
bmRleCBlNTI4M2I1YjQyY2QzYzhkYWE2M2YyOWZjMmZlOTg4NjEzZDZjOGRlLi5lYTc4NDhkZWUx
YWI2NTE4ZWE3ZDdjNTVlZjFkZTNiMTFlM2I1ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApAQCAtMzYsNzIgKzM2LDcyIEBAIG5hbWVz
cGFjZSBKU0MgewogCiBzdHJ1Y3QgQVBJQ2FsbGJhY2tGdW5jdGlvbiB7CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNT
dGF0ZSopOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdChFeGVjU3RhdGUqKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYg
PSB0b1JlZihleGVjKTsKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMt
PmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8
SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkp
KTsKKyAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CisgICAgSlNP
YmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAg
IEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIE5vdFN0cmljdE1vZGUpKSk7CiAKLSAg
ICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1lbnRDb3Vu
dCgpKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRz
OwogICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQotICAgICAgICBhcmd1
bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpKSk7CisgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7CiAgICAgSlNWYWx1ZVJlZiByZXN1bHQ7CiAgICAgewotICAgICAgICBKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAgICAgIEpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwogICAgICAgICByZXN1bHQgPSBqc0Nh
c3Q8VCo+KHRvSlMoZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFjaygpKGV4ZWNSZWYsIGZ1
bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAm
ZXhjZXB0aW9uKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIHRvSlMoY2FsbEZyYW1lLCBleGNlcHRpb24pKTsK
IAogICAgIC8vIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4KICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCByZXN1bHQpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoY2FsbEZyYW1lLCByZXN1bHQpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVu
Y3Rpb246OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhl
Yy0+anNDYWxsZWUoKTsKLSAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CisgICAg
SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpOworICAgIEpTQ29u
dGV4dFJlZiBjdHggPSB0b1JlZihjYWxsRnJhbWUpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVj
dG9yUmVmID0gdG9SZWYoY29uc3RydWN0b3IpOwogCiAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1
Y3RvckNhbGxiYWNrIGNhbGxiYWNrID0ganNDYXN0PFQqPihjb25zdHJ1Y3RvciktPmNvbnN0cnVj
dENhbGxiYWNrKCk7CiAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpemVfdCBhcmd1bWVu
dENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgICAgICBzaXplX3QgYXJndW1lbnRD
b3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1
ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJn
dW1lbnRDb3VudDsgKytpKQotICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0
b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICAgICAgYXJn
dW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoaSkpKTsKIAogICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAg
ICAgICAgIEpTT2JqZWN0UmVmIHJlc3VsdDsKICAgICAgICAgewotICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgSlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICByZXN1bHQg
PSBjYWxsYmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMu
ZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBl
eGNlcHRpb24pKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IHRvSlMoY2FsbEZyYW1lLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhjYWxsRnJhbWUsIGV4Y2VwdGlvbikpOwogICAgICAgICB9CiAgICAgICAg
IC8vIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4KICAgICAgICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggYjJmMzg4OGI2NTFiOTdkMzljNGM1ZTE4
NGY1MDI3ZGJkYzA4ZTJiMC4uM2I4MjBlOWU2ZjM0ZmI2MmViZmE4NzI1YzhiMzc5NjlkZTZjYjZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTMzLDExICszMywxMiBAQAog
I2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFz
cyBFeGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5OwogICAgIGNsYXNzIFZNOwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpT
VmFsdWU7CisgICAgdXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHRHcm91cCogSlNDb250ZXh0R3JvdXBSZWY7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBmMDdh
MmRhYmIzMGY1OGU4MWM2YzhmOTk3MjJmYzc1M2VkNTZmNTdlLi5kOWE0MzM2MzExOTQzNWJlNTY3
OGZhNjYxOTVlYjRkNDg4ZGZkOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTE3NywxNyArMTc3LDE3IEBAIEpTSW50ZXJuYWxQcm9t
aXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsICJObyBtb2R1bGUgbG9hZGVyIHByb3ZpZGVkLiIpKTsKIAogICAgIGF1dG8gZGVm
ZXJyZWRQcm9taXNlID0gU3Ryb25nPEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ+KHZtLCBkZWZl
cnJlZCk7Ci0gICAgYXV0byogcmVzb2x2ZSA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAxLCAicmVzb2x2ZSIsIFs9XSAoRXhlY1N0YXRlKiBleGVjKSB7Cisg
ICAgYXV0byogcmVzb2x2ZSA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAicmVzb2x2ZSIsIFs9XSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKICAgICAgICAgLy8gVGhpcyBjYXB0dXJlcyB0aGUgZ2xv
YmFsT2JqZWN0IGJ1dCB0aGF0J3Mgb2sgYmVjYXVzZSBvdXIgc3RydWN0dXJlIGtlZXBzIGl0IGFs
aXZlIGFueXdheS4KLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlND
b250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVmKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpKV07Ci0gICAgICAgIGlkIHNjcmlwdCA9IHZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgdG9SZWYoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICAgICAgaWQgc2Ny
aXB0ID0gdmFsdWVUb09iamVjdChjb250ZXh0LCB0b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCiAg
ICAgICAgIGF1dG8gcmVqZWN0UHJvbWlzZSA9IFsmXSAoU3RyaW5nIG1lc3NhZ2UpIHsKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7Ci0gICAg
ICAgICAgICBjYWxsKGV4ZWMsIGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJl
amVjdCgpLCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICAg
ICAgYXJncy5hcHBlbmQoY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgbWVzc2FnZSkpOworICAg
ICAgICAgICAgY2FsbChjYWxsRnJhbWUsIGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJy
ZWQ6OnJlamVjdCgpLCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogICAgICAgICB9OwogCkBAIC0y
MDYsMTUgKzIwNiwxNSBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICAgICAgcmV0
dXJuIHJlamVjdFByb21pc2UobWFrZVN0cmluZygiVGhlIHNhbWUgSlNTY3JpcHQgd2FzIHByb3Zp
ZGVkIGZvciB0d28gZGlmZmVyZW50IGlkZW50aWZpZXJzLCBwcmV2aW91c2x5OiAiLCBvbGRNb2R1
bGVLZXksICIgYW5kIG5vdzogIiwgbW9kdWxlS2V5LnN0cmluZygpKSk7CiAKICAgICAgICAgYXJn
cy5hcHBlbmQoc291cmNlKTsKLSAgICAgICAgY2FsbChleGVjLCBkZWZlcnJlZFByb21pc2UtPkpT
UHJvbWlzZURlZmVycmVkOjpyZXNvbHZlKCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZlciBiZSBz
ZWVuLi4uIik7CisgICAgICAgIGNhbGwoY2FsbEZyYW1lLCBkZWZlcnJlZFByb21pc2UtPkpTUHJv
bWlzZURlZmVycmVkOjpyZXNvbHZlKCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZlciBiZSBzZWVu
Li4uIik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAgICB9KTsKIAot
ICAgIGF1dG8qIHJlamVjdCA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAicmVqZWN0IiwgWz1dIChFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBhdXRvKiBy
ZWplY3QgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwg
InJlamVjdCIsIFs9XSAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgewog
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgICAgICBhcmdzLmFwcGVuZChl
eGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOwogCi0gICAgICAgIGNhbGwoZXhlYywgZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VE
ZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJUaGlzIHNob3VsZCBuZXZlciBiZSBzZWVuLi4uIik7
CisgICAgICAgIGNhbGwoY2FsbEZyYW1lLCBkZWZlcnJlZFByb21pc2UtPkpTUHJvbWlzZURlZmVy
cmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZUludGVybmFsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQmFzZUludGVybmFsLmgKaW5kZXggYTI3NGFmOTZlOGM0MDk5NzY3
NjVjMTMzOGYyZWYyYTFmYmVkMTZmZC4uYTJmY2M1Y2RiZDk3OGQyYTM0ZGU5OTEyOWFmYmNjZjgx
YzA0MDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlSW50ZXJuYWwuaApA
QCAtMjksOSArMjksMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWJLaXRBdmFpbGFi
aWxpdHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0xv
Y2tIb2xkZXI7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBTb3VyY2VDb2RlOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBleHRlcm4gIkMiIEpTVmFsdWVSZWYgSlNFdmFsdWF0
ZVNjcmlwdEludGVybmFsKGNvbnN0IEpTQzo6SlNMb2NrSG9sZGVyJiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIGNvbnN0IEpTQzo6U291cmNl
Q29kZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGI4M2IxMzMxNDFiMTAxNTU2Yjg0OGNlM2ZmZGZl
ZDVlN2I4YjhjMzAuLjM3MjNlNDBmZWNiNTE3NmQ5NDdjMWU5ZTI0NzMzYjUwMzU2ZWYyZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMTgs
OCArMjE4LDggQEAgY2xhc3MgSlNDYWxsYmFja09iamVjdCBmaW5hbCA6IHB1YmxpYyBQYXJlbnQg
ewogICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0KiBhc0NhbGxiYWNrT2JqZWN0KEpTVmFsdWUp
OwogICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0KiBhc0NhbGxiYWNrT2JqZWN0KEVuY29kZWRK
U1ZhbHVlKTsKICAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
KEV4ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdChFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAgICAKICAgICBKU1ZhbHVlIGdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHN0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRl
eCBjNzIzNjMzOTViMDQ3NWI4ZWMxNjJiMDUwOGQyM2JkYTI3ODE3ZDExLi5jNTU3Zjk4ZmY3YTU1
OGVmZWFhODkwYjcxN2Q0M2U3NzBhYjZmZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNDQxLDMwICs0NDEs
MzAgQEAgQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KLUVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgSlNDb250
ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3Ig
PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCk7CisgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1Jl
ZihjYWxsRnJhbWUpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29u
c3RydWN0b3IpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KGNvbnN0cnVjdG9yKS0+Y2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVj
dENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IgPSBqc0NsYXNzLT5j
YWxsQXNDb25zdHJ1Y3RvcikgewotICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBl
eGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVS
ZWYsIDE2PiBhcmd1bWVudHM7CiAgICAgICAgICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNr
ZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAg
ICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhl
Yyk7CisgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGNh
bGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhjYWxsQXNDb25zdHJ1Y3Rv
cihleGVjUmVmLCBjb25zdHJ1Y3RvclJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEo
KSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVj
LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTQsMzAgKzUx
NCwzMCBAQCBDYWxsVHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENhbGxEYXRhKEpT
Q2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50PgotRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2Fs
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0Nv
bnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwotICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
UmVmID0gdG9SZWYoZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJl
ZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBOb3RTdHJpY3RNb2RlKSkpOworICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoY2Fs
bEZyYW1lKTsKKyAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+
anNDYWxsZWUoKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxK
U09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgTm90U3Ry
aWN0TW9kZSkpKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7
IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAo
SlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+
Y2FsbEFzRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhl
Yy0+YXJndW1lbnRDb3VudCgpOworICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVm
LCAxNj4gYXJndW1lbnRzOwogICAgICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2Vk
QXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAg
ICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uID0gMDsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0OwogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhbGxBc0Z1bmN0aW9uKGV4ZWNS
ZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0
YSgpLCAmZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGNhbGxGcmFtZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhj
YWxsRnJhbWUsIGNhbGxBc0Z1bmN0aW9uKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVm
LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIHRvSlMoY2FsbEZyYW1lLCBl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWUuaAppbmRleCA4ZGVmYzI2NzBjMTgyYTk1NWJmYjY1MTdhY2U0NjYwNGM1
ZGY3MTVlLi5kMGEwNzRhYmU1OWMzMGEyNzBiYTE1OGNjYWIzY2Q5ZTk3ZTc1Njk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCkBAIC0z
Nyw4ICszNyw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZTsK
LWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTRnVuY3Rpb247Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewog
ICAgIGVudW0gS2luZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CmluZGV4IDMxYTZlMGRmZGJkNmZlNDgyNTRhOWQxNjk5ZWMyNzFkZmJkYjQwZTguLjFlNWVhYTky
YzBhMGYwNmNiZDJlMjhjOWM0MDU1ZWYzZDRiMDQwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEV4Y2VwdGlv
bjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgU291cmNl
UHJvdmlkZXI7CiBjbGFzcyBWTTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1
Z2dlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcml0aE1vZGUuaAppbmRleCAwYTY0NDQ4NmUzNGY3MjljYTNlNGNkZjkwNTc3YzU5
ODQzOGU4NjQ5Li4zZWJhY2FiNzhhMmJhYTQ3OTU4OGY4ZWJhMGU1NzU2ZjhhNmVhYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKQEAgLTI5LDcgKzI5LDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIHVzaW5nIEVuY29kZWRKU1ZhbHVlID0gaW50
NjRfdDsKIAogbmFtZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDczYzgxMmMxZDU1MTZlMGVkNTJiNmRkZTdjNDcy
MzU5MWY3NjUxNWIuLjIzMzNjMjg0Yzg5MzI2OTMyYmJjNTZhZTUxZWM5MTQwNWU3NjQxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0zNjk3LDcgKzM2OTcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSAhPSBjb25zdHJ1Y3Rv
ckNsYXNzSW5mb0ZvclR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSkgIT0gbV9pbmxpbmVTdGFja1RvcC0+
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQorICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gV2Ugb25seSBoYXZlIGFuIGludHJp
bnNpYyBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IHNheToKQEAgLTM3MzQsNyArMzczNCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIGlmICghZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPnR5cGVkQXJyYXlT
dHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpCisgICAgaWYgKCFmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGluc2VydENoZWNrcygpOwpAQCAtMzc2NSw3ICszNzY1LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAg
IH0KIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6
aW5mbygpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSAhPSBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCisgICAgICAgIGlm
IChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
ICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CkBAIC0zODA2LDcgKzM4MDYsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgICAgICAgICBy
ZXN1bHROb2RlID0gYWRkVG9HcmFwaChDYWxsU3RyaW5nQ29uc3RydWN0b3IsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAgICByZXN1bHROb2Rl
ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1
cmUoKSkpLCByZXN1bHROb2RlKTsKKyAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBo
KE5ld1N0cmluZ09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rp
b24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHROb2Rl
KTsKICAgICAgICAgCiAgICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM4MzIsOSArMzgzMiw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKIAogICAgICAgICBOb2RlKiByZXN1bHROb2Rl
OwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAg
ICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPm9iamVjdFN0cnVj
dHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CisgICAgICAgICAgICByZXN1bHROb2RlID0g
YWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1
bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0
b3IoKSkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3Jh
cGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgqbV92bSkpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgICAgICByZXN1
bHROb2RlID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIE9wSW5mbyhtX2dyYXBo
LmZyZWV6ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAgICAg
ICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMjZiZDcyODZkZmZmZTYyYWY2
NDQyZmI3ODMyMWI3NTQ1MmVlNTRlMC4uMTVhZjQxYmUwNGUyYmM4M2Y5Y2I3OGJmZjdlMzBlYzEw
ZTEwYWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNTIsNyArNTIs
OCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2luZ2xlUm9vdEdyYXBoOwogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIERGRyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAppbmRleCA1MGNiMDYwNWMx
MDY3ZGU3YmRhMmZlMThjOWZjZGM1OTM1MWVhZTcyLi4xN2Y4YWVlMWUyZDg4ODY5Mjk2MWVmOWFl
YWRkMzQ1N2NkMzIxNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5o
CkBAIC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7Cit1c2luZyBFeGVjU3RhdGUgPSBD
YWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVmMDVlZTE1ZjI0ZGM2NTk1NzEwNjk0
N2Y1ZDdlNmIxMDZiMzYzMTIuLjlkMDM4YjVmMzJjNTY2OTA0MjcxNzIyMzI1YTYyZmNlNzQ5OWY0
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC03MjM1LDYgKzcyMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
RnVuY3Rpb25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdAogICAgIG1f
aml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
RnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZXhlY3V0YWJsZSksIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxl
KCkpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkp
OworICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpKTsKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2Uodm0oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggN2IwYzg5YTk0Y2EzMjhl
ZTk2ZWVlMGY0Yjk2ZmUyMjdjZDdkMWRjOC4uMTAzNjllNGU0OTQ1MjYwZGE3Y2M0YzEzYTNmNzE4
NmE2ZTQyMzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTgxLDYgKzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTQ2VsbF91c2VmdWxCeXRlcywgSlNDZWxsOjpp
bmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU0Rlc3RydWN0aWJsZU9i
amVjdF9jbGFzc0luZm8sIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkg
XAogICAgIG1hY3JvKEpTRnVuY3Rpb25fZXhlY3V0YWJsZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpIFwKKyAgICBtYWNybyhKU0Z1bmN0aW9uX2dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fc2Nv
cGUsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCiAgICAgbWFjcm8oSlNGdW5j
dGlvbl9yYXJlRGF0YSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSBcCiAgICAgbWFj
cm8oSlNHbG9iYWxPYmplY3RfcmVnRXhwR2xvYmFsRGF0YV9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4
cCwgSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cEdsb2JhbERhdGFPZmZzZXQoKSArIFJlZ0V4cEdsb2Jh
bERhdGE6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNl
dE9mTGFzdFJlZ0V4cCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggNGE1YzU0NWU2MGMzOTMwN2ZlNDJmMzU1YzRiNzIxNDNlNDNmNWZk
NS4uZTQxYmZjMjdlZDAxMmM2ZmZiOTE0M2EzNjU4YzdmMjdmYWUwODU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTYwNSw2ICs1NjA1
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUs
IGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CiAgICAgICAgIG1fb3V0LnN0
b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVu
Y3Rpb25fZXhlY3V0YWJsZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clpl
cm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1f
b3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpLCBmYXN0
T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgbXV0YXRv
ckZlbmNlKCk7CiAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRW50cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuaApp
bmRleCA0MzljNGMyMGFlN2E2NGFiOTMxMTMwNTU1N2M5ZDg4MGRmNWRkMmU5Li41ZjA5Y2I3NzI0
MjM5YTNlYjllZDIyNmUzMThkNWU2OWQ5ODE0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFbnRyeS5oCkBAIC0yOSw4ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7Cit1c2lu
ZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBGVEwgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggNjIzNzhl
ZjQzNGZkZmQzYTQ4NzUzZjI4NGI4NGI4M2JlNTQyZjFkMS4uZGFjM2RkNWRiZDllYmU3ODkxNGI1
MTFiNzE5MmViOTQ3MzVmMjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtMzgsNyArMzgsOCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggNTY4YmNhYmM2YjI5YjdlODQ2NDllODE2
Y2U5NGE3MWMwM2FkMzk2NC4uNzgxZTY2MjdhN2I5Y2I4NWIzZDJjOGM4N2Y5NDYxMDhjZjI1NWJk
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcApAQCAtMTA4LDE1ICsxMDgsMTYgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dEJhc2U6Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5j
dGlvbiwKICAgICBhdXRvKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2Ny
aXB0U3RhdGUoKTsKICAgICBKU0M6OlZNJiB2bSA9IHNjcmlwdFN0YXRlLT52bSgpOwogCi0gICAg
SlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uOwotCisgICAgSlNDOjpKU05hdGl2
ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uID0gbnVsbHB0cjsKKyAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9ja2VyKHZtKTsKIAotICAgICAgICBqc0Z1bmN0aW9uID0gSlNDOjpKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IDEsIFN0cmluZygpLCBbJiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEpTQzo6RXhl
Y1N0YXRlKiBleGVjKSB7Ci0gICAgICAgICAgICBpZiAoIWV4ZWMpCisgICAgICAgIGdsb2JhbE9i
amVjdCA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIGpzRnVu
Y3Rpb24gPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcoKSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAgICAgICAgICAg
aWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgY2hlY2tBc3luY0NhbGxSZXN1bHQoSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIiksIGNhbGxi
YWNrKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNPTlZhbHVlID0gdG9JbnNw
ZWN0b3JWYWx1ZSgqZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKQorICAgICAgICAgICAgZWxzZSBp
ZiAoYXV0byByZXN1bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKCpjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVz
dWx0KHJlc3VsdEpTT05WYWx1ZSwgY2FsbGJhY2spOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0
cmluZygiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4gKG11c3Qgbm90IGJlIGxv
bmdlciB0aGFuICIsIEpTT046OlZhbHVlOjptYXhEZXB0aCwgJyknKSksIGNhbGxiYWNrKTsKQEAg
LTEzMyw3ICsxMzQsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIGlmICghcmVzdWx0
KSB7CiAgICAgICAgIC8vIFNpbmNlIGBjYWxsYmFja2AgaXMgbW92ZWQgYWJvdmUsIHdlIGNhbid0
IGNhbGwgaXQgaWYgdGhlcmUncyBhbiBleGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvCiAgICAgICAg
IC8vIGV4ZWN1dGUgdGhlIGBKU05hdGl2ZVN0ZEZ1bmN0aW9uYCBpbnNpZGUgSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMuCi0gICAgICAgIGpzRnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgp
LT5mdW5jdGlvbigpKG51bGxwdHIpOworICAgICAgICBqc0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5j
dGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmgKaW5kZXggN2UyMDM5OWM4YTczZjFiYThmOWQxNDBhNGU4NjA0NDg0MGY2
Y2M5NS4uZGQzZjNkNjgyZGY1MmVkZTExMzhhYjE1MGM4ZWUzNDcxMWI2NzE5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oCkBAIC0zOSw3ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGYwZmZjNDVkZDlmYTZj
ZGY2MTdmMDM4MWU0NmY4ZGNlYmZlZjNjOGMuLjIzNzg3ZWE3YzkxYjEzOTNiN2E0OGFkMTUwMTQw
MjU3M2E5MGEyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
MzgsMTAgKzM4LDExIEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBDb25zb2xlQ2xpZW50OwogY2xhc3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0
YXRlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcAppbmRleCAwZTFjZjhhOTk4YjY3NjQ5ODgwM2FjZmM0OGE1YTcwNTI1ZWM3ZGVhLi43Y2Zj
Zjg4NGUyYzE5OTEwMWJkOWNkY2QwYjAxNjkyYTY0Zjc3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlLmNwcApAQCAtMzgsMjQgKzM4LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uU3VidHlwZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
SXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha01hcFNpemUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVu
dHJpZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1
ZXJ5SW5zdGFuY2VzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SG9sZGVycyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihF
eGVjU3RhdGUqKTsKLQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25TdWJ0eXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb25EZXRhaWxzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVq
ZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0
YW5jZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVy
eUhvbGRlcnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25F
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
OjpzX2luZm8gPSB7ICJJbmplY3RlZFNjcmlwdEhvc3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlKSB9OwogCkBAIC04NCwyMjUgKzg0LDIyNSBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQog
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTigic2F2ZWRSZXN1bHRBbGlh
cyIsIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlh
cywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1
dGVFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0
SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPmV2YWx1YXRlKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPmV2YWx1YXRlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRB
bGlhcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNhdmVkUmVzdWx0
QWxpYXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2F2
ZWRSZXN1bHRBbGlhcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5h
bWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5p
bnRlcm5hbENvbnN0cnVjdG9yTmFtZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pbnRlcm5hbENvbnN0cnVjdG9yTmFtZShjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
c0hUTUxBbGxDb2xsZWN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0
SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+aXNIVE1MQWxsQ29sbGVjdGlvbihleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGNhbGxGcmFtZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZl
R2V0dGVyVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9z
dCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+aXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uUHJveHlUYXJnZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRhcmdl
dFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+cHJveHlUYXJnZXRWYWx1ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5wcm94eVRhcmdldFZhbHVlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25X
ZWFrTWFwU2l6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBTaXpl
KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBT
aXplKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJ
bmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGNhbGxGcmFt
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrU2V0U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2Ny
aXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3Qq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPndlYWtTZXRTaXplKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPndlYWtTZXRTaXplKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFr
U2V0RW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRF
bnRyaWVzKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndl
YWtTZXRFbnRyaWVzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPml0ZXJhdG9yRW50
cmllcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5xdWVyeUluc3RhbmNlcyhleGVjKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5xdWVyeUluc3RhbmNlcyhjYWxsRnJh
bWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvblF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVk
U2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhv
c3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPnF1ZXJ5SG9sZGVycyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5xdWVyeUhvbGRlcnMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uU3VidHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnN1YnR5cGUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+c3VidHlwZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVu
Y3Rpb25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0
aW9uRGV0YWlscyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5mdW5jdGlvbkRldGFpbHMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFs
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRp
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5n
ZXRJbnRlcm5hbFByb3BlcnRpZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGNhbGxGcmFtZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApp
bmRleCBiODk5MWNkMmM3Y2I1MTVjNzEzMTA3Yjg5MmQ3ZWE2ZGI4Y2I1YzA0Li5mODg3ZWM3ODNl
MDUxYWVlNzlhOTJkMGQ5MjBiZDQ4NTcyOTMxMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuY3BwCkBAIC0zNywxOSArMzcsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiAvLyBGdW5jdGlvbnMuCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25T
Y29wZURlc2NyaXB0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZUZ1bmN0aW9uU2NvcGVEZXNjcmlwdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogLy8gQXR0cmlidXRlcy4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZVNvdXJjZUlEKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJp
YnV0ZUNvbHVtbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFT
Y3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVMaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lSXNUYWlsRGVsZXRlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBD
bGFzc0luZm8gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlOjpzX2luZm8gPSB7ICJKYXZh
U2NyaXB0Q2FsbEZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUpIH07CiAKQEAgLTcy
LDE0NyArNzIsMTQ3IEBAIHZvaWQgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgSlNDX05BVElWRV9H
RVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKCJpc1RhaWxEZWxldGVkIiwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lSXNUYWlsRGVsZXRlZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJh
bWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY2FsbEZy
YW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZUZ1bmN0aW9uU2NvcGVEZXNjcmlwdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGV4ZWMpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGNh
bGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlw
dENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y2FsbGVy
KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihj
YWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlE
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5z
b3VyY2VJRChleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5z
b3VyY2VJRChjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGlu
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
bGluZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5saW5l
KGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y29s
dW1uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVt
bihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFT
Y3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVG
dW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5mdW5jdGlvbk5hbWUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFp
bihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlQ2hhaW4oZXhlYykpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVDaGFpbihjYWxsRnJhbWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVB
dHRyaWJ1dGVUaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGhpc09iamVj
dChleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50aGlzT2Jq
ZWN0KGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1
ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBl
KGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnR5cGUoY2Fs
bEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0
ZWQoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXNUYWls
RGVsZXRlZChjYWxsRnJhbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAppbmRl
eCA2MDdmZWFmYjIwNjYzYjZjYzY4NGE1YjA4MzJjNGRkMGI0OTE4OTc1Li42MDJjOGJhNGM0ODk3
YjllNmMyODBkZmJiOTFlNzIzOTMwNGU2YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTM3LDggKzM3LDkgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApp
bmRleCA1NWNhNGQ1NzhmMDM3YjQ0NzAwODE3N2ZkYzk1YmU3OGQxOWMyYzM3Li4yM2JiMjE1ZGIy
Y2QxNDkxZWZiMTJiMjZlZGYxZGY1YTVkOGVkZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApAQCAtMzUs
OSArMzUsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDFlZWI0ZjhhOGM2NTMyNzUwZDhlMmY5MzNhYTYwNDYw
NTIwYWUxNDEuLjdlYTJmOWMyZjUzNDRhNWQ3ODBlM2E1MDc4MDVkOTdiZTZkYTRiN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVy
LmgKQEAgLTM4LDkgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CmluZGV4IGM4NTdjZGRmZWJkNzcxMzNkOTMyMWQwYmNmYWM5N2YwYTEyMjM4ZTcuLmJiZjE4YjU1
NWZmODNmMmRkZDQyM2YwYmE1NWY2ZmZjYWFiYzE5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCkBAIC0zNiw3ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQ
Qy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAppbmRl
eCA0ODMyZDZkZTgyNTM4NTZjZGIwZTUxMjU0MzlhOWY5Nzk0NmQ4ZjY4Li40MzU1YjIzNTRjYzQ5
NjA5OWM4ZGI1MmEzMmM2Nzg1ODU3OWVhMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwotY2xhc3MgRXhlY1N0YXRlOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCiBjbGFz
cyBBYnN0cmFjdFBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAppbmRleCBkZDIwMGUxYTM1MTA3MzEyZDFkMDVlMjUyMjI0MzM3NWE0OTQ1MjgxLi5k
MDBjM2M5YjgyNzdjNmI3ODQ1YmQ1M2ZjMjRmZTA3YzE3MjBjNDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC0zMyw3ICszMyw3IEBACiBu
YW1lc3BhY2UgSlNDICB7CiAKICAgICBjbGFzcyBBcmd1bWVudHM7Ci0gICAgY2xhc3MgRXhlY1N0
YXRlOworICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBj
bGFzcyBKU0NhbGxlZTsKICAgICBjbGFzcyBKU1Njb3BlOwpAQCAtNDEsNyArNDEsNyBAQCBuYW1l
c3BhY2UgSlNDICB7CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKLSAgICB0eXBlZGVmIEV4
ZWNTdGF0ZSBDYWxsRnJhbWU7CisgICAgdXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAg
ICAgY2xhc3MgQ2FsbFNpdGVJbmRleCB7CiAgICAgcHVibGljOgpAQCAtOTgsNyArOTgsNyBAQCBu
YW1lc3BhY2UgSlNDICB7CiAKICAgICAvLyBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9m
IHNjcmlwdCBleGVjdXRpb24uCiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0
byBtb3N0IGZ1bmN0aW9ucy4KLSAgICBjbGFzcyBFeGVjU3RhdGUgOiBwcml2YXRlIFJlZ2lzdGVy
IHsKKyAgICBjbGFzcyBDYWxsRnJhbWUgOiBwcml2YXRlIFJlZ2lzdGVyIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgaGVhZGVyU2l6ZUluUmVnaXN0ZXJzID0gQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCArIDE7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkg
eyBjYWxsZXJGcmFtZUFuZFBDKCkuY2FsbGVyRnJhbWUgPSBmcmFtZTsgfQogICAgICAgICB2b2lk
IHNldFNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKiBzY29wZSkgeyBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW3Njb3BlUmVnaXN0ZXJPZmZzZXRdID0gc2NvcGU7IH0K
IAotICAgICAgICBzdGF0aWMgdm9pZCBpbml0R2xvYmFsRXhlYyhFeGVjU3RhdGUqIGdsb2JhbEV4
ZWMsIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUpOworICAgICAgICBzdGF0aWMgdm9pZCBpbml0R2xv
YmFsRXhlYyhDYWxsRnJhbWUqIGdsb2JhbEV4ZWMsIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUpOwog
CiAgICAgICAgIC8vIFJlYWQgYSByZWdpc3RlciBmcm9tIHRoZSBjb2RlZnJhbWUgKG9yIGNvbnN0
YW50IGZyb20gdGhlIENvZGVCbG9jaykuCiAgICAgICAgIFJlZ2lzdGVyJiByKGludCk7CkBAIC0z
MDMsOCArMzAzLDggQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgcHJpdmF0ZToKIAotICAgICAg
ICBFeGVjU3RhdGUoKTsKLSAgICAgICAgfkV4ZWNTdGF0ZSgpOworICAgICAgICBDYWxsRnJhbWUo
KTsKKyAgICAgICAgfkNhbGxGcmFtZSgpOwogCiAgICAgICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
SW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggNWRmMDQ4Yzk5Nzc4M2FhNGQ3MTliMmQ3MzQyY2M3MmU1ZmRm
N2E1My4uYjYwMWRjZjcwM2NkOWVhNGEzYjUzZTg4YmVkOGIzYzUyZDQ1YTMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC04
MzgsNyArODM4LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDYWxsRnJhbWUqIGNhbGxGcmEKICAgICBBU1NFUlQoY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAK
ICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5p
bml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzY29wZSks
IHRoaXNPYmosIDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIEpTQ2FsbGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCB0aGlzT2Jq
LCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CkBAIC04OTQsNyArODk0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKICAgICB9CiAK
ICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5p
bml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRh
dGEoKSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CiAKICAgICBK
U1ZhbHVlIHJlc3VsdDsKICAgICB7CkBAIC05NjUsNyArOTY1LDcgQEAgSlNPYmplY3QqIEludGVy
cHJldGVyOjpleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCog
Y29uc3RydWMKICAgICB9CiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAg
ICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgY29uc3RydWN0b3IsIG5ld1Rhcmdl
dCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdD
b2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50
LCBhcmdzLmRhdGEoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICB7CkBAIC0xMDA0LDcg
KzEwMDQsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0
Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQogCiAgICAgc2l6ZV90IGFyZ3NDb3Vu
dCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogCi0gICAgcHJvdG9DYWxsRnJhbWUtPmlu
aXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdz
LmRhdGEoKSk7CisgICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFy
Z3MuZGF0YSgpKTsKICAgICAvLyBSZXR1cm4gdGhlIHN1Y2Nlc3NmdWwgY2xvc3VyZToKICAgICBD
YWxsRnJhbWVDbG9zdXJlIHJlc3VsdCA9IHsgY2FsbEZyYW1lLCBwcm90b0NhbGxGcmFtZSwgZnVu
Y3Rpb24sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgJnZtLCBzY29wZSwgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH07CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTExNDksOCArMTE0OSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAKICAg
ICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVy
IGZvciAndGhpcycuCiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUt
Pmdsb2JhbE9iamVjdCh2bSk7CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0g
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNj
b3BlLT5nbG9iYWxPYmplY3Qodm0pLCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CisgICAgcHJvdG9D
YWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CiAKICAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwpAQCAtMTE5OSw4ICsxMjAwLDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEMKICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1
bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1o
YXN0aGlzYmluZGluZwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGlu
ZworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0
KHZtKTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxG
cmFtZS5pbml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9i
amVjdCh2bSksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUg
Y29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggNTNlOThjNjBmM2M2ZGE3
ZTU5Nzc1NGQxMGM0ZTNhZmM0NjQzNDcyYS4uN2RiYzUxYzE2OWRjZDBjMjE2OTEwMmU3NzE2OWE0
Mzg3Njk3ZGE2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmgKQEAgLTQ1LDE0ICs0NSwyMiBAQCBzdHJ1Y3QgSlNfRVhQT1JUX1BS
SVZBVEUgUHJvdG9DYWxsRnJhbWUgewogICAgIHVpbnQzMl90IHBhZGRlZEFyZ0NvdW50OwogICAg
IGJvb2wgaGFzQXJpdHlNaXNtYXRjaDsKICAgICBKU1ZhbHVlICphcmdzOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3Q7CiAKLSAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90aGVyQXJncyA9IDApOworICAgIHZvaWQgaW5p
dChDb2RlQmxvY2sqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBK
U1ZhbHVlKiBvdGhlckFyZ3MgPSAwKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29u
c3QgeyByZXR1cm4gY29kZUJsb2NrVmFsdWUuUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9CiAgICAg
dm9pZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsgY29kZUJsb2NrVmFsdWUg
PSBjb2RlQmxvY2s7IH0KIAogICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBj
YWxsZWVWYWx1ZS5SZWdpc3Rlcjo6b2JqZWN0KCk7IH0KLSAgICB2b2lkIHNldENhbGxlZShKU09i
amVjdCogY2FsbGVlKSB7IGNhbGxlZVZhbHVlID0gY2FsbGVlOyB9CisgICAgdm9pZCBzZXRDYWxs
ZWUoSlNPYmplY3QqIGNhbGxlZSkKKyAgICB7CisgICAgICAgIGNhbGxlZVZhbHVlID0gY2FsbGVl
OworICAgIH0KKyAgICB2b2lkIHNldEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gb2JqZWN0OworICAgIH0KIAogICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIGFyZ0NvdW50QW5k
Q29kZU9yaWdpblZhbHVlLnBheWxvYWQoKTsgfQogICAgIGludCBhcmd1bWVudENvdW50KCkgY29u
c3QgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KQEAgLTc4LDEx
ICs4NiwxMiBAQCBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxsRnJhbWUgewogICAg
IH0KIH07CiAKLWlubGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50
SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQoraW5saW5lIHZvaWQgUHJvdG9DYWxs
RnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJ
bmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCiB7CiAgICAgdGhpcy0+YXJncyA9IG90
aGVyQXJnczsKICAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKICAgICB0aGlzLT5z
ZXRDYWxsZWUoY2FsbGVlKTsKKyAgICB0aGlzLT5zZXRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudEluY2x1
ZGluZ1RoaXMpOwogICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNsdWRpbmdUaGlzIDwg
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCiAgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0
Y2ggPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIu
aAppbmRleCA2MDM4OWI0YmE3ZTU2MGNlNzdmODJhYWRiOGMzMzAzZTQ5NjZjYzI2Li45ZGQzYWNl
NThkMDJlYmJhY2EwNDhhZGQ0NGYyMWQ4YzJiM2Y3MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIENvZGVCbG9jazsK
LSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQ7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNTY29wZTsKIAotICAgIHR5cGVkZWYgRXhl
Y1N0YXRlIENhbGxGcmFtZTsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKICAg
ICBjbGFzcyBSZWdpc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmgKaW5k
ZXggODRiNTJlODAyZTFhYmZhNzA2YTJlODdmYTE2MzQxNmRmMGIwZjgwZC4uMjA4ODBhNjNjOTc0
NWM5ZWViZWRiYTQyYjg5M2IwN2NlZGJkMGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oCkBAIC0zNSw4ICszNSw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7Ci1jbGFz
cyBFeGVjU3RhdGU7CiBjbGFzcyBKU0FycmF5OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Nj
b3BlOwpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFz
cyBTbG90VmlzaXRvcjsKIGNsYXNzIFZNOwogCi10eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIFNoYWRvd0NoaWNrZW4gaXMgYSBs
b2cgdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9kdWNlIGEgc2hhZG93IHN0YWNrIG9mIENISUNLRU4t
c3R5bGUgc3RhY2sgZnJhbWVzLgogLy8gVGhpcyBlbmFibGVzIHRoZSBkZWJ1Z2dlciB0byBhbG1v
c3QgYWx3YXlzIHNlZSB0aGUgdGFpbC1kZWxldGVkIHN0YWNrIGZyYW1lcywgc28gbG9uZyBhcyB3
ZSBoYXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgKaW5kZXggNjg2ODMyZjNiMjk2MzY1NjBhOTc3Y2NmMDg1MTdhNjM1YTJkMjNhNC4uYTM0
MWI3YTlkNWNjNzkxNTc0ZGNlYTYwZWE4NWUzNjNmNTljYWVhZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtMzYsMTYgKzM2LDE2
IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IEVudHJ5RnJhbWU7CiBzdHJ1Y3QgSW5saW5lQ2Fs
bEZyYW1lOwogCitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2Rl
T3JpZ2luOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNGdW5jdGlv
bjsKIGNsYXNzIENsb25lZEFyZ3VtZW50czsKIGNsYXNzIFJlZ2lzdGVyOwogY2xhc3MgUmVnaXN0
ZXJBdE9mZnNldExpc3Q7CiAKLXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgU3RhY2tWaXNpdG9yIHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCmlu
ZGV4IDY3MjE4OGU4OTBiMDk0MjkxNDVkODRlMTQxNWJkYjMwNTFhMTM5MWUuLmJlN2JmODg5ODc5
ZDk1NWQ4ZjQ0ODZkODM0MTEwMTk2NmNhY2FiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaApAQCAtMzAsNyArMzAsOCBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNs
YXNzIFZNOwogCkBAIC00MCw3ICs0MSw3IEBAIHN0cnVjdCBWTUVudHJ5UmVjb3JkIHsKICAgICAg
KiBhZnRlciBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgd2hlcmUgbG9jYWwgdmFyaWFibGVzIHdvdWxk
IGdvLgogICAgICAqLwogICAgIFZNKiBtX3ZtOwotICAgIEV4ZWNTdGF0ZSogbV9wcmV2VG9wQ2Fs
bEZyYW1lOworICAgIENhbGxGcmFtZSogbV9wcmV2VG9wQ2FsbEZyYW1lOwogICAgIEVudHJ5RnJh
bWUqIG1fcHJldlRvcEVudHJ5RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fY2FsbGVlOwogCkBAIC01
Miw4ICs1Myw4IEBAIHN0cnVjdCBWTUVudHJ5UmVjb3JkIHsKICAgICBDUFVSZWdpc3RlciBjYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyWzFdOwogI2VuZGlmCiAKLSAgICBFeGVjU3RhdGUqIHByZXZU
b3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KLSAgICBTVVBQUkVT
U19BU0FOIEV4ZWNTdGF0ZSogdW5zYWZlUHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJuIG1fcHJl
dlRvcENhbGxGcmFtZTsgfQorICAgIENhbGxGcmFtZSogcHJldlRvcENhbGxGcmFtZSgpIHsgcmV0
dXJuIG1fcHJldlRvcENhbGxGcmFtZTsgfQorICAgIFNVUFBSRVNTX0FTQU4gQ2FsbEZyYW1lKiB1
bnNhZmVQcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CiAK
ICAgICBFbnRyeUZyYW1lKiBwcmV2VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcEVu
dHJ5RnJhbWU7IH0KICAgICBTVVBQUkVTU19BU0FOIEVudHJ5RnJhbWUqIHVuc2FmZVByZXZUb3BF
bnRyeUZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wRW50cnlGcmFtZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYmU5YzEzMDg1ZDI5NzUyMjlmYTVkOGY3
ZGVlNjkyMWVjNjE3NGU0YS4uYzBkNDJiYzc5NmRhNmQ3NDhhNGMxNDliZGM4MGM5YWQ5NWZjZjc1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC00MSw4ICs0
MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCiAj
ZW5kaWYKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgU3RydWN0
dXJlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogbmFtZXNwYWNlIERGRyB7CiBjbGFz
cyBSZWdpc3RlcmVkU3RydWN0dXJlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmgKaW5kZXggZTVkMjlmOWI0M2VmOTU5ZDcyNjc0NTMwZWI2ZWFjOWMzMGM3ZWI0
MS4uZDA5MTcyMzhkZWRiYTAyZmNkNjcyNjJmMTI1OTg1NDRiNjMyZTQ4NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmgKQEAgLTI3LDggKzI3LDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiB2b2lkIGdlbmVyaWNVbndpbmQo
Vk0mLCBFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggNjU2ZTdkZDg2YWIyM2M5NjhmZTliNzgxZWRhYWM0YTVhNWZiYmQyYS4u
NjM5NDYzYzk5ZTlmZGJiNDc4OTBlZjY0OTBjOGIyYjFiNWVlZjcxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05ODcsNyArOTg3LDcgQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgY2FsbGVlLAogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhv
c3QpIHsKICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWND
YWxsZWUpOwogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxl
ZSkpOwotICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgdm0u
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLmdldENU
SVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApAQCAtMTAxNiw3ICsxMDE2
LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLAogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENv
bnN0cnVjdFR5cGU6Okhvc3QpIHsKICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVj
dChjYWxsZWUpKTsKLSAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAg
IHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0Nh
bGxlZSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBkMjUzMjMxNGFmNzNkOTI1ODA4NDEyMGY2YTVl
NDk0MTdmZWNlZTZiLi45ZGI2NzM0MTkyM2RkZTExNTIyNGUyMGZkNWM4MDVhN2NkNzhiMjM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzksOSArMzks
OSBAQCB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiBjbGFzcyBBcnJheUFsbG9jYXRp
b25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgQnV0dGVyZmx5OworY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ29kZUJsb2NrOwotY2xhc3Mg
RXhlY1N0YXRlOwogY2xhc3MgSlNBcnJheTsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTRnVuY3Rp
b247CkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEV4ZWNTdGF0ZSBDYWxs
RnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGV4dGVybiAiQyIgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMDhj
ZDFkMGVjZjgwNDg2YTAwNzQ2ZjNhYTZhODU1N2Y1ZDY0MzFkMi4uNmIyZmI0MzBkNjA3NTA1Yzk4
ZDE4ZGU0MzYwZjg2YjMyNGY3YTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMjcxLDMyICsyNzEsMzkgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwg
VGh1bmtGdW4KICNpZiBDUFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQogICAgIC8vIENhbGxp
bmcgY29udmVudGlvbjogICAgICBmKGVkaSwgZXNpLCBlZHgsIGVjeCwgLi4uKTsKLSAgICAvLyBI
b3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKLSAgICBqaXQubW92ZShKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWRpKTsKKyAgICAv
LyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgWDg2UmVn
aXN0ZXJzOjplc2kpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplc2kpOworICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVy
czo6ZWRpKTsKICAgICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6
OkpTRnVuY3Rpb24pIHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3MoWDg2UmVnaXN0ZXJzOjplc2ksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwg
WDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpB
ZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWRpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUo
KSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkaSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWRpKTsKICAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRl
cmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVu
Y3Rpb24pLCBYODZSZWdpc3RlcnM6OnI5KTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplc2ksIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBYODZSZWdpc3RlcnM6OnI5
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhYODZSZWdpc3RlcnM6OmVkaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVG
dW5jdGlvbkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQubG9hZFB0
cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkaSwgSW50ZXJuYWxGdW5j
dGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWRpKTsKKyAgICB9
CiAgICAgaml0LmNhbGwoWDg2UmVnaXN0ZXJzOjpyOSwgSlNFbnRyeVB0clRhZyk7CiAKICNlbHNl
CiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uOiAgICAgIGYoZWN4LCBlZHgsIHI4LCByOSwgLi4u
KTsKLSAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKLSAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6
ZWN4KTsKKyAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgWDg2UmVnaXN0ZXJzOjplZHgpOwogCiAgICAgLy8gTGVhdmUgc3BhY2UgZm9yIHRoZSBj
YWxsZWUgcGFyYW1ldGVyIGhvbWUgYWRkcmVzc2VzLgogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhl
IHN0YWNrIGlzIGFsaWduZWQgdG8gMTYgYnl0ZXMsIGJ1dCBpZiB0aGlzIGNoYW5nZXMgYXQgc29t
ZSBwb2ludCwgd2UgbmVlZCB0byBlbWl0IGNvZGUgdG8gYWxpZ24gaXQuCiAgICAgaml0LnN1YlB0
cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0lu
dGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgaml0LmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgWDg2UmVnaXN0ZXJzOjpl
ZHgpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90
OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWN4KTsKICAgICBpZiAodGh1bmtGdW5jdGlvblR5cGUg
PT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24pIHsKLSAgICAgICAgaml0LmxvYWRQdHIo
SlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZHgsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Ci0gICAgICAgIGppdC5jYWxs
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZz
ZXRUb0Z1bmN0aW9uKSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5j
YWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4LCBJbnRlcm5hbEZ1
bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7
CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVy
czo6ZWN4LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6
cjkpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdp
c3RlcnM6OmVjeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lz
dGVyczo6ZWN4KTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjpyOSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBYODZSZWdpc3Rl
cnM6OnI5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZO
YXRpdmVGdW5jdGlvbkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAgICAgICBqaXQu
bG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCwgSW50ZXJu
YWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIFg4NlJlZ2lzdGVyczo6ZWN4KTsK
KyAgICB9CisgICAgaml0LmNhbGwoWDg2UmVnaXN0ZXJzOjpyOSwgSlNFbnRyeVB0clRhZyk7CiAK
ICAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoNCAqIHNpemVvZihp
bnQ2NF90KSksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAjZW5kaWYK
QEAgLTMwNiwxNSArMzEzLDE4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAgICAgQ09NUElM
RV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OngxICE9IEpTSW50ZXJmYWNlSklUOjpyZWdUMywgVDNf
bm90X3RyYW1wbGVkX2J5X2FyZ18xKTsKICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVy
czo6eDIgIT0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBUM19ub3RfdHJhbXBsZWRfYnlfYXJnXzIp
OwogCi0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7Ci0gICAg
aml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVy
czo6eDApOworICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6eDEpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6OngxKTsK
KyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCBBUk02NFJlZ2lzdGVyczo6eDApOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBU
aHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbikgewotICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZSgpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CisgICAgICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CiAg
ICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJz
Ojp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBBUk02NFJlZ2lzdGVyczo6eDIpOwot
ICAgIH0gZWxzZQotICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhB
Uk02NFJlZ2lzdGVyczo6eDEsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rp
b25Gb3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwg
SW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEFSTTY0
UmVnaXN0ZXJzOjp4Mik7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIEFSTTY0UmVnaXN0ZXJzOjp4MCk7CisgICAgfQogICAgIGppdC5jYWxsKEFSTTY0
UmVnaXN0ZXJzOjp4MiwgSlNFbnRyeVB0clRhZyk7CiAKICNlbGlmIENQVShBUk1fVEhVTUIyKSB8
fCBDUFUoTUlQUykKQEAgLTMyMywxNiArMzMzLDI0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVu
CiAgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDE2KSwgSlNJbnRl
cmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogCisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdUMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnVDIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKwogICAg
IC8vIENhbGxpbmcgY29udmVudGlvbiBpcyBmKGFyZ3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCAu
Li4pLgotICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGYoRXhlY1N0YXRlKikuCi0g
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklU
OjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CiAKLSAg
ICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
LCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIwKTsKICAgICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5
cGU6OkpTRnVuY3Rpb24pIHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFk
ZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwotICAgICAgICBqaXQuY2FsbChK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6cmVnVDIsIGV4ZWN1dGFibGVP
ZmZzZXRUb0Z1bmN0aW9uKSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGpp
dC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjEsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBK
U0VudHJ5UHRyVGFnKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOworICAgICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50
ZXJmYWNlSklUOjpyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0lu
dGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
aml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKIAogI2lmIENQ
VShNSVBTKQogICAgIC8vIFJlc3RvcmUgc3RhY2sgc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggY2I0YWJhZmU0MTkxNmIxMTg3MTYwMGJiMTI2YzdlMDU4YTcwMDcxZC4uMDI0YTgzZWQyNWY3
NDQ4YzYwNDM4OTU0MzQ4NWNlZDExY2M1ZjE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5
NCwxMDMgKzI5NCwxMDIgQEAgY2xhc3MgV29ya2VycyB7CiB9OwogCiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0
ZSopOwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50
U3RkT3V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmludFN0ZEVycihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TbGVl
cFNlY29uZHMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZU1lbW9yeUZvb3RwcmludChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2YoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNp
b24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJ1bihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50
YXgoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlYWRsaW5lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25QcmVjaXNlVGltZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbihFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9ERkcoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5v
RlRMKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Ob09TUkV4aXRGdXp6aW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OdW1iZXJPZkRG
R0NvbXBpbGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DYWxsZXJJc09NR0NvbXBpbGVkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlv
blJldHJ5Q291bnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEV4
ZWNTdGF0ZSopOwotc3RhdGljIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMihF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SXNJbnQzMihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSXNQdXJlTmFOKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSWRlbnRpdHkoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRl
cihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1p
Y3JvdGFza3MoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5
bnRheChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBz
aG90KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxl
clN0YXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25FbnN1cmVBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblByaW50U3RkT3V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRlYnVnKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRlc2NyaWJlQXJyYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRnVsbEdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25IZWFwU2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290cHJpbnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJlc3NP
ZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SdW5TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Mb2FkU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNoZWNrU3ludGF4KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByZWNpc2VUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTm9ERkcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9GVEwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTm9PU1JFeGl0RnV6emluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25UcmFuc2ZlckFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJs
b2NrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgTk9fUkVUVVJOX1dJVEhf
VkFMVUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmFsc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25VbmRlZmluZWQyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzSW50MzIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSXNQdXJlTmFOKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklkZW50aXR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBlc0Zv
ckFsbFZhcmlhYmxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9y
bShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Q
bGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0
ZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdD
RGVidWdnaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJv
ZmlsZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogI2VuZGlmCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TWF4QXJndW1lbnRzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RTdGFydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5
bmNUZXN0UGFzc2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdG
bGFncyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNsZWFyU2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2Vu
ZGlmCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFu
ZG9tU2VlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uU2V0UmFuZG9tU2VlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4oRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckNyZWF0ZVJlYWxtKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcihFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRTdGFydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlcG9ydChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50R2V0UmVwb3J0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TW9ub3RvbmljTm93
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25XYWl0Rm9yUmVwb3J0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25IZWFwQ2FwYWNpdHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZVJp
Y2hTb3VyY2VJbmZvKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25NYWxsb2NJbkFMb29wKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKEV4ZWNTdGF0ZSop
OwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNl
dFJhbmRvbVNlZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNh
bGxlclNvdXJjZU9yaWdpbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50U3RhcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50U2xlZXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRCcm9hZGNhc3QoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRMZWF2aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TW9ub3RvbmljTm93KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcENhcGFj
aXR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
aXNhYmxlUmljaFNvdXJjZUluZm8oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5o
YW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
c3RydWN0IFNjcmlwdCB7CiAgICAgZW51bSBjbGFzcyBTdHJpY3RNb2RlIHsKQEAgLTYxOSw3ICs2
MTgsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAg
ICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkMjYyIiksIGRv
bGxhcik7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY3JlYXRl
UmVhbG0iLCBmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtLCAwKTsKLSAgICAgICAgYWRkRnVuY3Rp
b24odm0sIGRvbGxhciwgImRldGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rpb25Eb2xsYXJEZXRhY2hB
cnJheUJ1ZmZlciwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJkZXRhY2hB
cnJheUJ1ZmZlciIsIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlciwgMSk7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJldmFsU2NyaXB0IiwgZnVuY3Rpb25Eb2xsYXJFdmFsU2Ny
aXB0LCAxKTsKICAgICAgICAgCiAgICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIiksIHRoaXMpOwpAQCAtMTI3NCw0NyArMTI3Myw0
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJpbnRJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMs
IEZJTEUqIG91dCkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRPdXQoRXhl
Y1N0YXRlKiBleGVjKSB7IHJldHVybiBwcmludEludGVybmFsKGV4ZWMsIHN0ZG91dCk7IH0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZEVycihFeGVjU3RhdGUq
IGV4ZWMpIHsgcmV0dXJuIHByaW50SW50ZXJuYWwoZXhlYywgc3RkZXJyKTsgfQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIHByaW50SW50ZXJuYWwoY2FsbEZyYW1lLCBz
dGRvdXQpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRF
cnIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gcHJpbnRJ
bnRlcm5hbChjYWxsRnJhbWUsIHN0ZGVycik7IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2
aWV3V2l0aFN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1l
KS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBzdHJpbmcgPSBjU3Ry
aW5nRnJvbVZpZXdXaXRoU3RyaW5nKGV4ZWMsIHNjb3BlLCB2aWV3V2l0aFN0cmluZyk7CisgICAg
YXV0byBzdHJpbmcgPSBjU3RyaW5nRnJvbVZpZXdXaXRoU3RyaW5nKGNhbGxGcmFtZSwgc2NvcGUs
IHZpZXdXaXRoU3RyaW5nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tPiAlc1xuIiwgc3RyaW5nLmRhdGEo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHRvU3RyaW5nKGV4
ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIHRvU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2Jq
ZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIjxub3Qgb2JqZWN0PiJfcykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygiPEJ1dHRlcmZseTogIiwgUmF3UG9pbnRlcihvYmpl
Y3QtPmJ1dHRlcmZseSgpKSwgIjsgcHVibGljIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRBcnJheUxl
bmd0aCgpLCAiOyB2ZWN0b3IgbGVuZ3RoOiAiLCBvYmplY3QtPmdldFZlY3Rvckxlbmd0aCgpLCAi
PiIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TbGVlcFNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblNsZWVwU2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgU2Vj
b25kcyBzZWNvbmRzID0gU2Vjb25kcyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7
CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgU2Vj
b25kcyBzZWNvbmRzID0gU2Vjb25kcyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNh
bGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgc2xlZXAoc2Vjb25kcyk7CiAgICAgfQpAQCAtMTMzOSw0NCArMTMz
OCw0NCBAQCBjbGFzcyBGdW5jdGlvbkpTQ1N0YWNrRnVuY3RvciB7CiAgICAgU3RyaW5nQnVpbGRl
ciYgbV90cmFjZTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25K
U0NTdGFjayhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSlNDU3RhY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHRyYWNlOwogICAgIHRyYWNlLmFwcGVuZExpdGVyYWwoIi0tPiBT
dGFjayB0cmFjZTpcbiIpOwogCiAgICAgRnVuY3Rpb25KU0NTdGFja0Z1bmN0b3IgZnVuY3Rvcih0
cmFjZSk7Ci0gICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBjYWxsRnJhbWUtPml0ZXJh
dGUoZnVuY3Rvcik7CiAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHRyYWNlLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdD
QW5kU3dlZXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgdm0uaGVhcC5jb2xsZWN0Tm93KFN5bmMs
IENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih2bS5oZWFwLnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxHQyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKICAgICB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFwLnNpemVBZnRlckxhc3RG
dWxsQ29sbGVjdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25FZGVuR0MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkVkZW5HQyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICB2bS5oZWFwLmNvbGxlY3RT
eW5jKENvbGxlY3Rpb25TY29wZTo6RWRlbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcih2bS5oZWFwLnNpemVBZnRlckxhc3RFZGVuQ29sbGVjdGlvbigpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IZWFwU2l6ZShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5oZWFw
LnNpemUoKSkpOwogfQpAQCAtMTQyNywxNCArMTQyNiwxNCBAQCBjbGFzcyBKU0NNZW1vcnlGb290
cHJpbnQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiBjb25zdCBDbGFzc0luZm8g
SlNDTWVtb3J5Rm9vdHByaW50OjpzX2luZm8gPSB7ICJNZW1vcnlGb290cHJpbnQiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ01lbW9yeUZv
b3RwcmludCkgfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZU1lbW9yeUZvb3RwcmludChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNDTWVtb3J5Rm9vdHByaW50OjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNDTWVtb3J5Rm9vdHByaW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQZWFrKEV4ZWNT
dGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRNZW1vcnlQ
ZWFrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBNZW1vcnlGb290cHJpbnQ6
OnJlc2V0UGVhaygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNDQzLDkgKzE0NDIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVzZXRNZW1vcnlQZWFrKEV4ZWNTdGF0ZSopCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBn
ZW5lcmFsbHkgdmVyeSBoZWxwZnVsIGluIDY0LWJpdCBjb2RlIGFzIHRoZSB0YWcgYW5kIHBheWxv
YWQKIC8vIHNoYXJlIGEgcmVnaXN0ZXIuIEJ1dCBpbiAzMi1iaXQgSklUZWQgY29kZSB0aGUgdGFn
IG1heSBub3QgYmUgY2hlY2tlZCBpZiBhbgogLy8gb3B0aW1pemF0aW9uIHJlbW92ZXMgdHlwZSBj
aGVja2luZyByZXF1aXJlbWVudHMsIHN1Y2ggYXMgaW4gPT09LgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghdmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgLy8gTmVlZCB0byBjYXN0IHRvIHVpbnQ2NF90IHNvIGJpdHdpc2VfY2Fz
dCB3aWxsIHBsYXkgYWxvbmcuCkBAIC0xNDU0LDE1NiArMTQ1MywxNTEgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJlc3NPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblZlcnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIC8vIFdl
IG5lZWQgdGhpcyBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBNb3ppbGxhIEpT
IHRlc3RzIGJ1dCBmb3Igbm93CiAgICAgLy8gd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55IHZlcnNp
b24tc3BlY2lmaWMgaGFuZGxpbmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5n
IGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3Ry
aW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZp
bGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJDb3VsZCBu
b3Qgb3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJDb3Vs
ZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKIAotICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogcmVh
bG0gPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKLSAgICBKU0FycmF5KiBhcnJh
eSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIDApOwor
ICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShyZWFsbS0+Z2xvYmFsRXhl
YygpLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpIHsKLSAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAg
ICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChyZWFsbS0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KLSAgICBnbG9iYWxPYmplY3QtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIpLCBhcnJh
eSk7CisgICAgcmVhbG0tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlv
bjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwogICAgIHN0b3BXYXRjaC5zdGFydCgpOwotICAg
IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBT
b3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lKSwgSlNWYWx1
ZSgpLCBleGNlcHRpb24pOworICAgIGV2YWx1YXRlKHJlYWxtLT5nbG9iYWxFeGVjKCksIGpzY1Nv
dXJjZShzY3JpcHQsIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgZmls
ZU5hbWUpLCBKU1ZhbHVlKCksIGV4Y2VwdGlvbik7CiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAog
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihyZWFsbS0+Z2xvYmFsRXhlYygpLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmlu
ZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJp
bmcgc291cmNlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwg
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSk7CisgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZt
LCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3Ry
aW5nPigpKTsKIAotICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgMCk7CisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KHJlYWxtLT5nbG9iYWxFeGVjKCksIDApOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KHJl
YWxtLT5nbG9iYWxFeGVjKCksIGkgLSAxLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgfQotICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICByZWFsbS0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIGV2YWx1YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291cmNlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmln
aW4oKSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKKyAgICBldmFsdWF0ZShyZWFsbS0+Z2xvYmFs
RXhlYygpLCBqc2NTb3VyY2Uoc291cmNlLCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigp
KSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAg
ICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgc2NvcGUudGhyb3dFeGNlcHRpb24ocmVhbG0tPmdsb2JhbEV4ZWMoKSwg
ZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVhbG0pOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsK
ICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2Nv
cGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwog
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLSAgICAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRp
b247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwganNjU291cmNlKHNjcmlwdCwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRoKGZpbGVO
YW1lKSB9LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TG9hZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uTG9hZFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlQ29kZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2VDb2RlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUsIGV4ZWMtPmNhbGxl
clNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NT
b3VyY2Uoc291cmNlQ29kZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFs
dWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9u
KTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmaWxl
TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGJv
b2wgaXNCaW5hcnkgPSBmYWxzZTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkg
ewotICAgICAgICBTdHJpbmcgdHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4
ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAgICAg
U3RyaW5nIHR5cGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGNhbGxGcmFt
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICBpZiAodHlwZSAhPSAiYmluYXJ5IikKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgc2NvcGUsICJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1l
bnQuIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CiAgICAgICAgIGlzQmlu
YXJ5ID0gdHJ1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8VWludDhBcnJheT4gY29udGVudCA9IGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUpOwogICAgIGlmICghY29udGVudCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkNvdWxkIG5vdCBvcGVu
IGZpbGUuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkNvdWxkIG5vdCBvcGVuIGZpbGUuIik7CiAKICAgICBpZiAoIWlzQmluYXJ5KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+bGVuZ3RoKCkpKSk7CiAKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+dHlw
ZWRBcnJheVN0cnVjdHVyZShUeXBlVWludDgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCk7CiAgICAgSlNPYmpl
Y3QqIHJlc3VsdCA9IEpTVWludDhBcnJheTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
Y29udGVudCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBm
aWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBW
ZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lz
dGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iX3MpKSk7Ci0KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwg
IkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwogCiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsK
ICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKQEAgLTE2MTMsMjUgKzE2MDcsMjUgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsK
IH0KIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWcg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1i
ZXIoZXhlYykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJh
bWUpKTsKICAgICAgICAgaWYgKChmbGFnID49IDEpICYmIChmbGFnIDw9IDMyKSkKICAgICAgICAg
ICAgIFNhbXBsaW5nRmxhZ3M6OnNldEZsYWcoZmxhZyk7CiAgICAgfQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgdW5zaWduZWQgZmxhZyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJl
cihleGVjKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgZmxhZyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFt
ZSkpOwogICAgICAgICBpZiAoKGZsYWcgPj0gMSkgJiYgKGZsYWcgPD0gMzIpKQogICAgICAgICAg
ICAgU2FtcGxpbmdGbGFnczo6Y2xlYXJGbGFnKGZsYWcpOwogICAgIH0KQEAgLTE2MzksNDAgKzE2
MzMsNDAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxp
bmdGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAjZW5kaWYKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRvbVNlZWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRvbVNlZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbSgpLnNl
ZWQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2xvYmFsT2JqZWN0
LT53ZWFrUmFuZG9tKCkuc2VlZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25TZXRSYW5kb21TZWVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIHNlZWQgPSBleGVjLT5hcmd1
bWVudCgwKS50b1VJbnQzMihleGVjKTsKKyAgICB1bnNpZ25lZCBzZWVkID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1VJbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+d2Vha1JhbmRvbSgpLnNldFNlZWQoc2VlZCk7CisgICAgZ2xvYmFsT2JqZWN0LT53ZWFrUmFu
ZG9tKCkuc2V0U2VlZChzZWVkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3Bl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25J
c1JvcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5pc1N0cmluZygpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgIGNv
bnN0IFN0cmluZ0ltcGwqIGltcGwgPSBhc1N0cmluZyhhcmd1bWVudCktPnRyeUdldFZhbHVlSW1w
bCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFpbXBsKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
YWxsZXJTb3VyY2VPcmlnaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IHN0YXRlLT5j
YWxsZXJTb3VyY2VPcmlnaW4oKTsKKyAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2Fs
bEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHN0YXRlLT52bSgpLCBzb3VyY2VPcmlnaW4uc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVj
dC0+dm0oKSwgc291cmNlT3JpZ2luLnN0cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZGxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWZWN0b3I8Y2hhciwgMjU2PiBsaW5lOwogICAg
IGludCBjOwpAQCAtMTY4Myw2MSArMTY3Nyw2MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBsaW5lLmFwcGVu
ZChjKTsKICAgICB9CiAgICAgbGluZS5hcHBlbmQoJ1wwJyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCBsaW5lLmRhdGEoKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBsaW5lLmRhdGEoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUo
RXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmVjaXNl
VGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZlcklu
bGluZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlcklubGlu
ZShleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlcklubGluZShjYWxs
RnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZH
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25O
b0RGRyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJPcHRpbWl6ZShleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzZXROZXZlck9wdGltaXplKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9GVEwoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkg
ewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxl
Rm9yRnVuY3Rpb24oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSkgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBn
ZXRFeGVjdXRhYmxlRm9yRnVuY3Rpb24oY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgICAg
IGlmIChleGVjdXRhYmxlKQogICAgICAgICAgICAgZXhlY3V0YWJsZS0+c2V0TmV2ZXJGVExPcHRp
bWl6ZSh0cnVlKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhp
dEZ1enppbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbk5vT1NSRXhpdEZ1enppbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldENhbm5vdFVzZU9TUkV4aXRG
dXp6aW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldENhbm5vdFVzZU9T
UkV4aXRGdXp6aW5nKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUob3B0aW1pemVOZXh0SW52b2NhdGlvbihleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKGNhbGxGcmFtZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21waWxlcyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVt
YmVyT2ZERkdDb21waWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyT2ZERkdDb21waWxlcyhleGVjKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJPZkRGR0NvbXBpbGVzKGNhbGxGcmFt
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVySXNP
TUdDb21waWxlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIU9wdGlvbnM6OnVzZUJCUVRpZXJVcENoZWNrcygp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAKICAg
ICBDYWxsZXJGdW5jdG9yIHdhc21Ub0pTRnJhbWU7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChl
eGVjLCAmdm0sIHdhc21Ub0pTRnJhbWUpOworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZy
YW1lLCAmdm0sIHdhc21Ub0pTRnJhbWUpOwogICAgIGlmICghd2FzbVRvSlNGcmFtZS5jYWxsZXJG
cmFtZSgpLT5pc0FueVdhc21DYWxsZWUoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgImNhbGxlciBpcyBub3QgYSB3YXNtLT5qcyBpbXBvcnQgZnVuY3Rpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiY2FsbGVyIGlz
IG5vdCBhIHdhc20tPmpzIGltcG9ydCBmdW5jdGlvbiIpOwogCiAgICAgLy8gV2UgaGF2ZSBhIHdy
YXBwZXIgZnJhbWUgdGhhdCB3ZSBnZW5lcmF0ZSBmb3IgaW1wb3J0cy4gSWYgd2UgZXZlciBjYW4g
ZGlyZWN0IGNhbGwgZnJvbSB3YXNtIHdlIHdvdWxkIG5lZWQgdG8gY2hhbmdlIHRoaXMuCiAgICAg
QVNTRVJUKCF3YXNtVG9KU0ZyYW1lLmNhbGxlckZyYW1lKCktPmNhbGxlZSgpLmlzV2FzbSgpKTsK
QEAgLTE4NjIsNDUgKzE4NTYsNDAgQEAgV29ya2VycyYgV29ya2Vyczo6c2luZ2xldG9uKCkKICAg
ICByZXR1cm4gKnJlc3VsdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckNyZWF0ZVJlYWxtKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEdsb2JhbE9iamVjdCogcmVzdWx0ID0g
R2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkIikp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckRldGFj
aEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZnVuY3Rpb25UcmFu
c2ZlckFycmF5QnVmZmVyKGV4ZWMpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlQ29kZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2VDb2Rl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxHbG9iYWxPYmplY3QqPih2
bSwKLSAgICAgICAgZXhlYy0+dGhpc1ZhbHVlKCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJnbG9iYWwiKSkpOworICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBqc0R5bmFt
aWNDYXN0PEdsb2JhbE9iamVjdCo+KHZtLAorICAgICAgICBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LmdldChjYWxsRnJhbWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnbG9iYWwiKSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlm
ICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZ2xvYmFsIHRv
IHBvaW50IHRvIGEgZ2xvYmFsIG9iamVjdCJfcykpKTsKKyAgICBpZiAoIXJlYWxtKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGds
b2JhbCBvYmplY3QiX3MpKSk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0
aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VP
cmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBldmFsdWF0ZShyZWFsbS0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc291cmNlQ29k
ZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNl
Q29kZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpLmlzb2xhdGVkQ29weSgp
OworICAgIFN0cmluZyBzb3VyY2VDb2RlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhjYWxsRnJhbWUpLmlzb2xhdGVkQ29weSgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIExvY2sgZGlkU3RhcnRMb2NrOwpA
QCAtMTk0MiwxNiArMTkzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRG9sbGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJv
YWRjYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgY2FsbGJhY2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGNhbGxi
YWNrID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBjYWxsYmFjaywgY2FsbERhdGEp
OwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhl
YywgIkV4cGVjdGVkIGNhbGxiYWNrIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFt
ZSwgIkV4cGVjdGVkIGNhbGxiYWNrIl9zKSkpOwogICAgIAogICAgIFJlZlB0cjxNZXNzYWdlPiBt
ZXNzYWdlOwogICAgIHsKQEAgLTE5NjEsMjIgKzE5NTAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUq
IGV4ZWMKICAgICAKICAgICBhdXRvIG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
bWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOwogICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUg
c2hhcmluZ01vZGUgPSBuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCk7Ci0gICAgSlNBcnJheUJ1
ZmZlcioganNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3Zl
KG5hdGl2ZUJ1ZmZlcikpOworICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJp
bmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQnVmZmVyKTsKICAgICBhcmdzLmFwcGVu
ZChqc051bWJlcihtZXNzYWdlLT5pbmRleCgpKSk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzTnVsbCgpLCBhcmdzKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIGNhbGxiYWNrLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBy
ZXBvcnQgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcg
cmVwb3J0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAog
ICAgIFdvcmtlcnM6OnNpbmdsZXRvbigpLnJlcG9ydChyZXBvcnQpOwpAQCAtMTk4NCwyOSArMTk3
MywyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRS
ZXBvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFNsZWVwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFNsZWVwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMSkgewot
ICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGV4ZWMt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPj0gMSkgeworICAgICAgICBTZWNvbmRzIHNlY29uZHMgPSBTZWNvbmRzOjpmcm9t
TWlsbGlzZWNvbmRzKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgICAgICBzbGVlcChzZWNvbmRzKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1
ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXIqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFqc0J1ZmZlciB8
fCAhanNCdWZmZXItPmlzU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBT
aGFyZWRBcnJheUJ1ZmZlciJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJF
eHBlY3RlZCBTaGFyZWRBcnJheUJ1ZmZlciJfcykpKTsKICAgICAKLSAgICBpbnQzMl90IGluZGV4
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGluZGV4ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgV29ya2Vyczo6
c2luZ2xldG9uKCkuYnJvYWRjYXN0KApAQCAtMjAyMSw5ICsyMDEwLDkgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRv
bGxhckFnZW50R2V0UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAKICAgICBTdHJpbmcgc3RyaW5nID0gV29ya2Vyczo6c2luZ2xldG9uKCkudHJ5
R2V0UmVwb3J0KCk7CiAgICAgaWYgKCFzdHJpbmcpCkBAIC0yMDMyLDE5ICsyMDIxLDE5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
c3RyaW5nKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudExlYXZpbmcoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQog
ewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhF
eGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50TW9ub3RvbmljTm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNT
aW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyBzdHJpbmc7CiAg
ICAgewpAQCAtMjA1NywyMCArMjA0NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uV2FpdEZvclJlcG9ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgc3RyaW5nKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25IZWFwQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodm0uaGVhcC5jYXBhY2l0eSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgZG91Ymxl
IHNsZWVwVGltZU1zID0gMDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsK
LSAgICAgICAgc2xlZXBUaW1lTXMgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsK
KyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkgeworICAgICAgICBzbGVl
cFRpbWVNcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
fQogCkBAIC0yMDgxLDEzICsyMDcwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8oRXhlY1N0YXRlKikKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHN1cHBvcnRzUmljaFNvdXJjZUluZm8gPSBm
YWxzZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFsbG9jSW5BTG9vcChFeGVjU3Rh
dGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3Ao
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIFZlY3Rvcjx2b2lkKj4gcHRyczsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQpAQCAtMjA5Nyw3ICsyMDg2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3Ao
RXhlY1N0YXRlKikKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGlt
ZShFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFs
Q29tcGlsZVRpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogI2lmIEVOQUJMRShK
SVQpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihKSVQ6OnRvdGFsQ29tcGls
ZVRpbWUoKS5taWxsaXNlY29uZHMoKSkpOwpAQCAtMjExNSwxMCArMjEwNCwxMCBAQCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Z1bmRhbWVudGFsPFZhbHVlVHlwZT46OnZhbHVlPjo6
dHlwZSBhZGRPcHRpb24oVgogICAgIG9wdGlvbnNPYmplY3QtPnB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwgSlNWYWx1ZSh2YWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSlNDT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IEpTT2JqZWN0KiBvcHRpb25zT2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRpb25zT2Jq
ZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICNkZWZpbmUgUkVBRF9PUFRJ
T04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlv
bl8pIFwKICAgICBhZGRPcHRpb24odm0sIG9wdGlvbnNPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICNuYW1lXyksIE9wdGlvbnM6Om5hbWVfKCkpOwogICAgIEZPUl9FQUNIX0pTQ19P
UFRJT04oUkVBRF9PUFRJT04pCkBAIC0yMTI2LDI5ICsyMTE1LDI5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnNPYmplY3QpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXph
dGlvblJldHJ5Q291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBpZiAoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIAotICAgIENvZGVCbG9jayogYmxvY2sgPSBnZXRTb21lQmFzZWxpbmVD
b2RlQmxvY2tGb3JGdW5jdGlvbihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgQ29kZUJsb2NrKiBi
bG9jayA9IGdldFNvbWVCYXNlbGluZUNvZGVCbG9ja0ZvckZ1bmN0aW9uKGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmICghYmxvY2spCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoMCkpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoYmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJy
YXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJO
b3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIk5vdCBlbm91Z2ggYXJn
dW1lbnRzIl9zKSkpOwogICAgIAotICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNBcnJh
eUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVj
LCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNh
bGxGcmFtZSwgIkV4cGVjdGVkIGFuIGFycmF5IGJ1ZmZlciJfcykpKTsKICAgICAKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAgYnVmZmVyLT5pbXBsKCktPnRyYW5z
ZmVyVG8odm0sIGR1bW15Q29udGVudHMpOwpAQCAtMjE1NiwxNiArMjE0NSwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJs
b2NrKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25GYWlsTmV4dE5ld0NvZGVCbG9jayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIHZtLnNldEZhaWxOZXh0TmV3Q29kZUJsb2NrKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5jb2RlQ2FjaGUoKS0+d3JpdGUodm0pOwogCiAg
ICAganNjRXhpdChFWElUX1NVQ0NFU1MpOwpAQCAtMjE3NiwyMyArMjE2NSwyMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqIGV4ZWMpCiAjZW5k
aWYKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEV4ZWNT
dGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOyB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQxKEV4ZWNT
dGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoRXhlY1N0YXRlKikgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNJbnQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0ludDMyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KGkpLmlzSW50MzIoKSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50KGkpLmlzSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGZhbHNlKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRydWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
UHVyZU5hTihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSXNQdXJlTmFOKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkg
ewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoaSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpOwogICAgICAgICBpZiAo
IXZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIo
KTsKQEAgLTIyMDQsNDkgKzIxOTMsNDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklzUHVyZU5hTihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSWRlbnRpdHkoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZXhlYy0+YXJndW1lbnQoMCkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSWRlbnRpdHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOyB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKDQyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtl
TWFzcXVlcmFkZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShNYXNxdWVyYWRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShNYXNxdWVyYWRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRp
ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICh2
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc09iamVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoZXhlYy0+dm0oKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QodmFsdWUpLT5o
YXNDdXN0b21Qcm9wZXJ0aWVzKGdsb2JhbE9iamVjdC0+dm0oKSkpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxW
YXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICB2bS5kdW1wVHlwZVByb2ZpbGVyRGF0YSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EcmFpbk1pY3JvdGFza3MoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLmZp
bmFsaXplU3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25JczMyQml0UGxhdGZvcm0oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKEpTQzo6SlNWYWx1ZTo6SlNGYWxzZSkpOwpAQCAtMjI1NSwzNCArMjI0NCwzNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0
ZSopCiAjZW5kaWYKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShHbG9i
YWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpz
TnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBzb3VyY2Ug
PSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgU3RvcFdh
dGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKIAogICAgIFBhcnNlckVycm9y
IGVycm9yOwotICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLCBq
c2NTb3VyY2Uoc291cmNlLCB7IH0sIFVSTCgpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlOjpNb2R1bGUpLCBlcnJvcik7CisgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNo
ZWNrTW9kdWxlU3ludGF4KGNhbGxGcmFtZSwganNjU291cmNlKHNvdXJjZSwgeyB9LCBVUkwoKSwg
VGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3Ip
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygi
U3ludGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJy
b3IubGluZSgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdh
dGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTQzo6
SlNWYWx1ZTo6SlNUcnVlKSk7CkBAIC0yMjkxLDkgKzIyODAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoRXhl
Y1N0YXRlKgogI2VuZGlmCiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZW5lcmF0ZUhlYXBTbmFwc2hvdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IApAQCAtMjMwMSwxNCArMjI5MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHNuYXBzaG90
QnVpbGRlci5idWlsZFNuYXBzaG90KCk7CiAKICAgICBTdHJpbmcganNvblN0cmluZyA9IHNuYXBz
aG90QnVpbGRlci5qc29uKCk7Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTT05QYXJzZShleGVjLCBqc29uU3RyaW5nKSk7CisgICAgRW5jb2RlZEpTVmFsdWUg
cmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShjYWxsRnJhbWUsIGpzb25TdHJpbmcp
KTsKICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVI
ZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2luZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2lu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgU3RyaW5nIGpzb25TdHJpbmc7CkBAIC0yMzI0LDY2ICsyMzEzLDY2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZv
ckdDRGVidWdnaW5nKEV4ZWNTdGF0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwganNvblN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZShFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbnN1cmVBcnJheVN0b3Jh
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KGkpKSkKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKEpTT2Jq
ZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoaSkpKQogICAgICAgICAgICAgb2JqZWN0LT5lbnN1cmVBcnJheVN0b3JhZ2Uodm0pOwog
ICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAj
aWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU2FtcGxpbmdQ
cm9maWxlciYgc2FtcGxpbmdQcm9maWxlciA9IHZtLmVuc3VyZVNhbXBsaW5nUHJvZmlsZXIoV1RG
OjpTdG9wd2F0Y2g6OmNyZWF0ZSgpKTsKICAgICBzYW1wbGluZ1Byb2ZpbGVyLm5vdGljZUN1cnJl
bnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCgpOwogICAgIHNhbXBsaW5nUHJvZmlsZXIuc3Rh
cnQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNr
VHJhY2VzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUVycm9yKGV4ZWMsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRlZCJf
cykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJTYW1wbGluZyBwcm9maWxlciB3
YXMgbmV2ZXIgc3RhcnRlZCJfcykpKTsKIAogICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2Ft
cGxpbmdQcm9maWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigpOwotICAgIEVuY29kZWRKU1ZhbHVl
IHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwor
ICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoY2Fs
bEZyYW1lLCBqc29uU3RyaW5nKSk7CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9u
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJP
RklMRVIpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVu
dHMoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYXhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoSlNDOjptYXhBcmd1bWVudHMpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RTdGFydChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IG51bWJlck9mQXN5bmNQYXNzZXMgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG51
bWJlck9mQXN5bmNQYXNzZXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghbnVt
YmVyT2ZBc3luY1Bhc3Nlcy5pc1VJbnQzMigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJFeHBlY3Rl
ZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhIHVpbnQzMiJfcyk7CiAKICAgICBhc3luY1Rlc3RFeHBl
Y3RlZFBhc3NlcyArPSBudW1iZXJPZkFzeW5jUGFzc2VzLmFzVUludDMyKCk7CiAgICAgcmV0dXJu
IGVuY29kZWRKU1VuZGVmaW5lZCgpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKIHsKICAgICBhc3luY1Rlc3RQYXNzZXMrKzsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5k
ZWZpbmVkKCk7CkBAIC0yMzkxLDM2ICsyMzgwLDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQoRXhlY1N0YXRlKikKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25XZWJBc3NlbWJseU1lbW9yeU1vZGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGlmICghV2Fz
bTo6aXNTdXBwb3J0ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRo
ZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBzaG91
bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9wdGlvbiBpcyBzZXQiX3Mp
OwogCi0gICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmpl
Y3QoKSkgeworICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS5nZXRPYmplY3QoKSkgewogICAgICAgICBpZiAoYXV0byogbWVtb3J5ID0ganNEeW5hbWljQ2Fz
dDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4odm0sIG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBtYWtlU3RyaW5nKG1lbW9yeS0+bWVtb3J5KCku
bW9kZSgpKSkpOwogICAgICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSo+KHZtLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVt
b3J5IG9yIFdlYkFzc2VtYmx5Lkluc3RhbmNlIl9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0
aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9yIFdlYkFzc2VtYmx5Lkluc3RhbmNlIl9zKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRS
ZWplY3Rpb25DYWxsYmFjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkuZ2V0T2JqZWN0KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC0+aXNGdW5jdGlvbih2bSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKHZtLCBvYmplY3Qp
OworICAgIGdsb2JhbE9iamVjdC0+c2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sodm0sIG9i
amVjdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtMjY2NiwxMyArMjY1NSwxMyBAQCBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvbwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAotICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2VzcywgJm9wdGlvbnMsIGlzTGFz
dEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
KGV4ZWMsIGpzQ2FzdDxHbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LCBpc0xhc3RGaWxlLCBmYWxzZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3Mp
OworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2Vzcywg
Jm9wdGlvbnMsIGlzTGFzdEZpbGVdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oY2FsbEZy
YW1lLCBqc0Nhc3Q8R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgaXNMYXN0RmlsZSwgZmFs
c2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgSlNGdW5jdGlvbiogcmVqZWN0SGFuZGxlciA9IEpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcoKSwgWyZzdWNj
ZXNzLCAmb3B0aW9ucywgaXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7Ci0gICAgICAgICAg
ICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywganNDYXN0PEdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIGlzTGFzdEZpbGUsIHRydWUsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBvcHRpb25zLCBzdWNjZXNzKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHJlamVjdEhhbmRs
ZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3Ry
aW5nKCksIFsmc3VjY2VzcywgJm9wdGlvbnMsIGlzTGFzdEZpbGVdKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb24oY2FsbEZyYW1lLCBqc0Nhc3Q8R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSwgaXNMYXN0RmlsZSwgdHJ1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgb3B0aW9ucywgc3Vj
Y2Vzcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmgKaW5kZXggMmI3MzYwMmE4MzJkMGFkNGFmZjQ2N2I2NTFmNjNiMTJi
MmU2YTQ2Yy4uMmEzZTc1ZGM0YTdkOGVlZTUwZWRhY2MwNmMyNzc2MTI1YTFmZDUyNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaApAQCAtMjksNyAr
MjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9u
OwogCiBuYW1lc3BhY2UgTExJbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggYzBiMzE2MWE2OGI2MTVmMmI4NDU1YmYwZWY1ZjE3OTIz
ZjdmMjkzOC4uMzRlNjUxNzdmNzBiZTAxYWUzOWI5ODE0NDhkNmM5NzY1YmY1ZjM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDQz
LDcgKzE0NDMsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6SG9zdCkgewogICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7
CisgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0p
LCBleGVjQ2FsbGVlKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwg
Q0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0NjMsNyArMTQ2Myw3
IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpIb3N0KSB7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWNDYWxsZWUpOwogICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3Qo
Y2FsbGVlKSk7Ci0gICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICB2
bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxs
ZWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwg
TExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRh
Zyk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAppbmRleCBjMjRjMmQ4NjFhNmRlOWVhYmU0ZmExMmJkNmYwYmE5NzgzOGY1ODU0Li5h
ZTc4ZjRhOGM1YzBhZGU2ODU4NWVhZDNhY2RiNDMzYTg4ZDJiNmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMzAsNyArMzAsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFBy
b3RvQ2FsbEZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggMjAwNjNhNWUyNGVlMzAxMWM5MWRjMjIzNDBkOGZh
MTRiMTUzYmY0NC4uZGY1NzE2ZjEwZGM1ZGEwMjk0ZjYyNzVlNmZjNGI2MWU4NWJmZDQwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcApAQCAtMTQ0LDcgKzE0NCw2IEBAIGNsYXNzIENMb29wUmVnaXN0ZXIgewogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCogdnAoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1f
dmFsdWUpOyB9CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCB2b2lkKiBjdnAoKSBjb25zdCB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fdmFsdWUpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxD
YWxsRnJhbWUqPihtX3ZhbHVlKTsgfQotICAgIEFMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBleGVj
U3RhdGUoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8RXhlY1N0YXRlKj4obV92YWx1ZSk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IHZvaWQqIGluc3RydWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IHZvaWQqPihtX3ZhbHVlKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFZNKj4obV92YWx1ZSk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogY2VsbCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxKU0NlbGwqPihtX3ZhbHVlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2NWY5MjRm
YmQ1MDU0ODNmMjAyZTEyZjljNDVlNDM2ZWJjMjRjYzgwLi5lNGI4ZTUwMjU1NDBjMWRhZjY3OTRh
Mjk0ZGU5NGM4MGRmNTMxNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjYyLDcgKzI2Miw3IEBA
IG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBzdG9yZXAgc3AsIFZNOjp0b3BDYWxsRnJh
bWVbdm1dCiAgICAgc3RvcmVwIGNmciwgVk06OnRvcEVudHJ5RnJhbWVbdm1dCiAKLSAgICBtYWtl
Q2FsbChlbnRyeSwgdDMsIHQ0KQorICAgIG1ha2VDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwg
dDMsIHQ0KQogCiAgICAgaWYgQVJNdjcKICAgICAgICAgdm1FbnRyeVJlY29yZChjZnIsIHQzKQpA
QCAtMzE5LDcgKzMxOSw4IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICByZXQKIGVu
ZAogCi1tYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKKyMgYTAs
IGEyLCB0MywgdDQKK21hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJh
bWUsIHRlbXAxLCB0ZW1wMikKICAgICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAsIDB4YmFkMGRjMDIpCiAgICAgaWYgQ19M
T09QIG9yIENfTE9PUF9XSU4KQEAgLTMzMSwyNCArMzMyLDI4IEBAIG1hY3JvIG1ha2VKYXZhU2Ny
aXB0Q2FsbChlbnRyeSwgdGVtcCwgdW51c2VkKQogICAgIHN1YnAgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUsIHNwCiBlbmQKIAotbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXAxLCB0
ZW1wMikKKyMgYTAsIGEyLCB0MywgdDQKK21hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5
LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIG1vdmUgZW50cnksIHRlbXAxCiAg
ICAgc3RvcmVwIGNmciwgW3NwXQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAg
IG1vdmUgc3AsIGEwCisgICAgICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3Rb
cHJvdG9DYWxsRnJhbWVdLCBhMAorICAgICAgICBtb3ZlIHNwLCBhMQogICAgICAgICBzdG9yZXAg
bHIsIFB0clNpemVbc3BdCiAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0ZW1wMQogICAgIGVsc2lm
IFg4NiBvciBYODZfV0lOCi0gICAgICAgICMgUHV0IGNhbGxlZSBmcmFtZSBwb2ludGVyIG9uIHN0
YWNrIGFzIGFyZzAsIGFsc28gcHV0IGl0IGluIGVjeCBmb3IgImZhc3RjYWxsIiB0YXJnZXRzCisg
ICAgICAgICMgUHV0IGNhbGxlZSBmcmFtZSBwb2ludGVyIG9uIHN0YWNrIGFzIGFyZzEsIGFsc28g
cHV0IGl0IGluIGVjeCBmb3IgImZhc3RjYWxsIiB0YXJnZXRzCiAgICAgICAgIG1vdmUgMCwgdGVt
cDIKICAgICAgICAgbW92ZSB0ZW1wMiwgNFtzcF0gIyBwdXQgMCBpbiBSZXR1cm5QQwotICAgICAg
ICBtb3ZlIHNwLCBhMCAjIGEwIGlzIGVjeAotICAgICAgICBwdXNoIHRlbXAyICMgUHVzaCBkdW1t
eSBhcmcxCisgICAgICAgIG1vdmUgc3AsIGExICMgYTEgaXMgZWR4CisgICAgICAgIGxvYWRwIFBy
b3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RbcHJvdG9DYWxsRnJhbWVdLCBhMAorICAgICAgICBw
dXNoIGExCiAgICAgICAgIHB1c2ggYTAKICAgICAgICAgY2FsbCB0ZW1wMQogICAgICAgICBhZGRw
IDgsIHNwCiAgICAgZWxzZQotICAgICAgICBtb3ZlIHNwLCBhMAorICAgICAgICBsb2FkcCBQcm90
b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICAgICAgbW92
ZSBzcCwgYTEKICAgICAgICAgY2FsbCB0ZW1wMQogICAgIGVuZAogZW5kCkBAIC0xOTk3LDEyICsy
MDAyLDEzIEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1
bmN0aW9uKQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKICAgICAgICAgbG9hZHAg
TWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwg
dDMKICAgICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0M10KLSAgICAgICAgbW92
ZSBjZnIsIGEwICAjIGEwID0gZWN4Ci0gICAgICAgIHN0b3JlcCBhMCwgW3NwXQotICAgICAgICBs
b2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMSAgIyBhMSA9
IGVkeAorICAgICAgICBzdG9yZXAgYTEsIFtzcF0KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5
bG9hZE9mZnNldFtjZnJdLCBhMAorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVbYTBdLCBhMgorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMF0s
IGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQot
ICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICBjYWxs
IGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXQogICAgICAgICBsb2FkcCBDYWxsZWUgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0Mwog
ICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290
ZXI6Om1fdm1bdDNdLCB0MwpAQCAtMjAyMCwxNCArMjAyNiwxNSBAQCBtYWNybyBuYXRpdmVDYWxs
VHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJr
ZWRCbG9ja01hc2ssIHQxCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsg
TWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92bVt0MV0sIHQxCiAgICAgICAgIHN0b3JlcCBjZnIsIFZN
Ojp0b3BDYWxsRnJhbWVbdDFdCi0gICAgICAgIG1vdmUgY2ZyLCBhMAotICAgICAgICBsb2FkaSBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCi0gICAgICAgIGxvYWRwIEpTRnVuY3Rpb246
Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMQorICAgICAgICBsb2Fk
aSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEwCisgICAgICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVthMF0sIGEyCisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZ2xv
YmFsT2JqZWN0W2EwXSwgYTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMs
IDB4ZGVhZDAwMDEpCiAgICAgICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgICAg
ICBjbG9vcENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCisgICAgICAg
ICAgICBjbG9vcENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJdCiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFd
CisgICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXQogICAgICAg
ICBlbmQKICAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAg
ICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKQEAgLTIwNjUsMTEgKzIwNzIsMTIgQEAgbWFj
cm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAg
ICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zv
b3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MwogICAgICAgICBz
dG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQotICAgICAgICBtb3ZlIGNmciwgYTAgICMg
YTAgPSBlY3gKLSAgICAgICAgc3RvcmVwIGEwLCBbc3BdCi0gICAgICAgIGxvYWRpIENhbGxlZSAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICAgICAgbW92ZSBjZnIsIGExICAjIGExID0gZWR4
CisgICAgICAgIHN0b3JlcCBhMSwgW3NwXQorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIGEyCisgICAgICAgIGxvYWRwIEludGVybmFsRnVuY3Rpb246Om1fZ2xvYmFs
T2JqZWN0W2EyXSwgYTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDMsIDB4
ZGVhZDAwMDEpCi0gICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0KKyAgICAgICAgY2Fs
bCBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBs
b2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1b
dDNdLCB0MwpAQCAtMjA4MCwxMyArMjA4OCwxNCBAQCBtYWNybyBpbnRlcm5hbEZ1bmN0aW9uQ2Fs
bFRyYW1wb2xpbmUob2Zmc2V0T2ZGdW5jdGlvbikKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01h
c2ssIHQxCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFya2VkQmxv
Y2s6OkZvb3Rlcjo6bV92bVt0MV0sIHQxCiAgICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxs
RnJhbWVbdDFdCi0gICAgICAgIG1vdmUgY2ZyLCBhMAotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgICAgIG1vdmUgY2ZyLCBhMQorICAgICAgICBsb2Fk
aSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEyCisgICAgICAgIGxvYWRwIEludGVybmFs
RnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2EyXSwgYTAKICAgICAgICAgY2hlY2tTdGFja1BvaW50
ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCiAgICAgICAgIGlmIENfTE9PUCBvciBDX0xPT1Bf
V0lOCi0gICAgICAgICAgICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0T2ZGdW5jdGlvblt0MV0KKyAg
ICAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjYWxsIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgICAgICBj
YWxsIG9mZnNldE9mRnVuY3Rpb25bYTJdCiAgICAgICAgIGVuZAogICAgICAgICBsb2FkcCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNr
LCB0MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCA3ZjRlYjgzN2Y3MWVhMWZiOTU3MDE5YWQzZTMyYWE3ZDcxYzNj
M2FmLi4xZjhkYmZjNjNkYTM2NzI0YjRhYTI2OGRlY2ZhMDNhNmEwZGI1M2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMjU1LDcgKzI1NSw3IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKIAogICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KGV4dHJhVGVtcFJlZywgMHhiYWQwZGMwMikKIAotICAg
IG1ha2VDYWxsKGVudHJ5LCB0MywgdDQpCisgICAgbWFrZUNhbGwoZW50cnksIHByb3RvQ2FsbEZy
YW1lLCB0MywgdDQpCiAKICAgICAjIFdlIG1heSBoYXZlIGp1c3QgbWFkZSBhIGNhbGwgaW50byBh
IEpTIGZ1bmN0aW9uLCBzbyB3ZSBjYW4ndCByZWx5IG9uIHNwCiAgICAgIyBmb3IgYW55dGhpbmcg
YnV0IHRoZSBmYWN0IHRoYXQgb3VyIG93biBsb2NhbHMgKGllIHRoZSBWTUVudHJ5UmVjb3JkKSBh
cmUKQEAgLTI5Nyw3ICsyOTcsOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiBlbmQKIAog
Ci1tYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKKyMgYTAsIGEy
LCB0MywgdDQKK21hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUs
IHRlbXAxLCB0ZW1wMikKICAgICBhZGRwIDE2LCBzcAogICAgIGlmIENfTE9PUCBvciBDX0xPT1Bf
V0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gZW50cnkKQEAgLTMwNywyMCArMzA4LDIy
IEBAIG1hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVtcCwgdW51c2VkKQogICAgIHN1
YnAgMTYsIHNwCiBlbmQKIAotbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXAs
IHVudXNlZCkKLSAgICBtb3ZlIGVudHJ5LCB0ZW1wCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBt
YWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikK
KyAgICBtb3ZlIGVudHJ5LCB0ZW1wMQogICAgIHN0b3JlcCBjZnIsIFtzcF0KLSAgICBtb3ZlIHNw
LCBhMAorICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjpnbG9iYWxPYmplY3RbcHJvdG9DYWxsRnJh
bWVdLCBhMAorICAgIG1vdmUgc3AsIGExCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAg
ICAgICAgc3RvcmVwIGxyLCA4W3NwXQotICAgICAgICBjbG9vcENhbGxOYXRpdmUgdGVtcAorICAg
ICAgICBjbG9vcENhbGxOYXRpdmUgdGVtcDEKICAgICBlbHNpZiBYODZfNjRfV0lOCiAgICAgICAg
ICMgV2UgbmVlZCB0byBhbGxvY2F0ZSAzMiBieXRlcyBvbiB0aGUgc3RhY2sgZm9yIHRoZSBzaGFk
b3cgc3BhY2UuCiAgICAgICAgIHN1YnAgMzIsIHNwCi0gICAgICAgIGNhbGwgdGVtcCwgSlNFbnRy
eVB0clRhZworICAgICAgICBjYWxsIHRlbXAxLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIGFkZHAg
MzIsIHNwCiAgICAgZWxzZQotICAgICAgICBjYWxsIHRlbXAsIEpTRW50cnlQdHJUYWcKKyAgICAg
ICAgY2FsbCB0ZW1wMSwgSlNFbnRyeVB0clRhZwogICAgIGVuZAogZW5kCiAKQEAgLTIxMjMsMTkg
KzIxMjYsMjAgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb24pCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBDX0xPT1BfV0lO
CiAgICAgICAgIHN0b3JlcCBsciwgUmV0dXJuUENbY2ZyXQogICAgIGVuZAotICAgIG1vdmUgY2Zy
LCBhMAotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
ZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgbW92ZSBjZnIsIGExCisgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIGEwCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW2EwXSwgYTIKKyAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAgY2hlY2tTdGFja1Bv
aW50ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9X
SU4KLSAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3Qx
XQorICAgICAgICBjbG9vcENhbGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJd
CiAgICAgZWxzZQogICAgICAgICBpZiBYODZfNjRfV0lOCiAgICAgICAgICAgICBzdWJwIDMyLCBz
cAotICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0sIEpTRW50
cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJd
LCBKU0VudHJ5UHRyVGFnCiAgICAgICAgICAgICBhZGRwIDMyLCBzcAogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXSwgSlNFbnRyeVB0
clRhZworICAgICAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0sIEpT
RW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgZW5kCiAKQEAgLTIxNjMsMTggKzIxNjcsMTkg
QEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24p
CiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAg
IHN0b3JlcCBsciwgUmV0dXJuUENbY2ZyXQogICAgIGVuZAotICAgIG1vdmUgY2ZyLCBhMAotICAg
IGxvYWRwIENhbGxlZVtjZnJdLCB0MQorICAgIG1vdmUgY2ZyLCBhMQorICAgIGxvYWRwIENhbGxl
ZVtjZnJdLCBhMgorICAgIGxvYWRwIEludGVybmFsRnVuY3Rpb246Om1fZ2xvYmFsT2JqZWN0W2Ey
XSwgYTAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAg
ICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICBjbG9vcENhbGxOYXRpdmUgb2Zmc2V0
T2ZGdW5jdGlvblt0MV0KKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9mZnNldE9mRnVuY3Rpb25b
YTJdCiAgICAgZWxzZQogICAgICAgICBpZiBYODZfNjRfV0lOCiAgICAgICAgICAgICBzdWJwIDMy
LCBzcAotICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXSwgSlNFbnRyeVB0clRh
ZworICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwog
ICAgICAgICAgICAgYWRkcCAzMiwgc3AKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBv
ZmZzZXRPZkZ1bmN0aW9uW3QxXSwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgY2FsbCBvZmZz
ZXRPZkZ1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQKICAgICBlbmQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCA4MzY4NzYzYzVl
ZjFhYzM2MDcyZTFjMGQ0ZDE1ODhjMDhhNTBjNzBjLi5iNzE0OWU4MmFjYmZmYzM1ZDZkN2RlM2Q4
M2E1YmUwNzRjNDY2YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jbG9vcC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9v
cC5yYgpAQCAtMTEyNiwxMSArMTEyNiwxMSBAQCBkZWYgbG93ZXJDX0xPT1AKIAogICAgICAgICAj
IFdlIGNhbid0IGRvIGdlbmVyaWMgZnVuY3Rpb24gY2FsbHMgd2l0aCBhbiBhcmJpdHJhcnkgc2V0
IG9mIGFyZ3MsIGJ1dAogICAgICAgICAjIGZvcnR1bmF0ZWx5IHdlIGRvbid0IGhhdmUgdG8gaGVy
ZS4gQWxsIG5hdGl2ZSBmdW5jdGlvbiBjYWxscyBhbHdheXMKLSAgICAgICAgIyBoYXZlIGEgZml4
ZWQgcHJvdG90eXBlIG9mIDEgYXJnczogdGhlIHBhc3NlZCBFeGVjU3RhdGUuCisgICAgICAgICMg
aGF2ZSBhIGZpeGVkIHByb3RvdHlwZSBvZiAyIGFyZ3M6IHRoZSBwYXNzZWQgSlNHbG9iYWxPYmpl
Y3QqIGFuZCBDYWxsRnJhbWUqLgogICAgICAgICB3aGVuICJjbG9vcENhbGxOYXRpdmUiCiAgICAg
ICAgICAgICAkYXNtLnB1dGMgImNsb29wU3RhY2suc2V0Q3VycmVudFN0YWNrUG9pbnRlcihzcC52
cCgpKTsiCiAgICAgICAgICAgICAkYXNtLnB1dGMgIm5hdGl2ZUZ1bmMgPSAje29wZXJhbmRzWzBd
LmNsVmFsdWUoOm5hdGl2ZUZ1bmMpfTsiCi0gICAgICAgICAgICAkYXNtLnB1dGMgImZ1bmN0aW9u
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobmF0aXZlRnVuYyh0MC5leGVjU3RhdGUoKSkp
OyIKKyAgICAgICAgICAgICRhc20ucHV0YyAiZnVuY3Rpb25SZXR1cm5WYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShuYXRpdmVGdW5jKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHQwLmNlbGwoKSksIHQx
LmNhbGxGcmFtZSgpKSk7IgogICAgICAgICAgICAgJGFzbS5wdXRjICIjaWYgVVNFKEpTVkFMVUUz
Ml82NCkiCiAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICB0MSA9IGZ1bmN0aW9uUmV0dXJuVmFs
dWUudGFnKCk7IgogICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgdDAgPSBmdW5jdGlvblJldHVy
blZhbHVlLnBheWxvYWQoKTsiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IDM5ZmU2YmJmZjU2NmI5MTU5YmE2MzcxOTNjNjgzYTNiY2My
ZGMxZWUuLmY4OWJmZWRjZTNmYWZmNjM1NzRjNDE1YmJlOTMwNWFlNjBlMjkzOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0zNiw3
ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0FycmF5QnVmZmVyVmlldzsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwor
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBw
dWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjky
YTc2MmE0MDA2Mjk5ZWI3YjQ1OTgwNjQwMmM5OGEwNGExYjk1NS4uOGQwMDkwNjI0MmU4OWZkZTUx
MzEzYzkyOWY2MTUyOWQwMTEzNDQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDggKzUwLDggQEAgY29uc3QgQ2xh
c3NJbmZvIEFycmF5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaW4KIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlLCBjYWxsQXJyYXlDb25zdHJ1Y3RvciwgY29uc3RydWN0V2l0aEFycmF5Q29u
c3RydWN0b3IpCkBAIC04NCwxMSArODQsOCBAQCBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcgogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9m
aWxlLCBnbG9iYWxPYmplY3QsIG4sIG5ld1RhcmdldCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
QXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3Qodm0pOwotCiAgICAgLy8gYSBzaW5nbGUgbnVtZXJpYyBhcmd1bWVudCBkZW5v
dGVzIHRoZSBhcnJheSBzaXplICghKQogICAgIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgICAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIG51bGxwdHIsIGdsb2Jh
bE9iamVjdCwgYXJncy5hdCgwKSwgbmV3VGFyZ2V0KTsKQEAgLTk3LDE2ICs5NCwxNiBAQCBzdGF0
aWMgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpcwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBudWxs
cHRyLCBnbG9iYWxPYmplY3QsIGFyZ3MsIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhBcnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBhcmdzLCBl
eGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxB
cnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBhcmdzLCBKU1ZhbHVl
KCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgYXJncywgSlNWYWx1ZSgpKSk7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNB
cnJheVNsb3dJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm94eU9iamVjdCogcHJveHkpCkBAIC0x
NDAsMTAgKzEzNywxMCBAQCBib29sIGlzQXJyYXlTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlP
YmplY3QqIGFyZ3VtZW50KQogCiAvLyBFUzYgNy4yLjIKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3coRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0Fy
cmF5U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPnZtKCks
IGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oaXNBcnJheVNsb3dJbmxpbmUoZXhlYywganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkpKSkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBq
c0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNB
cnJheVNsb3dJbmxpbmUoY2FsbEZyYW1lLCBqc0Nhc3Q8UHJveHlPYmplY3QqPihjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKaW5kZXgg
NzVhYzQ1OTIxMzYxNGEzNjU1ZjA2ZjJkNGUzYjQyY2MzMDcyNjM1MC4uNzcyMzNhZGU3YjM5YWVk
NWVlOGYxNmMwOTgwMzhiMDExOGIyYmM3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBBcnJh
eUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgcHJvdG90
eXBlID0gSlNWYWx1ZSgpKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNv
bnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3co
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIGJvb2wgaXNBcnJheVNsb3coRXhlY1N0YXRl
KiwgUHJveHlPYmplY3QqIGFyZ3VtZW50KTsKIAogLy8gRVM2IDcuMi4yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZWRiNzYxOWI1
MTBhYzYzYzQxNzg4NjcyMjA0MmE5MjA0YjBmMjUyMS4uNzk0ODQyMWFhNWVjN2U1OTgyYTcwZTBk
ZTk4YmIyODFkNDBjNDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcApAQCAtNDgsMTcgKzQ4LDE3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSm9pbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1JldmVyc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJy
YXlQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yNjcsMTQgKzI2
NywxNCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJl
c3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzQ29uc3RydQogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0LCBuZXdPYmplY3QpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jU3BlY2llc0NyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkuYXNOdW1iZXIoKSk7CisgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIHVp
bnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLmFzTnVtYmVyKCkpOwogCi0gICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1
Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJh
eShleGVjLCBvYmplY3QsIGxlbmd0aCk7CisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RS
ZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShj
YWxsRnJhbWUsIG9iamVjdCwgbGVuZ3RoKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKHNwZWNpZXNSZXN1bHQuZmlyc3Qg
PT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTI4MiwxMSArMjgyLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzcGVjaWVzUmVzdWx0LnNlY29uZCk7CiAKICAgICBpZiAobGVuZ3Ro
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7Ci0gICAgICAgIHRocm93
UmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdo
IHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRl
Z2VyLiJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBu
dWxscHRyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxG
cmFtZSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkpKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChF
eGVjU3RhdGUqIGV4ZWMsIGludCBhcmd1bWVudCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB1
bmRlZmluZWRWYWx1ZSA9IDApCkBAIC01OTMsMTkgKzU5MywxOSBAQCBpbmxpbmUgYm9vbCBjYW5V
c2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVj
dCkKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogCiAgICAgLy8gMS4g
TGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0aGUgdGhpcyB2
YWx1ZS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgaWYgKCFjYW5Vc2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcodm0sIHRoaXNPYmpl
Y3QpKSB7CiAgICAgICAgIC8vIDIuIExldCBmdW5jIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0
aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgYXJyYXkgd2l0aCBhcmd1bWVudCAiam9pbiIu
Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3QpLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IEpT
VmFsdWUodGhpc09iamVjdCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+am9pbik7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgICAgIC8vIDMuIElmIElzQ2FsbGFibGUoZnVuYykgaXMgZmFsc2UsIHRoZW4gbGV0IGZ1
bmMgYmUgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZCBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nICgxNS4yLjQuMikuCkBAIC02MTgsMTEgKzYxOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgY3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShjdXN0
b21Kb2luQ2FzZSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QsIHZtKSwgIl0iKSkp
OworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJbb2JqZWN0ICIsIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QsIHZtKSwgIl0iKSkpOwogCiAg
ICAgICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGlu
dGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUgdGhpcyB2YWx1ZSBh
bmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgICAgIGlmICghaXNKU0FycmF5KHRoaXNP
YmplY3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxGcmFtZSwg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgKnZtLmVtcHR5TGlzdCkp
KTsKICAgICB9CiAKICAgICBBU1NFUlQoaXNKU0FycmF5KHRoaXNWYWx1ZSkpOwpAQCAtNjMwLDcg
KzYzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzQXJyYXkt
Pmxlbmd0aCgpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRo
aXNBcnJheSk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwg
dGhpc0FycmF5KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBj
aGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5W
YWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIH0KIAogICAgICAgICBib29sIHNhd0hvbGVzID0gZmFsc2U7Ci0gICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gZmFzdEpvaW4oKmV4ZWMsIHRoaXNBcnJheSwgeyAmY29tbWEsIDEg
fSwgbGVuZ3RoLCAmc2F3SG9sZXMpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RKb2lu
KCpjYWxsRnJhbWUsIHRoaXNBcnJheSwgeyAmY29tbWEsIDEgfSwgbGVuZ3RoLCAmc2F3SG9sZXMp
OwogCiAgICAgICAgIGlmICghc2F3SG9sZXMgJiYgcmVzdWx0ICYmIGlzSlNTdHJpbmcocmVzdWx0
KSAmJiBpc0NvVykgewogICAgICAgICAgICAgQVNTRVJUKEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojpm
cm9tQnV0dGVyZmx5KHRoaXNBcnJheS0+YnV0dGVyZmx5KCkpID09IGltbXV0YWJsZUJ1dHRlcmZs
eSk7CkBAIC02NTksNjggKzY1OSw2OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgSlNTdHJpbmdKb2luZXIgam9pbmVy
KCpleGVjLCAnLCcsIGxlbmd0aCk7CisgICAgSlNTdHJpbmdKb2luZXIgam9pbmVyKCpjYWxsRnJh
bWUsICcsJywgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzQXJyYXktPnRyeUdldEluZGV4UXVpY2ts
eShpKTsKICAgICAgICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gdGhp
c0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICBlbGVtZW50ID0gdGhpc0FycmF5LT5n
ZXQoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGpvaW5lci5hcHBlbmQoKmV4
ZWMsIGVsZW1lbnQpOworICAgICAgICBqb2luZXIuYXBwZW5kKCpjYWxsRnJhbWUsIGVsZW1lbnQp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
b2luZXIuam9pbigqZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqb2luZXIuam9pbigqY2FsbEZyYW1lKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRo
aXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4
ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFt
ZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhp
c09iamVjdCk7CisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGNhbGxGcmFtZSwg
dGhpc09iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwg
Y2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJu
VmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIEpTU3RyaW5nSm9pbmVyIHN0cmlu
Z0pvaW5lcigqZXhlYywgJywnLCBsZW5ndGgpOworICAgIEpTU3RyaW5nSm9pbmVyIHN0cmluZ0pv
aW5lcigqY2FsbEZyYW1lLCAnLCcsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICNpZiBFTkFCTEUoSU5UTCkKLSAgICBBcmdMaXN0
IGFyZ3VtZW50cyhleGVjKTsKKyAgICBBcmdMaXN0IGFyZ3VtZW50cyhjYWxsRnJhbWUpOwogI2Vu
ZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmplY3QtPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAg
ICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5nZXRJbmRleChjYWxsRnJhbWUsIGkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgaWYgKGVsZW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIGVsZW1l
bnQgPSBqc0VtcHR5U3RyaW5nKHZtKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlIGNvbnZlcnNpb25GdW5jdGlvbiA9IGVsZW1lbnQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFt
ZXMtPnRvTG9jYWxlU3RyaW5nKTsKKyAgICAgICAgICAgIEpTVmFsdWUgY29udmVyc2lvbkZ1bmN0
aW9uID0gZWxlbWVudC5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0
cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICNp
ZiBFTkFCTEUoSU5UTCkKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChleGVjLCBjb252
ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgYXJndW1lbnRzKTsK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChjYWxsRnJhbWUsIGNvbnZlcnNpb25GdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOwogI2Vsc2UKLSAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gY2FsbChleGVjLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgKnZtLmVtcHR5TGlzdCk7CisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGNhbGwoY2FsbEZyYW1lLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgZWxlbWVudCwgKnZtLmVtcHR5TGlzdCk7CiAjZW5kaWYKICAgICAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKCpleGVjLCBl
bGVtZW50KTsKKyAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZCgqY2FsbEZyYW1lLCBlbGVtZW50
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c3RyaW5nSm9pbmVyLmpvaW4oKmV4ZWMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nSm9pbmVyLmpvaW4oKmNhbGxGcmFtZSkpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgc2xvd0pvaW4oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCogdGhpc09i
amVjdCwgSlNTdHJpbmcqIHNlcGFyYXRvciwgdWludDY0X3QgbGVuZ3RoKQpAQCAtNzcxLDI4ICs3
NzEsMjggQEAgc3RhdGljIEpTVmFsdWUgc2xvd0pvaW4oRXhlY1N0YXRlJiBleGVjLCBKU09iamVj
dCogdGhpc09iamVjdCwgSlNTdHJpbmcqIHNlcGFyYXQKICAgICByZXR1cm4gcjsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0
IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmplY3Qp
OworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIu
ZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0g
Y2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKICAgICAvLyAyLiBMZXQgbGVuIGJlID8gVG9MZW5ndGgo
PyBHZXQoTywgImxlbmd0aCIpKS4KLSAgICBkb3VibGUgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywg
dGhpc09iamVjdCk7CisgICAgZG91YmxlIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhp
c09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICAvLyAzLiBJZiBzZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCBsZXQgc2VwYXJhdG9y
IGJlIHRoZSBzaW5nbGUtZWxlbWVudCBTdHJpbmcgIiwiLgotICAgIEpTVmFsdWUgc2VwYXJhdG9y
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewogICAgICAgICBjb25zdCBMQ2hhciBjb21tYSA9ICcsJzsKIApAQCAtODAyLDExNyAr
ODAyLDExNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9p
bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBKU1N0cmluZyoganNTZXBhcmF0b3IgPSBq
c1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgY29tbWEpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0aGlz
T2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqY2FsbEZyYW1lLCB0aGlz
T2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CiAgICAgICAgIH0KIAogICAgICAgICB1
bnNpZ25lZCB1bnNpZ25lZExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwog
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPih1bnNpZ25lZExlbmd0aCkgPT0gbGVu
Z3RoKTsKIAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVjdCwgeyAmY29tbWEsIDEgfSwgdW5zaWduZWRMZW5n
dGgpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGZhc3RKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3QsIHsgJmNvbW1hLCAxIH0sIHVuc2lnbmVk
TGVuZ3RoKSkpOwogICAgIH0KIAogICAgIC8vIDQuIExldCBzZXAgYmUgPyBUb1N0cmluZyhzZXBh
cmF0b3IpLgotICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvU3Ry
aW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRv
U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkobGVuZ3RoID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIHx8ICFjYW5Vc2VGYXN0Sm9pbih0aGlzT2JqZWN0KSkpIHsK
ICAgICAgICAgdWludDY0X3QgbGVuZ3RoNjQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3Ro
KTsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4obGVuZ3RoNjQpID09IGxlbmd0
aCk7CiAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4o
KmNhbGxGcmFtZSwgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOwogICAgIH0K
IAotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBqc1NlcGFyYXRvci0+dmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBqc1NlcGFyYXRvci0+
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVjdCwgdmlld1dp
dGhTdHJpbmcudmlldywgbGVuZ3RoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3QsIHZpZXdXaXRo
U3RyaW5nLnZpZXcsIGxlbmd0aCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKIAogICAg
IGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZXhlYykpKTsKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0
aGlzVmFsdWUpLT5wb3AoY2FsbEZyYW1lKSkpOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSB0
aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFs
dWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVu
Z3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxG
cmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBpZiAobGVuZ3RoID09IDApIHsKICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0
aCkpOworICAgICAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwganNOdW1iZXIo
bGVuZ3RoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgbGVuZ3Ro
IC0gMSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqLT5nZXQoY2FsbEZyYW1lLCBsZW5n
dGggLSAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKTsKKyAgICBib29sIHN1Y2Nl
c3MgPSB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqLCBjYWxsRnJhbWUsIGxlbmd0aCAtIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlF
cnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFVuYWJsZVRv
RGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwog
ICAgIH0KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlz
T2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0s
IHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNQdXNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhl
eGVjLCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKLSAgICBpZiAoTElLRUxZ
KGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewor
ICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPT0gMSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNW
YWx1ZSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYXJyYXktPnB1c2hJbmxp
bmUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgICAgICBhcnJheS0+cHVz
aElubGluZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwog
ICAgIH0KICAgICAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChl
eGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJh
bWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCBleGVjLT5hcmd1bWVudENvdW50KCk7IG4rKykgeworICAg
IGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgbisr
KSB7CiAgICAgICAgIC8vIENoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93OyB3aGVyZSBzYWZlIHdl
IGNhbiBkbyBhIGZhc3QgcHV0IGJ5IGluZGV4LgogICAgICAgICBpZiAobGVuZ3RoICsgbiA+PSBs
ZW5ndGgpCi0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHRy
dWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXNPYmosIGNhbGxGcmFtZSwgbGVuZ3RoICsgbiwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dChuKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QodGhpc09iaik7Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVu
Z3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVjKSk7Ci0gICAg
ICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKKyAgICAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNW
YWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bikpLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSkpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUodm0pLT5wdXQodGhpc09iaiwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAgICAKLSAg
ICBKU1ZhbHVlIG5ld0xlbmd0aChzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oZXhlYy0+YXJndW1lbnRDb3VudCgpKSk7CisgICAgSlNWYWx1ZSBuZXdM
ZW5ndGgoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwgbmV3TGVuZ3RoKTsKKyAgICBwdXRMZW5ndGgo
Y2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgbmV3TGVuZ3RoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG5ld0xlbmd0aCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZy
YW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdGhpc09iamVjdC0+
ZW5zdXJlV3JpdGFibGUodm0pOwpAQCAtOTU3LDQyICs5NTcsNDIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAg
IHVuc2lnbmVkIG1pZGRsZSA9IGxlbmd0aCAvIDI7CiAgICAgZm9yICh1bnNpZ25lZCBsb3dlciA9
IDA7IGxvd2VyIDwgbWlkZGxlOyBsb3dlcisrKSB7CiAgICAgICAgIHVuc2lnbmVkIHVwcGVyID0g
bGVuZ3RoIC0gbG93ZXIgLSAxOwotICAgICAgICBib29sIGxvd2VyRXhpc3RzID0gdGhpc09iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgbG93ZXIpOworICAgICAgICBib29sIGxvd2VyRXhpc3RzID0g
dGhpc09iamVjdC0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBsb3dlcik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBKU1ZhbHVl
IGxvd2VyVmFsdWU7CiAgICAgICAgIGlmIChsb3dlckV4aXN0cykgewotICAgICAgICAgICAgbG93
ZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCBsb3dlcik7CisgICAgICAgICAgICBsb3dl
clZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNhbGxGcmFtZSwgbG93ZXIpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBib29sIHVwcGVyRXhpc3RzID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhl
YywgdXBwZXIpOworICAgICAgICBib29sIHVwcGVyRXhpc3RzID0gdGhpc09iamVjdC0+aGFzUHJv
cGVydHkoY2FsbEZyYW1lLCB1cHBlcik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBKU1ZhbHVlIHVwcGVyVmFsdWU7CiAgICAg
ICAgIGlmICh1cHBlckV4aXN0cykgewotICAgICAgICAgICAgdXBwZXJWYWx1ZSA9IHRoaXNPYmpl
Y3QtPmdldChleGVjLCB1cHBlcik7CisgICAgICAgICAgICB1cHBlclZhbHVlID0gdGhpc09iamVj
dC0+Z2V0KGNhbGxGcmFtZSwgdXBwZXIpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodXBw
ZXJFeGlzdHMpIHsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZXhl
YywgbG93ZXIsIHVwcGVyVmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0
QnlJbmRleElubGluZShjYWxsRnJhbWUsIGxvd2VyLCB1cHBlclZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgbG93
ZXIpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgY2FsbEZyYW1lLCBsb3dlcik7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9y
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBVbmFi
bGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxvd2Vy
RXhpc3RzKSB7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMs
IHVwcGVyLCBsb3dlclZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5
SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCB1cHBlciwgbG93ZXJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHVwcGVy
KTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGNhbGxGcmFtZSwgdXBwZXIpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVW5hYmxl
VG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTAwMCw2MSArMTAwMCw2MSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0KTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFt
ZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KGxlbmd0aCA9PSAwKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcHV0TGVu
Z3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGgpKTsKKyAgICAgICAgcHV0TGVu
Z3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIEpTVmFs
dWUgcmVzdWx0ID0gdGhpc09iai0+Z2V0SW5kZXgoZXhlYywgMCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0aGlzT2JqLT5nZXRJbmRleChjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNoaWZ0PEpTQXJyYXk6OlNoaWZ0
Q291bnRGb3JTaGlmdD4oZXhlYywgdGhpc09iaiwgMCwgMSwgMCwgbGVuZ3RoKTsKKyAgICBzaGlm
dDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGNhbGxGcmFtZSwgdGhpc09iaiwgMCwgMSwg
MCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0TGVuZ3RoKGV4ZWMsIHZtLCB0aGlz
T2JqLCBqc051bWJlcihsZW5ndGggLSAxKSk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0s
IHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNlCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVl
KCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJp
Y3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVj
LCB0aGlzT2JqKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRo
aXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICB1bnNp
Z25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMCwg
bGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0
YXJ0T3JFbmQoY2FsbEZyYW1lLCAwLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgdW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgsIGxlbmd0aCk7CisgICAgdW5zaWduZWQgZW5kID0g
YXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChjYWxsRnJhbWUsIDEsIGxlbmd0aCwg
bGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChl
bmQgPCBiZWdpbikKICAgICAgICAgZW5kID0gYmVnaW47CiAKLSAgICBzdGQ6OnBhaXI8U3BlY2ll
c0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0
cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIGVuZCAtIGJlZ2luKTsKKyAgICBzdGQ6OnBhaXI8U3Bl
Y2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0Nv
bnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhpc09iaiwgZW5kIC0gYmVnaW4pOwogICAgIC8vIFdl
IGNhbiBvbmx5IGdldCBhbiBleGNlcHRpb24gaWYgd2UgY2FsbCBzb21lIHVzZXIgZnVuY3Rpb24u
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVzUmVz
dWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAgIGlm
IChVTkxJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6
OkV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBib29sIG9rVG9Eb0Zhc3RQ
YXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0
UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGV4ZWMsIHRo
aXNPYmopOworICAgIGJvb2wgb2tUb0RvRmFzdFBhdGggPSBzcGVjaWVzUmVzdWx0LmZpcnN0ID09
IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoICYmIGlzSlNBcnJheSh0aGlzT2JqKSAm
JiBsZW5ndGggPT0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChMSUtFTFkob2tUb0RvRmFzdFBhdGgpKSB7
Ci0gICAgICAgIGlmIChKU0FycmF5KiByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xp
Y2UoKmV4ZWMsIGJlZ2luLCBlbmQgLSBiZWdpbikpCisgICAgICAgIGlmIChKU0FycmF5KiByZXN1
bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmNhbGxGcmFtZSwgYmVnaW4sIGVuZCAt
IGJlZ2luKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICB9CiAKQEAgLTEwNjIsNyArMTA2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHNwZWNpZXNSZXN1
bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9iamVjdCkKICAgICAg
ICAgcmVzdWx0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZW5kIC0gYmVnaW4pOwor
ICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwg
ZW5kIC0gYmVnaW4pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIH0KIApAQCAtMTA3MiwzNCArMTA3MiwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdW5zaWduZWQg
biA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gYmVnaW47IGsgPCBlbmQ7IGsrKywgbisrKSB7
Ci0gICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGspOworICAg
ICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUsIHRoaXNPYmosIGspOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAodikgewot
ICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBuLCB2LCAwLCBQdXREaXJl
Y3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
Y2FsbEZyYW1lLCBuLCB2LCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHNldExlbmd0aChleGVjLCB2bSwgcmVzdWx0LCBuKTsK
KyAgICBzZXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgcmVzdWx0LCBuKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxNS40LjQuMTIKIAotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAg
IEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmICghZXhlYy0+
YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVz
dWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhl
YywgdGhpc09iaiwgMCk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkgewor
ICAgICAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVj
aWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgdGhpc09iaiwgMCk7
CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAoc3BlY2ll
c1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVj
dFJlc3VsdDo6RXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwpAQCAtMTEwOCwyMyArMTEwOCwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKHNwZWNpZXNS
ZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9iamVjdCkKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7
CisgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVs
bHB0cik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHNldExlbmd0aChleGVjLCB2bSwgcmVzdWx0
LCAwKTsKKyAgICAgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgMCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHNldExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwg
bGVuZ3RoKTsKKyAgICAgICAgc2V0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKLSAg
ICB1bnNpZ25lZCBhY3R1YWxTdGFydCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JF
bmQoZXhlYywgMCwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBhY3R1YWxTdGFydCA9IGFyZ3VtZW50
Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoY2FsbEZyYW1lLCAwLCBsZW5ndGgpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWdu
ZWQgYWN0dWFsRGVsZXRlQ291bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKLSAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID4gMSkgewotICAgICAgICBkb3VibGUgZGVsZXRlQ291bnQgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXIoZXhlYyk7CisgICAgaWYgKGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID4gMSkgeworICAgICAgICBkb3VibGUgZGVsZXRlQ291bnQg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihjYWxsRnJhbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgaWYgKGRlbGV0ZUNvdW50IDwgMCkKICAgICAgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50
ID0gMDsKQEAgLTExMzQsODMgKzExMzQsODMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBhY3R1
YWxEZWxldGVDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxldGVDb3VudCk7CiAgICAg
fQogCi0gICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3Bl
Y2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlzT2JqLCBhY3R1YWxE
ZWxldGVDb3VudCk7CisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2Jq
ZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHRo
aXNPYmosIGFjdHVhbERlbGV0ZUNvdW50KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYgKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2ll
c0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IG51bGxwdHI7Ci0g
ICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0Nv
bnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxlbmd0aCA9
PSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBib29sIG9rVG9Eb0Zhc3RQYXRoID0gc3Bl
Y2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCAmJiBp
c0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09i
aik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaWYgKExJS0VMWShva1RvRG9GYXN0UGF0aCkpCi0gICAgICAgIHJlc3VsdCA9IGFzQXJyYXko
dGhpc09iaiktPmZhc3RTbGljZSgqZXhlYywgYWN0dWFsU3RhcnQsIGFjdHVhbERlbGV0ZUNvdW50
KTsKKyAgICAgICAgcmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+ZmFzdFNsaWNlKCpjYWxsRnJh
bWUsIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCk7CiAKICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpDcmVhdGVkT2JqZWN0KQogICAgICAgICAgICAgcmVzdWx0ID0gc3BlY2llc1Jlc3VsdC5z
ZWNvbmQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6dHJ5
Q3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBhY3R1YWxE
ZWxldGVDb3VudCk7CisgICAgICAgICAgICByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGFjdHVhbERlbGV0ZUNvdW50KTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBhY3R1YWxEZWxldGVDb3VudDsgKytrKSB7Ci0gICAgICAgICAgICBKU1ZhbHVl
IHYgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBrICsgYWN0dWFsU3RhcnQpOworICAgICAg
ICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoY2FsbEZyYW1lLCB0aGlzT2JqLCBrICsgYWN0
dWFsU3RhcnQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXYpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBr
LCB2LCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBrLCB2LCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdW5zaWduZWQgaXRlbUNvdW50ID0gc3Rk
OjptYXg8aW50PihleGVjLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKKyAgICB1bnNpZ25lZCBp
dGVtQ291bnQgPSBzdGQ6Om1heDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIC0gMiwg
MCk7CiAgICAgaWYgKGl0ZW1Db3VudCA8IGFjdHVhbERlbGV0ZUNvdW50KSB7Ci0gICAgICAgIHNo
aWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxpY2U+KGV4ZWMsIHRoaXNPYmosIGFjdHVhbFN0
YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOworICAgICAgICBzaGlm
dDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU3BsaWNlPihjYWxsRnJhbWUsIHRoaXNPYmosIGFjdHVh
bFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNvdW50LCBsZW5ndGgpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVsc2Ug
aWYgKGl0ZW1Db3VudCA+IGFjdHVhbERlbGV0ZUNvdW50KSB7Ci0gICAgICAgIHVuc2hpZnQ8SlNB
cnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oZXhlYywgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFj
dHVhbERlbGV0ZUNvdW50LCBpdGVtQ291bnQsIGxlbmd0aCk7CisgICAgICAgIHVuc2hpZnQ8SlNB
cnJheTo6U2hpZnRDb3VudEZvclNwbGljZT4oY2FsbEZyYW1lLCB0aGlzT2JqLCBhY3R1YWxTdGFy
dCwgYWN0dWFsRGVsZXRlQ291bnQsIGl0ZW1Db3VudCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCBpdGVtQ291bnQ7ICsraykgewotICAgICAgICB0aGlzT2JqLT5w
dXRCeUluZGV4SW5saW5lKGV4ZWMsIGsgKyBhY3R1YWxTdGFydCwgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoayArIDIpLCB0cnVlKTsKKyAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElubGluZShj
YWxsRnJhbWUsIGsgKyBhY3R1YWxTdGFydCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChr
ICsgMiksIHRydWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICB9CiAgICAgCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHNldExl
bmd0aChleGVjLCB2bSwgdGhpc09iaiwgbGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVt
Q291bnQpOworICAgIHNldExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBsZW5ndGggLSBh
Y3R1YWxEZWxldGVDb3VudCArIGl0ZW1Db3VudCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jVW5TaGlmdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4
ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsK
KyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIGRvdWJs
ZSBkb3VibGVMZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBkb3VibGUgZG91
YmxlTGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBkb3VibGVMZW5ndGg7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICB1bnNpZ25lZCBuckFyZ3MgPSBleGVjLT5hcmd1bWVudENv
dW50KCk7CisgICAgdW5zaWduZWQgbnJBcmdzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
CiAgICAgaWYgKG5yQXJncykgewogICAgICAgICBpZiAoVU5MSUtFTFkoZG91YmxlTGVuZ3RoICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihuckFyZ3MpID4gbWF4U2FmZUludGVnZXIoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkNhbm5vdCBzaGlmdCB0
byBvZmZzZXQgZ3JlYXRlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOwotICAgICAgICB1bnNoaWZ0
PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTaGlmdD4oZXhlYywgdGhpc09iaiwgMCwgMCwgbnJBcmdz
LCBsZW5ndGgpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIkNhbm5vdCBzaGlmdCB0byBvZmZzZXQgZ3JlYXRlciB0aGFuICgyICoqIDUzKSAt
IDEiX3MpOworICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTaGlmdD4oY2Fs
bEZyYW1lLCB0aGlzT2JqLCAwLCAwLCBuckFyZ3MsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKLSAgICAgICAgdGhpc09iai0+cHV0QnlJ
bmRleElubGluZShleGVjLCBrLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCBrLCBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KGspLCB0cnVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIobGVuZ3RoICsgbnJBcmdzKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcHV0
TGVuZ3RoKGV4ZWMsIHZtLCB0aGlzT2JqLCByZXN1bHQpOworICAgIHB1dExlbmd0aChjYWxsRnJh
bWUsIHZtLCB0aGlzT2JqLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIApAQCAtMTMxNSwzNiArMTMxNSwzNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
ZmFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGFycmF5LCB1bnNp
ZwogICAgIH0KIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBl
eGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7
CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgpOworICAgIHVuc2lnbmVkIGluZGV4
ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChjYWxsRnJhbWUsIDEsIGxlbmd0
aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBKU1ZhbHVlIHNl
YXJjaEVsZW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHNlYXJjaEVsZW1l
bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2Jq
ZWN0KSkgewotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RJbmRleE9mPEluZGV4T2ZEaXJl
Y3Rpb246OkZvcndhcmQ+KGV4ZWMsIHZtLCBhc0FycmF5KHRoaXNPYmplY3QpLCBsZW5ndGgsIHNl
YXJjaEVsZW1lbnQsIGluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBmYXN0SW5kZXhP
ZjxJbmRleE9mRGlyZWN0aW9uOjpGb3J3YXJkPihjYWxsRnJhbWUsIHZtLCBhc0FycmF5KHRoaXNP
YmplY3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKICAgICBmb3IgKDsgaW5k
ZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJvcGVydHko
ZXhlYywgdGhpc09iamVjdCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0
eShjYWxsRnJhbWUsIHRoaXNPYmplY3QsIGluZGV4KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIHNlYXJj
aEVsZW1lbnQsIGUpOworICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpzdHJpY3RFcXVh
bChjYWxsRnJhbWUsIHNlYXJjaEVsZW1lbnQsIGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoaXNFcXVhbCkKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKQEAgLTEzNTMsMjQgKzEzNTMsMjQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRl
eE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4
ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChV
TkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoc2Nv
cGUuZXhjZXB0aW9uKCkpIHx8ICFsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoLTEpKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbGVuZ3RoIC0gMTsKLSAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgSlNWYWx1ZSBmcm9t
VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICAgICAgZG91YmxlIGZyb21E
b3VibGUgPSBmcm9tVmFsdWUudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAyKSB7CisgICAgICAgIEpTVmFsdWUgZnJvbVZhbHVlID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICAgICAgZG91YmxlIGZyb21Eb3VibGUgPSBm
cm9tVmFsdWUudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmIChmcm9tRG91YmxlIDwgMCkgewogICAgICAgICAg
ICAgZnJvbURvdWJsZSArPSBsZW5ndGg7CkBAIC0xMzgxLDEwICsxMzgxLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tRG91
YmxlKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqZWN0KSkgewotICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGZhc3RJbmRleE9mPEluZGV4T2ZEaXJlY3Rpb246OkJhY2t3YXJkPihleGVjLCB2bSwg
YXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRleCk7CisgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6QmFja3dh
cmQ+KGNhbGxGcmFtZSwgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxlbmd0aCwgc2VhcmNoRWxl
bWVudCwgaW5kZXgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTM5MiwxMSArMTM5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgZG8g
ewogICAgICAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgpOwotICAgICAgICBKU1ZhbHVlIGUgPSBn
ZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqZWN0LCBpbmRleCk7CisgICAgICAgIEpTVmFsdWUgZSA9
IGdldFByb3BlcnR5KGNhbGxGcmFtZSwgdGhpc09iamVjdCwgaW5kZXgpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
ZXhlYywgc2VhcmNoRWxlbWVudCwgZSk7CisgICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6
OnN0cmljdEVxdWFsKGNhbGxGcmFtZSwgc2VhcmNoRWxlbWVudCwgZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmIChpc0VxdWFsKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOwpAQCAtMTUwMCwx
MyArMTUwMCwxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUVsZW1lbnRzKFQqIGJ1ZmZlciwg
dW5zaWduZWQgb2Zmc2V0LCB2b2lkKiBzb3VyY2UsIHVuc2lnbgogICAgICAgICBjbGVhckVsZW1l
bnQ8VD4oYnVmZmVyW2kgKyBvZmZzZXRdKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0g
Mik7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQXJyYXkqIGZpcnN0QXJyYXkgPSBqc0Nh
c3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0FycmF5KiBm
aXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICAKICAgICAvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IG5laXRoZXIgYXJyYXkg
aGFzIHNldCBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlLiBJZiB0aGUgZmlyc3QgYXJyYXkKICAg
ICAvLyBoYXMgaW5kZXhlZCBhY2Nlc3NvcnMgdGhlbiBvbmUgb2YgdGhvc2UgYWNjZXNzb3JzIG1p
Z2h0IGNoYW5nZSB0aGUgdmFsdWUgb2YgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZQpAQCAtMTUx
NSwxNCArMTUxNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Q
cml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0aGUg
c3BlY2llcyBjb25zdHJ1Y3RvciBoZXJlIHNpbmNlIGNoZWNraW5nIGl0IGluIHRoZSBKUyB3cmFw
cGVyIGlzIHRvbyBleHBlbnNpdmUgZm9yIHRoZSBub24tb3B0aW1pemluZyB0aWVycy4KLSAgICBi
b29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoZXhlYywgZmlyc3RBcnJheSk7
CisgICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKGNhbGxGcmFtZSwg
Zmlyc3RBcnJheSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoVU5M
SUtFTFkoIWlzVmFsaWQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKIAotICAgIEpTVmFsdWUgc2Vjb25kID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7Cisg
ICAgSlNWYWx1ZSBzZWNvbmQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAg
IGlmICghaXNKU0FycmF5KHNlY29uZCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY29uY2F0QXBwZW5kT25lKGV4ZWMsIHZtLCBmaXJzdEFycmF5LCBzZWNvbmQpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25jYXRBcHBlbmRPbmUoY2FsbEZyYW1lLCB2
bSwgZmlyc3RBcnJheSwgc2Vjb25kKSk7CiAKICAgICBKU0FycmF5KiBzZWNvbmRBcnJheSA9IGpz
Q2FzdDxKU0FycmF5Kj4oc2Vjb25kKTsKICAgICAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBjaGVja2VkUmVzdWx0U2l6ZSArPSBzZWNvbmRBcnJheVNp
emU7CiAKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFJlc3VsdFNpemUuaGFzT3ZlcmZsb3dlZCgp
KSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTU0NSwxNCArMTU0NSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNw
eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSW5kZXhpbmdUeXBlIHNlY29uZFR5cGUgPSBzZWNvbmRB
cnJheS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBmaXJzdEFycmF5
LT5tZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoc2Vjb25kVHlwZSk7CiAgICAgaWYgKHR5cGUg
PT0gTm9uQXJyYXkgfHwgIWZpcnN0QXJyYXktPmNhbkZhc3RDb3B5KHZtLCBzZWNvbmRBcnJheSkg
fHwgcmVzdWx0U2l6ZSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgIEpTQXJy
YXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgcmVzdWx0U2l6
ZSk7CisgICAgICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZy
YW1lLCBudWxscHRyLCByZXN1bHRTaXplKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gbW92ZUVs
ZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHQsIDAsIGZpcnN0QXJyYXksIGZpcnN0QXJyYXlTaXplKTsK
KyAgICAgICAgYm9vbCBzdWNjZXNzID0gbW92ZUVsZW1lbnRzKGNhbGxGcmFtZSwgdm0sIHJlc3Vs
dCwgMCwgZmlyc3RBcnJheSwgZmlyc3RBcnJheVNpemUpOwogICAgICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFzdWNjZXNzKSkKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgICAg
ICBzdWNjZXNzID0gbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHQsIGZpcnN0QXJyYXlTaXpl
LCBzZWNvbmRBcnJheSwgc2Vjb25kQXJyYXlTaXplKTsKKyAgICAgICAgc3VjY2VzcyA9IG1vdmVF
bGVtZW50cyhjYWxsRnJhbWUsIHZtLCByZXN1bHQsIGZpcnN0QXJyYXlTaXplLCBzZWNvbmRBcnJh
eSwgc2Vjb25kQXJyYXlTaXplKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gc3VjY2Vzcyk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpCiAg
ICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTE1NjAsMTYgKzE1NjAsMTUg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgU3RydWN0dXJlKiByZXN1bHRT
dHJ1Y3R1cmUgPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24odHlwZSk7CisgICAgU3RydWN0dXJlKiByZXN1bHRTdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbih0eXBlKTsKICAgICBpZiAoVU5MSUtFTFkoaGFzQW55QXJyYXlTdG9yYWdlKHJlc3Vs
dFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bGwoKSk7CiAKLSAgICBBU1NFUlQoIWxleGljYWxHbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSk7CisgICAgQVNTRVJUKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRp
bWUoKSk7CiAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBpbml0aWFsaXphdGlvblNjb3Bl
KHZtKTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkUmVzdHJpY3RlZChpbml0aWFsaXphdGlvblNjb3BlLCByZXN1bHRTdHJ1Y3R1cmUsIHJlc3Vs
dFNpemUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
IH0KIApAQCAtMTU4OCwyNCArMTU4NywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0Fw
cGVuZE1lbWNweShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDMpOworICAgIEFT
U0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAzKTsKIAotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1bHRBcnJheSA9
IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTQXJy
YXkqIG90aGVyQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKLSAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgy
KTsKKyAgICBKU0FycmF5KiByZXN1bHRBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNBcnJheSogb3RoZXJBcnJheSA9IGpzQ2Fz
dDxKU0FycmF5Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgSlNWYWx1
ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBBU1NF
UlQoc3RhcnRWYWx1ZS5pc1VJbnQzMkFzQW55SW50KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0SW5k
ZXggPSBzdGFydFZhbHVlLmFzVUludDMyQXNBbnlJbnQoKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBy
ZXN1bHRBcnJheS0+YXBwZW5kTWVtY3B5KGV4ZWMsIHZtLCBzdGFydEluZGV4LCBvdGhlckFycmF5
KTsKKyAgICBib29sIHN1Y2Nlc3MgPSByZXN1bHRBcnJheS0+YXBwZW5kTWVtY3B5KGNhbGxGcmFt
ZSwgdm0sIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXkpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1bHRBcnJheSwgc3RhcnRJbmRleCwgb3RoZXJB
cnJheSwgb3RoZXJBcnJheS0+bGVuZ3RoKCkpOworICAgIG1vdmVFbGVtZW50cyhjYWxsRnJhbWUs
IHZtLCByZXN1bHRBcnJheSwgc3RhcnRJbmRleCwgb3RoZXJBcnJheSwgb3RoZXJBcnJheS0+bGVu
Z3RoKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCmluZGV4
IDc1YWM5ZDJhZDRhZGE2ZTM4M2FmZDk0ODA1NTRlNGY4NDY2ZTg0ZmIuLjZiMmRmNjNhZWJkMWIx
NjA3MjhiNTViODA0ZDE4ZjY2NzU5YzdiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaApAQCAtNTAsMTAgKzUwLDEwIEBAIGNsYXNzIEFycmF5
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQXJyYXkgewogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmND
b25jYXRNZW1jcHkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZh
dGVGdW5jQ29uY2F0TWVtY3B5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCmluZGV4IGM3NzhhMDBjODkwYTk4YWM0MmVkMGFiMDgwZDlmNjQ3MTE5M2E3
YzAuLjdiOGZhYWJkMDNjOWVjZGNiNTE2M2NlNjM1YTQxNmI0ZWE5YmJlZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0lu
Zm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZTo6QXN5bmMpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhl
YywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7
CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwogfQogCiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOWEzOTM4NzZlOGUz
NTMxZWIyOTdiMmE0YzU0MjZiNTA4N2IwODUyZC4uOGY3YTgyZDFkMjA1OTQzN2MyYmE2MWE2MTJh
MTZiZmU0YzFiMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBB
c3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jR2VuZXJh
dG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3Qg
YXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9u
KGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2Jh
bE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3lu
Y0dlbmVyYXRvcikpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1l
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2Vu
ZXJhdG9yKSk7CiB9CiAKIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmlu
ZGV4IDM2OGVhOGZhNmNjYjk3NmUxYzUxZDhlMGI0NzY1NmZmMjU5ZDMyMDYuLmE2ZDA5NzQ1N2U5
NDM5MzIzMjIwMDQ3NjlhOTJiOTUxNGE1OWMxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBdG9taWNzT2JqZWN0KTsKICAgICBtYWNy
byh4b3IsIFhvciwgMykKIAogI2RlZmluZSBERUNMQVJFX0ZVTkNfUFJPVE8obG93ZXJOYW1lLCB1
cHBlck5hbWUsIGNvdW50KSAgICAgICAgICAgICAgICAgXAotICAgIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmMgIyMgdXBwZXJOYW1lKEV4ZWNTdGF0ZSopOworICAgIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmMgIyMgdXBwZXJOYW1lKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBGT1JfRUFDSF9BVE9NSUNTX0ZVTkMoREVDTEFSRV9G
VU5DX1BST1RPKQogI3VuZGVmIERFQ0xBUkVfRlVOQ19QUk9UTwogCkBAIC0xODYsMTIgKzE4Niwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNWYWx1ZSogYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgotRW5jb2RlZEpTVmFsdWUgYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBGdW5jJiBmdW5jKQorRW5jb2RlZEpTVmFsdWUgYXRvbWljT3BlcmF0aW9uV2l0aEFy
Z3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgSlNWYWx1ZSBhcmdzWzIgKyBGdW5jOjpudW1FeHRyYUFy
Z3NdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDIgKyBGdW5jOjpudW1FeHRyYUFyZ3M7IGktLTsp
Ci0gICAgICAgIGFyZ3NbaV0gPSBleGVjLT5hcmd1bWVudChpKTsKLSAgICByZXR1cm4gYXRvbWlj
T3BlcmF0aW9uV2l0aEFyZ3MoZXhlYy0+dm0oKSwgZXhlYywgYXJncywgZnVuYyk7CisgICAgICAg
IGFyZ3NbaV0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpOworICAgIHJldHVybiBhdG9taWNPcGVy
YXRpb25XaXRoQXJncyhnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSwgYXJncywgZnVuYyk7
CiB9CiAKIHN0cnVjdCBBZGRGdW5jIHsKQEAgLTMxMyw4MCArMzEzLDgwIEBAIEVuY29kZWRKU1Zh
bHVlIGlzTG9ja0ZyZWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZykKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1
bmNBZGQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9t
aWNzRnVuY0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgQWRkRnVu
YygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIEFkZEZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXRvbWljc0Z1bmNBbmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhdG9taWNzRnVuY0FuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhl
YywgQW5kRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIEFuZEZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXRvbWljc0Z1bmNDb21wYXJlRXhjaGFuZ2UoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0NvbXBhcmVFeGNoYW5nZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgQ29tcGFyZUV4Y2hhbmdlRnVuYygp
KTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXRvbWljc0Z1bmNFeGNoYW5nZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jRXhjaGFuZ2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09w
ZXJhdGlvbldpdGhBcmdzKGV4ZWMsIEV4Y2hhbmdlRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWlj
T3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIEV4Y2hhbmdlRnVuYygp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0lzTG9ja0Zy
ZWUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNz
RnVuY0lzTG9ja0ZyZWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gaXNMb2NrRnJlZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgcmV0
dXJuIGlzTG9ja0ZyZWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0xvYWQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY0xvYWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIExvYWRGdW5jKCkpOworICAgIHJldHVy
biBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTG9hZEZ1
bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNPcihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5j
T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIE9yRnVuYygpKTsKKyAg
ICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IE9yRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVu
Y1N0b3JlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRv
bWljc0Z1bmNTdG9yZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgU3Rv
cmVGdW5jKCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgU3RvcmVGdW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGF0b21pY3NGdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhB
cmdzKGV4ZWMsIFN1YkZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdz
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBTdWJGdW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgSlNJbnQzMkFycmF5KiB0eXBlZEFy
cmF5ID0ganNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFy
cmF5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghdHlwZWRBcnJheSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3
YWl0L3dha2UgbXVzdCBiZSBhbiBJbnQzMkFycmF5LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3QgYmUg
YW4gSW50MzJBcnJheS4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIXR5cGVkQXJyYXktPmlzU2hhcmVkKCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Ig
d2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtl
IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfcyk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYWNjZXNz
SW5kZXggPSB2YWxpZGF0ZWRBY2Nlc3NJbmRleCh2bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMSks
IHR5cGVkQXJyYXkpOworICAgIHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRhdGVkQWNjZXNz
SW5kZXgodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdHlwZWRBcnJheSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKTsKICAgICAKICAgICBpbnQzMl90KiBwdHIgPSB0eXBlZEFycmF5LT50eXBlZFZlY3Rv
cigpICsgYWNjZXNzSW5kZXg7CiAgICAgCi0gICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoMikudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGV4cGVjdGVkVmFsdWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLnRvSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAg
IAotICAgIGRvdWJsZSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSBleGVjLT5hcmd1bWVudCgzKS50
b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgdGltZW91dEluTWlsbGlzZWNvbmRzID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgzKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCiAgICAg
aWYgKCF2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT5pc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3Vy
cmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXRv
bWljcy53YWl0IGNhbm5vdCBiZSBjYWxsZWQgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQuIl9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkF0b21pY3Mud2FpdCBj
YW5ub3QgYmUgY2FsbGVkIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkLiJfcyk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIApAQCAtMzk4
LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWl0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyAgICAgYS4gTGV0IHEgYmUgPyBUb051bWJlcih0aW1l
b3V0KS4KICAgICAvLyAgICAgYi4gSWYgcSBpcyBOYU4gdGhlbiBsZXQgdCBiZSAraW5mLCBvdGhl
cndpc2UgbGV0IHQgYmUgbWF4KDAsIHEpLgogICAgIC8vCi0gICAgLy8gZXhlYy0+YXJndW1lbnQo
MykgcmV0dXJucyB1bmRlZmluZWQgaWYgaXQncyBub3QgcHJvdmlkZWQgYW5kIFRvTnVtYmVyKHVu
ZGVmaW5lZCkgcmV0dXJucyBOYU4sCisgICAgLy8gY2FsbEZyYW1lLT5hcmd1bWVudCgzKSByZXR1
cm5zIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCBwcm92aWRlZCBhbmQgVG9OdW1iZXIodW5kZWZpbmVk
KSByZXR1cm5zIE5hTiwKICAgICAvLyBzbyBOYU4gaXMgdGhlIG9ubHkgc3BlY2lhbCBjYXNlLgog
ICAgIGlmICghc3RkOjppc25hbih0aW1lb3V0KSkKICAgICAgICAgdGltZW91dCA9IHN0ZDo6bWF4
KDBfcywgdGltZW91dCk7CkBAIC00MjgsMzEgKzQyOCwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0U3RyaW5nKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWtlKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNXYWtlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKLSAgICBKU0ludDMyQXJyYXkqIHR5
cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBleGVjLT5hcmd1bWVu
dCgwKSk7CisgICAgSlNJbnQzMkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0lu
dDMyQXJyYXkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCF0eXBlZEFy
cmF5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkg
Zm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVz
dCBiZSBhbiBJbnQzMkFycmF5LiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghdHlwZWRBcnJheS0+aXNTaGFy
ZWQoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFycmF5
IGZvciB3YWl0L3dha2UgbXVzdCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0
L3dha2UgbXVzdCB3cmFwIGEgU2hhcmVkQXJyYXlCdWZmZXIuIl9zKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBh
Y2Nlc3NJbmRleCA9IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZtLCBleGVjLCBleGVjLT5hcmd1bWVu
dCgxKSwgdHlwZWRBcnJheSk7CisgICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRB
Y2Nlc3NJbmRleCh2bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0eXBlZEFy
cmF5KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpOwogICAgIAogICAgIGludDMyX3QqIHB0ciA9IHR5cGVkQXJyYXktPnR5cGVk
VmVjdG9yKCkgKyBhY2Nlc3NJbmRleDsKICAgICAKLSAgICBKU1ZhbHVlIGNvdW50VmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgyKTsKKyAgICBKU1ZhbHVlIGNvdW50VmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDIpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gVUlOVF9NQVg7CiAgICAgaWYgKCFjb3Vu
dFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50MzJfdCBjb3VudEludCA9IGNvdW50
VmFsdWUudG9JbnQzMihleGVjKTsKKyAgICAgICAgaW50MzJfdCBjb3VudEludCA9IGNvdW50VmFs
dWUudG9JbnQzMihjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgICAgICBjb3VudCA9IHN0ZDo6
bWF4KDAsIGNvdW50SW50KTsKICAgICB9CkBAIC00NjAsOSArNDYwLDkgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dha2UoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoUGFya2luZ0xvdDo6dW5wYXJrQ291bnQocHRy
LCBjb3VudCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVu
Y1hvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21p
Y3NGdW5jWG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBYb3JGdW5j
KCkpOworICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgWG9yRnVuYygpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BdG9taWNzQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MTlhMzI1ZTJiNGNhMzc1YjExYzNiNTFmZjk1OGExNjAxZWRhOTIyYy4uOWFhNjU4N2ExMTc2YTc4
NzZkYTYzNjc3N2U2MGQ3MjI1ZDNjNDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9y
RnVuY0FzVWludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNTcsNyAr
NTcsNyBAQCBjb25zdCBDbGFzc0luZm8gQmlnSW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmJpZ0ludAogQGVuZAogKi8KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEJpZ0ludENvbnN0cnVjdG9yOjpC
aWdJbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsQmlnSW50Q29uc3RydWN0b3IsIG51bGxw
dHIpCkBAIC0xMTAsMTggKzExMCwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICB9KSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJp
Z0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKLSAgICBK
U1ZhbHVlIHByaW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKHN0YXRlKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHByaW1pdGl2ZSA9
IHZhbHVlLnRvUHJpbWl0aXZlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAocHJpbWl0aXZlLmlzTnVtYmVyKCkp
IHsKICAgICAgICAgaWYgKCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwg
Ik5vdCBzYWZlIGludGVnZXIiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJOb3Qgc2FmZSBp
bnRlZ2VyIl9zKSk7CiAgICAgICAgIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAg
IGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQpAQCAtMTMzLDEyICsxMzMsMTIgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwog
ICAgIH0KICAgICAKLSAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludCgqc3RhdGUs
IHByaW1pdGl2ZSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoKmNhbGxG
cmFtZSwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oRXhlY1N0YXRlKikKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNVaW50TihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0lu
dF0gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NApAQCAtMTQ2LDcgKzE0
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5j
QXNVaW50TihFeGVjU3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1
bmNBc0ludE4oRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50
Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAg
ICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50LmFzSW50TiBhbmQg
QmlnSW50LmFzVWludE4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgxMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
UHJvdG90eXBlLmNwcAppbmRleCA0ZjFlMjVhNzA3YzJlYjY4MTFkZmFjOGE5YzdhOWFiNGZiYzQ0
ZjIwLi5iYTBjZTczOTE3MDAzNmY1YzkxYjMxNWVlMzM0ODQ4YTU2YWRhMGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTQx
LDkgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJ
bnRQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtOTAsNDIgKzkwLDQ3IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFs
dWUgdGhpc1ZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitz
dGF0aWMgSlNWYWx1ZSBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQmlnSW50KiB2YWx1ZSA9IHRv
VGhpc0JpZ0ludFZhbHVlKHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB2
YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwot
ICAgIAorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIid0
aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisKICAgICBB
U1NFUlQodmFsdWUpOwogCi0gICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4
QXJndW1lbnQoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc2NvcGUpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGludDMyX3QgcmFkaXgg
PSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgc2NvcGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
LSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKHN0YXRlLCByYWRpeCk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
U3RyaW5nIHJlc3VsdFN0cmluZyA9IHZhbHVlLT50b1N0cmluZyhjYWxsRnJhbWUsIHJhZGl4KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBpZiAocmVzdWx0U3RyaW5nLmxlbmd0aCgpID09IDEpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhyZXN1
bHRTdHJpbmdbMF0pKTsKKyAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcocmVzdWx0U3RyaW5nWzBdKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKKyAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGJpZ0ludFByb3RvRnVu
Y1RvU3RyaW5nKHN0YXRlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludFByb3Rv
RnVuY1RvU3RyaW5nSW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVP
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBpZiAoSlNCaWdJbnQqIHZhbHVlID0gdG9U
aGlzQmlnSW50VmFsdWUodm0sIHN0YXRlLT50aGlzVmFsdWUoKSkpCisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGlmIChKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZSh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOwogICAgIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICIndGhp
cycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBi
ZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCmluZGV4IDRlYjk2MDA3NzBjNjRjNDIyZjExZTQxNWJlZDhkODhmOTg4NWY5ODIuLjU5
OWI4ODU0ZThmNWE5YTUxMDhhZWVjMDMwNmZhYjQ0OGQwNmI2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMzIs
MTggKzMyLDE4IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCb29s
ZWFuQ29uc3RydWN0b3IpOwogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5Db25zdHJ1Y3RvcikgfTsKIAogLy8gRUNNQSAxNS42LjEK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCb29sZWFuQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEJvb2xlYW5Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvQm9vbGVhbihleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpKTsKIH0K
IAogLy8gRUNNQSAxNS42LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEJvb2xlYW5Db25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSBib29sZWFuID0ganNCb29sZWFuKGV4ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihleGVjKSk7
Ci0gICAgU3RydWN0dXJlKiBib29sZWFuU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPmJvb2xl
YW5PYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgSlNWYWx1ZSBib29sZWFuID0ganNCb29sZWFuKGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpOworICAgIFN0cnVjdHVy
ZSogYm9vbGVhblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5i
b29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEJvb2xlYW5PYmplY3QqIG9iaiA9IEJvb2xlYW5PYmpl
Y3Q6OmNyZWF0ZSh2bSwgYm9vbGVhblN0cnVjdHVyZSk7CiAgICAgb2JqLT5zZXRJbnRlcm5hbFZh
bHVlKHZtLCBib29sZWFuKTsKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBCb29sZWFuQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3Rv
dHkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW1tZWRpYXRlQm9vbGVhblZhbHVlKQorSlNPYmplY3QqIGNvbnN0
cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBCb29sZWFuT2JqZWN0KiBvYmogPSBCb29sZWFuT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBvYmotPnNldEludGVybmFsVmFs
dWUodm0sIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSk7CiAgICAgcmV0dXJuIG9iajsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXgg
MDZmOWZkMzBhZDUyNzg5ODBhNTMxMjg0N2QzNmFmMDU2YzEyNzljNi4uM2Y5YjVkZmRiZmQ4NTRk
NDQxZDdiNjkyMTA0YWMzNzg0OTYzNDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB9CiAKQEAgLTY1LDExICs2NSwxMSBAQCB2b2lkIEJvb2xlYW5Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90
b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZSA9
PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLnNt
YWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtNzgsNyArNzgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCb29sZWFuT2JqZWN0
Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIGlmICh0aGlzT2JqZWN0
LT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7CkBAIC04NywxNyAr
ODcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21h
bGxTdHJpbmdzLnRydWVTdHJpbmcoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8Qm9vbGVhbk9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAppbmRleCAwOGY3
OWRmNGQ2NzgwMTM0NDRhNmE2MzlhYjRmZmE0OWFlNzFiNWEwLi5lOTcxNDg4NTJkMGI4ZTY3NDU0
NzhlZmY5MjA1MzNhNGM1YjNhZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmgKQEAgLTMzLDEyICszMywxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgQXJnTGlzdDsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4ZWNT
dGF0ZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3Mg
SlNTY29wZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogZW51bSBjbGFzcyBDYWxs
VHlwZSA6IHVuc2lnbmVkIHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBkNWQ2ZjdlMjQwMGRiN2M5MGVkMWYzNjll
YmY4MzI3ODI2ZDk0YTFiLi4xZjc1Y2I1MDllYTYzNWFiZTIzNzU1MTA3NWEyYTE1NDI1MmUzYjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMzA2LDcgKzMwNiw4IEBAIGlubGluZSBKU0FycmF5KiBhbGxvY2F0ZU5ld0FycmF5QnVm
ZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTSW1tdXRhYmxlCiAKIH0gLy8gbmFt
ZXNwYWNlIENvbW1vblNsb3dQYXRocwogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
ICNkZWZpbmUgU0xPV19QQVRICmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKaW5kZXggYjFlOGUyOWI1MDJjNzczMGIxM2I2MzBiYzM5N2JmOTExNjNlYjM4YS4uMjE2
ZDY2ZGM3MThjYjJmYTk1MzZkOTllYjY5ODJlMzhiNmM2ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzEsMTQgKzMxLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUNhY2hlRXJyb3I7CiBjbGFzcyBDYWNoZWRCeXRlY29k
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4ZWNTdGF0ZTsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBTb3VyY2VDb2RlOwog
Y2xhc3MgU3ltYm9sOwogY2xhc3MgVk07CiBjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5
bnRheChWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNW
YWx1ZSogZXhjZXB0aW9uID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlQ2xpZW50LmgKaW5kZXggMTk4ZWZmM2EzNmYyMGMxNzcxNTczNTgyMTQ2MmYxMzgwZTc1
NTExNS4uOTgzOGQ5NTI4M2QwODM3ZjUxNjdmZTkyYjNjZTE0ZTNlYTZhZjZlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuaApAQCAtMzQsNyArMzQs
OCBAQCBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiAKIGNsYXNzIENvbnNvbGVDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAppbmRleCA3ZjRjZjdlNDYzZmVjOWIzZDU1
NjE3NmNjMzUzY2I4YWIwMjBkOGI2Li42YTcyMTMxZjYyNjk3NzZlYjJlYWU5NjhjYmRhYzYwYWFm
MDczZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2Jq
ZWN0LmNwcApAQCAtNDgsMzIgKzQ4LDMyIEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVPckRlZmF1bHRM
YWJlbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShDb25zb2xlT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Vycm9yKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0xvZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNJbmZvKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
RGlyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0RpclhNTChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNBc3NlcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jQ291bnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9m
aWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1Byb2ZpbGVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNUaW1lKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY1RpbWVMb2coRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3Rh
bXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jR3JvdXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBF
bmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jUmVjb3JkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJbmZvKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NsZWFy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
RGlyWE1MKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFibGUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY0NvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNl
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNQcm9maWxlRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hv
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNUaW1lTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNHcm91cEVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Nj
cmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJbmZv
IENvbnNvbGVPYmplY3Q6OnNfaW5mbyA9IHsgIkNvbnNvbGUiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKENvbnNvbGVPYmplY3QpIH07CiAKQEAg
LTEyNiwzMDkgKzEyNiwzMDkgQEAgc3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwKICAgICByZXR1cm4g
dmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25z
b2xlTG9nV2l0aExldmVsKEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZUxldmVsIGxldmVsKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGNvbnNvbGVMb2dXaXRoTGV2ZWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsK
LSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmpl
Y3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+bG9nV2l0aExldmVs
KGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApLCBsZXZlbCk7
CisgICAgY2xpZW50LT5sb2dXaXRoTGV2ZWwoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApLCBsZXZlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkRlYnVnKTsKKyAgICBy
ZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgTWVzc2Fn
ZUxldmVsOjpEZWJ1Zyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNv
bGVMb2dXaXRoTGV2ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpFcnJvcik7CisgICAgcmV0dXJuIGNv
bnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2
ZWwoZXhlYywgTWVzc2FnZUxldmVsOjpMb2cpOworICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExl
dmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkxvZyk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJbmZvKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3Nh
Z2VMZXZlbDo6SW5mbyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6SW5mbyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNXYXJuKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNX
YXJuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIE1lc3NhZ2VMZXZlbDo6V2FybmluZyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5j
b25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0
LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmNsZWFyKGV4ZWMpOwor
ICAgIGNsaWVudC0+Y2xlYXIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jRGlyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCog
Y2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Cisg
ICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7
CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmRpcihleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5kaXIoY2FsbEZyYW1lLCBJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyWE1MKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5j
b25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0
LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmRpclhNTChleGVjLCBJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5k
aXJYTUwoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJh
bWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFi
bGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAg
Y2xpZW50LT50YWJsZShleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVj
LCAwKSk7CisgICAgY2xpZW50LT50YWJsZShjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2Ny
aXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUcmFjZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVu
dCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7
CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50
KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnRyYWNlKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPnRyYWNlKGNhbGxGcmFtZSwg
SW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
QXNzZXJ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNv
bGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNv
bnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGJvb2wgY29uZGl0aW9uID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgY29uZGl0aW9uID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChjb25kaXRpb24pCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQt
PmFzc2VydGlvbihleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAx
KSk7CisgICAgY2xpZW50LT5hc3NlcnRpb24oY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jQ291bnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8qIGNsaWVudCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgYXV0byog
Y2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBh
dXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsKKyAgICBhdXRvIGxh
YmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xpZW50LT5jb3Vu
dChleGVjLCBsYWJlbCk7CisgICAgY2xpZW50LT5jb3VudChjYWxsRnJhbWUsIGxhYmVsKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jQ291bnRSZXNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+
Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZh
dWx0TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFi
ZWxTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+Y291bnRSZXNldChleGVjLCBsYWJlbCk7Cisg
ICAgY2xpZW50LT5jb3VudFJlc2V0KGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDb25zb2xl
Q2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGll
bnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVD
bGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOwogICAgIGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+cHJvZmlsZShleGVj
LCBTdHJpbmcoKSk7CisgICAgICAgIGNsaWVudC0+cHJvZmlsZShjYWxsRnJhbWUsIFN0cmluZygp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CiAKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnByb2ZpbGUoZXhlYywgdGl0bGUpOworICAg
IGNsaWVudC0+cHJvZmlsZShjYWxsRnJhbWUsIHRpdGxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xp
ZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xl
Q2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1l
bnRDb3VudCgpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBpZiAoIWFyZ3NDb3VudCkgewotICAgICAgICBjbGllbnQtPnByb2ZpbGVFbmQo
ZXhlYywgU3RyaW5nKCkpOworICAgICAgICBjbGllbnQtPnByb2ZpbGVFbmQoY2FsbEZyYW1lLCBT
dHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xpZW50LT5wcm9maWxlRW5kKGV4ZWMsIHRp
dGxlKTsKKyAgICBjbGllbnQtPnByb2ZpbGVFbmQoY2FsbEZyYW1lLCB0aXRsZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgc2l6ZV90
IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3QgYXJnc0NvdW50
ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKCFhcmdzQ291bnQpIHsKLSAg
ICAgICAgY2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGV4ZWMsIFN0cmluZygpKTsKKyAgICAgICAg
Y2xpZW50LT50YWtlSGVhcFNuYXBzaG90KGNhbGxGcmFtZSwgU3RyaW5nKCkpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGNvbnN0
IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVj
LCBleGVjLT5hcmd1bWVudCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChleGVjLCB0aXRsZSk7CisgICAgY2xp
ZW50LT50YWtlSGVhcFNuYXBzaG90KGNhbGxGcmFtZSwgdGl0bGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8qIGNs
aWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsKKyAg
ICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgY2xp
ZW50LT50aW1lKGV4ZWMsIGxhYmVsKTsKKyAgICBjbGllbnQtPnRpbWUoY2FsbEZyYW1lLCBsYWJl
bCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVMb2co
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1RpbWVMb2coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
ZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGllbnQgPSBnbG9iYWxPYmplY3Qt
PmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9yRGVm
YXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExh
YmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRpbWVMb2coZXhlYywgbGFiZWwsIEluc3Bl
Y3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAgICBjbGllbnQtPnRpbWVM
b2coY2FsbEZyYW1lLCBsYWJlbCwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2Fs
bEZyYW1lLCAxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1RpbWVFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiBjbGllbnQgPSBnbG9i
YWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1dG8gbGFiZWwgPSB2
YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9y
RGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRpbWVFbmQoZXhlYywgbGFi
ZWwpOworICAgIGNsaWVudC0+dGltZUVuZChjYWxsRnJhbWUsIGxhYmVsKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNU
aW1lU3RhbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xv
YmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnRpbWVT
dGFtcChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7Cisg
ICAgY2xpZW50LT50aW1lU3RhbXAoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFy
Z3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jR3JvdXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNs
aWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAg
IENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwog
ICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5ncm91cChjYWxsRnJhbWUsIEluc3Bl
Y3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cENvbGxhcHNlZChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xp
ZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGll
bnQtPmdyb3VwQ29sbGFwc2VkKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRz
KGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwQ29sbGFwc2VkKGNhbGxGcmFtZSwgSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91
cEVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxP
YmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+Z3JvdXBFbmQo
ZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNs
aWVudC0+Z3JvdXBFbmQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jUmVjb3JkKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29u
c29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAg
aWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKLSAgICBjbGllbnQtPnJlY29yZChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFy
Z3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5yZWNvcmQoY2FsbEZyYW1lLCBJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNv
cmRFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFs
T2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPnJlY29yZEVu
ZChleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAg
Y2xpZW50LT5yZWNvcmRFbmQoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jU2NyZWVuc2hvdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xp
ZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQo
KTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGll
bnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+c2NyZWVuc2hvdChleGVjLCBJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50LT5zY3JlZW5zaG90
KGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAw
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4IDU5Mzhh
OTBkODlmOTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQuLjk2NzM1ODUxNGIxZDgzMDRlOTJi
ZGM2OTAzYTRkYzBmYjVlZTQzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTM1LDEwICszNSwxMSBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTU2NvcGU7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6
IHVuc2lnbmVkIHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjZiOGZlZTA2YTdiY2UyMDA1NWEzNDk3Nzg0
ZGFmMjc5YmYwZGVjZi4uZjBjNWIyMDk5OWRjNGUxMWI1YTA2ZWEyODRiNDUyMGUxZTNjNWU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwCkBAIC00NSw4ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVBhcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiB9CiAKQEAgLTY4LDggKzY5LDggQEAgY29uc3QgQ2xhc3NJbmZvIERhdGVD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmYKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKERhdGVDb25zdHJ1
Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aERhdGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIERhdGVDb25zdHJ1Y3Rvcjo6RGF0
ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxEYXRlLCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0
cnVjdG9yKQpAQCAtMTUwLDM4ICsxNTEsNDMgQEAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG4KICAg
ICByZXR1cm4gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGRhdGVTdHJ1Y3R1cmUsIHZhbHVlKTsK
IH0KICAgICAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFy
Z3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3REYXRlKGV4ZWMs
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dChleGVjLT52bSgpKSwgZXhlYy0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsKKyAgICBBcmdMaXN0IGFy
Z3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdERhdGUo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsK
IH0KIAogLy8gRUNNQSAxNS45LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdHM7CiAgICAgbXNUb0dyZWdvcmlhbkRhdGVU
aW1lKHZtLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMo
KSwgV1RGOjpMb2NhbFRpbWUsIHRzKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9ybWF0RGF0ZUFu
ZFRpbWUsIGZhbHNlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
YXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
YXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgU3Ry
aW5nIGRhdGVTdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBT
dHJpbmcgZGF0ZVN0ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihw
YXJzZURhdGUoZXhlYywgdm0sIGRhdGVTdHIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBhcnNlRGF0ZShjYWxsRnJhbWUsIHZtLCBk
YXRlU3RyKSkpKTsKK30KKworSlNWYWx1ZSBkYXRlTm93SW1wbCgpCit7CisgICAgcmV0dXJuIGpz
TnVtYmVyKGpzQ3VycmVudFRpbWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZU5vdyhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
Tm93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGpzQ3VycmVudFRpbWUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKiBleGVjKSAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVVUQyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGRvdWJsZSBtcyA9IG1pbGxpc2Vjb25kc0Zyb21Db21wb25lbnRzKGV4ZWMsIEFy
Z0xpc3QoZXhlYyksIFdURjo6VVRDVGltZSk7CisgICAgZG91YmxlIG1zID0gbWlsbGlzZWNvbmRz
RnJvbUNvbXBvbmVudHMoY2FsbEZyYW1lLCBBcmdMaXN0KGNhbGxGcmFtZSksIFdURjo6VVRDVGlt
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aW1lQ2xpcChtcykpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aAppbmRleCBjMTYyNTBkMzk5NzIxMzFkMzI5MzBjZDliNGYwMzE2ZDNkMzUwN2Y0Li5iZWM0MGE1
YzMwOGY4Mjk5NDdiMjY1ZGY4NDc0MzEyYTM5NTIyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaApAQCAtNTQsNyArNTQsNiBAQCBjbGFz
cyBEYXRlQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiB9Owog
CiBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgbmV3VGFyZ2V0LCBjb25zdCBBcmdMaXN0Jik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKK0pTVmFsdWUgZGF0ZU5vd0ltcGwoKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwCmluZGV4IDE4NTIyZDEwMDQ0ZGUxM2E1MDI5YzY1NzYzNDkyMDUzYzlh
YmM5NzMuLjkxNzcxNmQxZTE2ODA4ODk3MjVlMzU1YTIzN2Y1MWVmMDY5ZGJkZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC03MSw1
MCArNzEsNTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXkoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRG
dWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY0dldEhvdXJzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRoKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25k
cyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
SG91cnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNv
bmRzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0WWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldERhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEhvdXJzKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlu
dXRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldE1vbnRoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRpbWUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFllYXIoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRV
VENIb3VycyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ1Nl
Y29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmco
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5nKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9V
VENTdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldE1vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZWNvbmRzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VVRDRGF5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25k
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9u
dGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEZ1bGxZZWFyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0U2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
U2V0VVRDRGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldFVUQ0hvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1NldFVUQ01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRVVENTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb0RhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0
cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2woSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVVRD
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09O
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNTI1LDMxICs1MjUsMzEg
QEAgdm9pZCBEYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAKIC8vIEZ1bmN0aW9ucwogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50
ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhlYywgRGF0ZVRpbWVG
b3JtYXREYXRlQW5kVGltZSwgYXNVVENWYXJpYW50KTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJ
bnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRDVmFyaWFu
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVVRD
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSB0cnVlOwotICAgIHJldHVybiBm
b3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRD
VmFyaWFudCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRl
VGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWND
YXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAg
IAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIkludmFsaWQgRGF0ZSJfcykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiSW52YWxpZCBE
YXRlIl9zKSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3Qg
R3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0
cmluZygiSW52YWxpZCBEYXRlIl9zKSkpOwogICAgIC8vIE1heGltdW0gYW1vdW50IG9mIHNwYWNl
IHdlIG5lZWQgaW4gYnVmZmVyOiA3IChtYXguIGRpZ2l0cyBpbiB5ZWFyKSArIDIgKiA1ICgyIGNo
YXJhY3RlcnMgZWFjaCBmb3IgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpICsgNCAo
LiArIDMgZGlnaXRzIGZvciBtaWxsaXNlY29uZHMpCkBAIC01NzMsMzA2ICs1NzMsMzA2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgU3RyaW5nKGJ1ZmZlciwgY2hhcmFjdGVyc1dyaXR0ZW4pKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0RhdGVT
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBjb25z
dCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3Rh
bmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZSwgYXNVVENWYXJpYW50KTsKKyAgICByZXR1cm4g
Zm9ybWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0RGF0ZSwgYXNVVENW
YXJpYW50KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9UaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50ID0gZmFsc2U7Ci0gICAg
cmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoZXhlYywgRGF0ZVRpbWVGb3JtYXRUaW1lLCBhc1VU
Q1ZhcmlhbnQpOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGNhbGxGcmFtZSwgRGF0
ZVRpbWVGb3JtYXRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWND
YXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRl
T2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZUFuZFRpbWUpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoY2FsbEZyYW1lLCB0
aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGVBbmRU
aW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
TG9jYWxlRGF0ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2Uq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGZvcm1hdExvY2FsZURhdGUoY2FsbEZyYW1lLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGlt
ZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBq
c0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMs
IHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlVGltZSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShjYWxsRnJhbWUs
IHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlVGltZSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1p
dGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4
cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9Qcmlt
aXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpOwogCi0gICAgaWYgKCFl
eGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCBh
IGZpcnN0IGFyZ3VtZW50LiIpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJEYXRl
LnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3QgYXJndW1lbnQu
Iik7CiAKLSAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwotICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJlZmVycmVkUHJpbWl0aXZl
VHlwZShleGVjLCBoaW50VmFsdWUpOworICAgIEpTVmFsdWUgaGludFZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHR5cGUg
PSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoY2FsbEZyYW1lLCBoaW50VmFsdWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHR5
cGUgPT0gTm9QcmVmZXJlbmNlKQogICAgICAgICB0eXBlID0gUHJlZmVyU3RyaW5nOwogCi0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+b3Jk
aW5hcnlUb1ByaW1pdGl2ZShleGVjLCB0eXBlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPm9yZGluYXJ5VG9QcmltaXRpdmUoY2Fs
bEZyYW1lLCB0eXBlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWlj
Q2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2Fs
bEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWND
YXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0g
ICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVP
YmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVU
QyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vbnRoKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdv
cmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdv
cmlhbkRhdGVUaW1lLT5tb250aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3Rh
bmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlh
bkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdv
cmlhbkRhdGVUaW1lLT5tb250aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldERhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
KGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3Jl
Z29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+
bW9udGhEYXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
KiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhl
eGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1vbnRoRGF5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0RGF5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldERheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byog
dGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdv
cmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+d2Vla0RheSgpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Rh
eShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRl
T2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRl
VGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1l
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPndlZWtEYXkoKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRIb3VycyhF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRIb3VycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmog
PSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1l
ID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+aG91cigpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hv
dXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlz
RGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFu
RGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVU
aW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1p
Y0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAK
LSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNh
bGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5taW51dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWlj
Q2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVV
VEMoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPm1pbnV0ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWND
YXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0g
ICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVP
YmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
KiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxs
RnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nh
c3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
RGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9i
ai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5zZWNvbmQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlT
ZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpz
RHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsK
ICAgICBpZiAoc3RkOjppc25hbihtaWxsaSkpCkBAIC04ODMsMTQgKzg4MywxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobXMpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlz
ZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKHN0ZDo6aXNuYW4obWlsbGkpKQpAQCAtOTAx
LDMxICs5MDEsMzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKG1zKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8
RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0
ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFt
ZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC1n
cmVnb3JpYW5EYXRlVGltZS0+dXRjT2Zmc2V0KCkgLyBtaW51dGVzUGVySG91cikpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRp
bWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5h
bWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IAotICAgIGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGV4ZWMpKTsKKyAgICBkb3VibGUgbWlsbGkgPSB0aW1lQ2xpcChjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbE51bWJlciht
aWxsaSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtaWxsaSkpOwpAQCAt
MTAxNCw4NiArMTAxNCw4NiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9t
RGF0ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaWxsaVNlY29u
ZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMSwgV1RGOjpMb2NhbFRpbWUpOworICAgIHJl
dHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDEsIFdURjo6TG9jYWxUaW1l
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
TWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhl
eGVjLCAxLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJn
cyhjYWxsRnJhbWUsIDEsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21UaW1lQXJncyhleGVjLCAyLCBXVEY6OkxvY2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1Zh
bHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMiwgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Nl
dFVUQ1NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMiwgV1RGOjpVVENUaW1lKTsK
KyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAyLCBXVEY6OlVU
Q1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMywgV1RG
OjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJh
bWUsIDMsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0VVRDTWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaW51dGVzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJv
bVRpbWVBcmdzKGV4ZWMsIDMsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMywgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3
VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgNCwgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUsIDQsIFdURjo6TG9jYWxUaW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDSG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgNCwgV1RGOjpVVENUaW1l
KTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCA0LCBXVEY6
OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXREYXRlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldERhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMSwgV1RGOjpM
b2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUs
IDEsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jU2V0VVRDRGF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdz
KGV4ZWMsIDEsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVB
cmdzKGNhbGxGcmFtZSwgMSwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9t
RGF0ZUFyZ3MoZXhlYywgMiwgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDIsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRD
TW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMiwgV1RGOjpVVENUaW1lKTsKKyAgICBy
ZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAyLCBXVEY6OlVUQ1RpbWUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxs
WWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAzLCBXVEY6Okxv
Y2FsVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGNhbGxGcmFtZSwg
MywgV1RGOjpMb2NhbFRpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENGdWxsWWVhcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21E
YXRlQXJncyhleGVjLCAzLCBXVEY6OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZy
b21EYXRlQXJncyhjYWxsRnJhbWUsIDMsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERh
dGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVP
YmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpIHsgCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSkgeyAKICAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsTnVtYmVyKFBOYU4p
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIH0KQEAgLTEx
MDksMTEgKzExMDksMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZWxzZSB7CiAgICAgICAgIGRvdWJsZSBz
ZWNzID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7CiAgICAgICAgIG1zID0gbWlsbGkgLSBz
ZWNzICogbXNQZXJTZWNvbmQ7Ci0gICAgICAgIGlmIChjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
b3RoZXIgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYykpCisgICAgICAgIGlm
IChjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogb3RoZXIgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWUoY2FsbEZyYW1lKSkKICAgICAgICAgICAgIGdyZWdvcmlhbkRhdGVUaW1lLmNvcHlG
cm9tKCpvdGhlcik7CiAgICAgfQogCi0gICAgZG91YmxlIHllYXIgPSBleGVjLT5hcmd1bWVudCgw
KS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKKyAgICBkb3VibGUgeWVhciA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUoeWVhcikpIHsKICAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsTnVtYmVy
KFBOYU4pOwpAQCAtMTEyNywxNiArMTEyNywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFu
Y2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0
ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBp
ZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TmFOKCkpOwogCkBAIC0xMTQ0LDI4ICsxMTQ0LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSAtIDE5MDAp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09O
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1RvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9IG9iamVjdC0+dG9Q
cmltaXRpdmUoZXhlYywgUHJlZmVyTnVtYmVyKTsKKyAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9IG9i
amVjdC0+dG9QcmltaXRpdmUoY2FsbEZyYW1lLCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICh0aW1lVmFsdWUu
aXNOdW1iZXIoKSAmJiAhc3RkOjppc2Zpbml0ZSh0aW1lVmFsdWUuYXNOdW1iZXIoKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0gICAgSlNWYWx1ZSB0b0lT
T1ZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9JU09TdHJpbmcp
OworICAgIEpTVmFsdWUgdG9JU09WYWx1ZSA9IG9iamVjdC0+Z2V0KGNhbGxGcmFtZSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9JU09TdHJpbmcpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b0lT
T1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfcyk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNh
bGwoZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0
LCAqdm0uZW1wdHlMaXN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBh
c09iamVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsICp2bS5lbXB0
eUxpc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAppbmRleCAwMGJlMjY2ZjVjMzhhNjM1
NTI2ZWI0NjE5MzliNjUwYWY3YmY5ZDczLi5jYWM1YWI1ZWRiNmMyNDQ3ZDEzNWNiYTdiZjdhNjQ2
MTRjYTExZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5oCkBAIC01Miw2ICs1Miw2IEBAIGNsYXNzIERhdGVQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0VGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKaW5kZXggYjMw
NDY2MDU5YWU2NTUzZDdkZjViYmYxOTdlY2ViMDYyZWUyYzJhMC4uNWNmYmZiZmNiZGY2MGViN2U2
ZDcxZmVhNjhlZDVlMjNmYzk4YzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYm9vbCBpc0Nv
bnN0cnVjdG9yID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNDb25zdHJ1Y3RvcihleGVj
LT52bSgpKTsKKyAgICBib29sIGlzQ29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLmlzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnMuaAppbmRleCA4MDhkN2Y4ODNiZmY0OWI1OGNmZGJlNWQ3MmMxNDYx
MTUzYjdiMmZjLi5iNmExY2VjN2NiMTNhMmFiNjlkZDhkMzI4ZjNiMTg4MzY1ZDIzMzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCkBAIC0yOSw2ICsyOSw2IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0
b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCBjMDRiYzU1Y2UzY2E1
NGFiOTNkZjk5NDNiMzZlNjQyMWZlMjJmMjY0Li43YjhkNTIxYzJiOTExNmZmMjBmMGFiOGUwMTEx
NTNhY2EzZjU2MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTMz
LDEyICszMywxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpT
T2JqZWN0OwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFN0cnVjdHVyZTsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIAogLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgogSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFuY2U6OlNvdXJj
ZUFwcGVuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGE2OTExNmI0NjQ2NjU3Yzg4N2NiNWQyODljNTQyZTg3ODJm
MGJlZS4uM2VjNjM3NzZjOTA5MDA1MmQ2OTZhY2RhOTY5ZTE5MDAxNTY3NjRlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAg
LTMzLDggKzMzLDggQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEVy
cm9yQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gRXJyb3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEVycm9yQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxF
cnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSwgY2FsbEVycm9yQ29uc3RydWN0b3IsIGNvbnN0cnVjdEVycm9yQ29u
c3RydWN0b3IpCkBAIC00NywyNiArNDcsMjYgQEAgdm9pZCBFcnJvckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICAv
LyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFj
a1RyYWNlTGltaXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCh2bSktPnN0YWNrVHJhY2VMaW1pdCgp
LnZhbHVlT3IoT3B0aW9uczo6ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCwg
anNOdW1iZXIoZ2xvYmFsT2JqZWN0KCktPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlT3IoT3B0aW9u
czo6ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4zCiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEVycm9yQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJy
b3JTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+ZXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAgSlNW
YWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3Ry
dWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwg
VHlwZU5vdGhpbmcsIGZhbHNlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0
dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT5lcnJvclN0cnVjdHVyZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0
dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVj
dHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIGJvb2wg
RXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgICAgICAg
ICBkb3VibGUgZWZmZWN0aXZlTGltaXQgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICAgICAg
ZWZmZWN0aXZlTGltaXQgPSBzdGQ6Om1heCgwLiwgZWZmZWN0aXZlTGltaXQpOwogICAgICAgICAg
ICAgZWZmZWN0aXZlTGltaXQgPSBzdGQ6Om1pbihlZmZlY3RpdmVMaW1pdCwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKLSAgICAgICAg
ICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPnNldFN0YWNrVHJhY2VMaW1pdChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZWZmZWN0aXZlTGltaXQpKTsKKyAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVmZmVjdGl2ZUxpbWl0KSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxp
bWl0KFdURjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKQEAgLTkzLDcgKzkzLDcgQEAg
Ym9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW0KICAgICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKIAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0KQotICAgICAgICB0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChX
VEY6Om51bGxvcHQpOwogCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggOTIyY2Y0YzM2Y2I2YWI1OTBjOThlOWY3
MDE4MGFkMzY1MDg5NmFmYi4uNjFjNGY0MWEwZmEzODAzYzE0ZDBmYzRmY2FkMWYwMDA3OTEyMGY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEVycm9yUHJvdG90eXBlKTsKIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC03MSwyNyArNzEs
MjcgQEAgdm9pZCBFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQu
NAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyAxLiBMZXQgTyBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhy
b3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCiAgICAgLy8gR3VhcmQgYWdhaW5zdCBy
ZWN1cnNpb24hCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNP
YmopOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNP
YmopOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIu
ZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0g
Y2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKICAgICAvLyAzLiBMZXQgbmFtZSBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVu
dCAibmFtZSIuCi0gICAgSlNWYWx1ZSBuYW1lID0gdGhpc09iai0+Z2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUpOworICAgIEpTVmFsdWUgbmFtZSA9IHRoaXNPYmotPmdldChjYWxsRnJh
bWUsIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQs
IHRoZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1l
KS4KQEAgLTk5LDEyICs5OSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9y
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChuYW1lLmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgIG5hbWVTdHJpbmcgPSAiRXJyb3IiX3M7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBuYW1lU3Ry
aW5nID0gbmFtZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICAvLyA1LiBMZXQg
bXNnIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qg
b2YgTyB3aXRoIGFyZ3VtZW50ICJtZXNzYWdlIi4KLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSB0aGlz
T2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZSk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gdGhpc09iai0+Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+bWVzc2Fn
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICAvLyAoc2ljKQpAQCAtMTE0LDcgKzExNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKG1l
c3NhZ2UuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbWVzc2FnZVN0cmluZyA9IFN0cmluZygpOwog
ICAgIGVsc2UgewotICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1dURlN0cmluZyhl
eGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UudG9XVEZTdHJpbmcoY2FsbEZy
YW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lLmlzU3RyaW5nKCkgPyBuYW1lIDoganNTdHJpbmcodm0s
IG5hbWVTdHJpbmcpKTsKIAogICAgIC8vIDEwLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjb25jYXRl
bmF0aW5nIG5hbWUsICI6IiwgYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyLCBhbmQgbXNnLgotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgbmFtZVN0cmluZywgIjogIiwgbWVzc2FnZVN0cmluZykpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGNhbGxGcmFtZSwgbmFtZVN0cmluZywgIjogIiwgbWVzc2FnZVN0cmluZykpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25GdXp6LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25GdXp6LmgKaW5kZXggYzY5NGI1NzY2YzQwZTEyMDliNzQ2NzA2ZmI3MjYyOGI3NzRl
MjFiMC4uZDE4ZjlhNzQ1NDY3NGNmN2UxMDQ1ZmUzNDYwOTY5N2E0N2VlMTdmOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouaApAQCAtMjksOCArMjks
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgVGhyb3dTY29wZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAog
Ly8gQ2FsbCB0aGlzIG9ubHkgaWYgeW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6emluZyBpcyBl
bmFibGVkLgogdm9pZCBkb0V4Y2VwdGlvbkZ1enppbmcoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYs
IGNvbnN0IGNoYXIqIHdoZXJlLCBjb25zdCB2b2lkKiByZXR1cm5QQyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4
IGQ4YmNjY2RhOGJlZDY5NzAzZWYyMDBmYWRmNWNiNmRiZTAwYzU2NzYuLjZjZmM0YmVlMzA0NmZm
ODkxZTM2NzE0ZDlkYjcyNzJmMDQ5NGVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOCwxNyArMzgsMTcg
QEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJn
cywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgZXhlYy0+bmV3VGFyZ2V0KCkp
KTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7
CiB9CiAKIC8vIEVDTUEgMTUuMy4xIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvciBDYWxsZWQgYXMg
YSBGdW5jdGlvbgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganND
YXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4
ZWMtPnZtKCkpLCBhcmdzKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgYXJncykpOwogfQogCiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xODksNyArMTg5LDcgQEAgSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogLy8gRUNN
QSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCiBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1
Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4gY29uc3RydWN0
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9u
eW1vdXMsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9u
KCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4
IDk2MTljMDBmMTIyNDk4ZDAxNmJiZGRlMDk5NzNiZWM1YWE0MzVlYjIuLjI1MjYwZDk5MzY5Yjk0
NTIwOThmMDMwMDNjNGQ1ZDZhNjQ1ZmM0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTM3LDEwICszNywxMCBAQCBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRnVuY3Rpb25Qcm90b3R5cGUp
OwogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShGdW5jdGlvblByb3RvdHlwZSkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gRUNNQSAxNS4zLjQKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNzYsMTYgKzc2LDE2IEBAIHZvaWQgRnVuY3Rpb25Q
cm90b3R5cGU6OmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMsIGVycm9yR2V0dGVyU2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlz
VmFsdWUuaW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwogICAgICAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSh2bSksICIoKSB7XG4gICAgW25hdGl2ZSBj
b2RlXVxufSIpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uICIs
IGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKIAog
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVj
dXRhYmxlKCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0NsYXNzKCkpCkBAIC0xMzQsMjEg
KzEzNCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAogICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCiAgICAgICAgICAgICBleGVjdXRhYmxl
LT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLmxlbmd0aCgp
KTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUo
dm0pLCBzb3VyY2UpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCBmdW5jdGlvbkhlYWRl
ciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNW
YWx1ZS5pbmhlcml0czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRoaXNWYWx1ZSk7
Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1l
LCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmIChv
YmplY3QtPmlzRnVuY3Rpb24odm0pKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rp
b24gIiwgb2JqZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2
ZSBjb2RlXVxufSIpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9u
ICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lLCAiKCkge1xuICAgIFtuYXRpdmUg
Y29kZV1cbn0iKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4
IGYzZmVjYjNkZTM0YmEzOTk2MDQwZDJiNDg4MzQ0NWJiNWEyZWUwNDguLjY0NjI4NmQ2NDNjMzYx
MjlkYzMxZGVhMDI5MGQ1MDM4ZDU4MjliYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CkBAIC0zNiwxNiArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24i
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKKyAgICBBcmdMaXN0IGFyZ3Mo
Y2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9u
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkdlbmVyYXRvcikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKKyAg
ICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQog
CiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggOWFkMTIwY2RmNDc5Yzk4M2U5M2JkY2QyNDBmYjU3
MDY0OThkNjdmNy4uMDJhM2I1Yjg3ODgyNDc5MmYyZmRhNDA5NmU2YzliMTFlNWZhYmRjNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjksNyArMjks
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNJbmRleCh1aW50MzJfdCBpbmRleCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3Bw
CmluZGV4IDY1ZTlhMTc3MTk5YzkxOTRkMDBkMGU0MjkyY2I0NDE5ODQ2NGU1Y2IuLjVlMjQ5OWM5
M2VjOTUwMGMxMzNlNzZkN2E1NzQwNzkzNGY3NjFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RMb2co
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdExvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAK
QEAgLTgxLDEyICs4MSwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6
ZGlzYWJsZShWTSYgdm0pCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RMb2coRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3RMb2coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIHZh
bHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJpbmcgdmFsdWUgPSB0YXJnZXQudG9XVEZTdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBkYXRhTG9nKHZhbHVlLCAiXG4iKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCAyMzhlNTQzMzNlYWRjY2JlZjg1YjNlYjYw
NDAzZDU3YjBiZjM4OWIxLi4wMDk4MjBjMmQ3Mzk4NjlmODI2MDNjOWM5NDQwZWI4Yzc3YjNhMjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcApAQCAtMzgsNiArMzgsNyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZUZ1bmN0aW9uCiAgICAgOiBK
U0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQogICAgICwgbV9mdW5jdGlvbkZvckNh
bGwoZnVuY3Rpb25Gb3JDYWxsKQogICAgICwgbV9mdW5jdGlvbkZvckNvbnN0cnVjdChmdW5jdGlv
bkZvckNvbnN0cnVjdCA/IGZ1bmN0aW9uRm9yQ29uc3RydWN0IDogY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IpCisgICAgLCBtX2dsb2JhbE9iamVjdCh2bSwgdGhpcywgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSkKIHsKICAgICAvLyBleGVjLT52bSgpIHdhbnRzIGNhbGxlZXMgdG8gbm90
IGJlIGxhcmdlIGFsbG9jYXRpb25zLgogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0xhcmdlQWxsb2Nh
dGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAppbmRleCBhYmYwMWNjYjI3YjI2YmE3ZjYzYjRlM2I5OGUyNjliYjM2OTZmODIwLi5h
YTJlOTVhOGMyMzlmZjkzMmJiNmIwYmVkMDYxMzE1NjY0ZjA1MjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC03Niw2ICs3Niwx
MyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0aW9uLCBtX2Z1
bmN0aW9uRm9yQ29uc3RydWN0KTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SW50ZXJuYWxGdW5jdGlvbiwgbV9nbG9iYWxPYmplY3QpOworICAgIH0KKworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQo
KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlv
bihWTSYsIFN0cnVjdHVyZSosIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ2FsbCwgTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOwogCkBAIC05MSw2ICs5OCw3IEBAIGNsYXNz
IEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDYWxsOwogICAgIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5n
PiBtX29yaWdpbmFsTmFtZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsT2JqZWN0OwogfTsKIAogQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdU
YXJnZXQsIFN0cnVjdHVyZSogYmFzZUNsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDQzZjQ3
OGUxOTg0Y2RkZWJmZmQ4YmE5MmM4NWJlY2U3MzAwMDFhN2UuLjkwNTllNmIzN2E1YTMxMmYyMjM3
MTc0MDBiYjA3MmE2MWE0OTc3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNP
ZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTQ5LDggKzQ5LDggQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9j
YWxlc08KIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
Y29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZjb2xsYXRvckNvbnN0cnVjdG9yVGFi
bGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yQ29uc3RydWN0b3Ip
IH07CiAKQEAgLTg1LDMzICs4NSwzMyBAQCB2b2lkIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbAogICAgIGNv
bGxhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMC4xLjIgSW50
bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8v
IDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2
ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAg
Ly8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rh
cmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29s
bGF0b3IpLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpLT5jb2xsYXRvclN0cnVj
dHVyZSh2bSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgp
LCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
LT5jb2xsYXRvclN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29s
bGF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoY29sbGF0b3IpOwogCiAg
ICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0
aW9ucykuCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29s
bGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7Cisg
ICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbGxhdG9yKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxMC4xLjIgSW50bC5Db2xs
YXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElm
IE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5j
dGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3
VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAot
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBj
YWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUo
KSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgLy8gRklYTUU6IENvbGxhdG9yIGRvZXMgbm90IGdl
dCB0aGUgd29ya2Fyb3VuZCBmb3IgRUNNQS00MDIgMS4wIGNvbXBhdGliaWxpdHkuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQpAQCAtMTIyLDI1
ICsxMjIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxD
b2xsYXRvcihFeGVjU3RhdGUqIHN0YXRlKQogICAgIEFTU0VSVChjb2xsYXRvcik7CiAKICAgICAv
LyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25z
KS4KLSAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29s
bGF0b3IoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3Vw
cG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEwLjIuMiBJ
bnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNN
QS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2Fs
aXplTG9jYWxlTGlzdChsb2NhbGVzKS4KLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2Nh
bGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7
CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2Fs
ZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKICAgICAvLyAyLiBS
ZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRM
b2NhbGVzKCVDb2xsYXRvciUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMs
IG9wdGlvbnMpLgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anND
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgZ2xvYmFsT2JqZWN0LT5p
bnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCksIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5h
cmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdXBwb3J0ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxh
dG9yQXZhaWxhYmxlTG9jYWxlcygpLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCmluZGV4IDcw
ZjExYWUyMTNhN2ZmOTU4M2UzYjcxYmU1Mzc4YzM5ZTE1NDhiYjAuLjNlZDliZWI4NzMzMWRjZjc0
OThkMTUwZTA3MzJkNzc1MzhiYjRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogY29sbGF0b3JT
dHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5jb2xsYXRv
clN0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZShWTSYpIGNv
bnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5jb2xsYXRvclN0cnVjdHVyZSgpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENvbGxhdG9yUHJvdG90
eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmNwcAppbmRleCBjZGY0ODZiNTg1NDUwOTc5NWIwMzc4MjY2NmQxMjVi
ZmU3MWY1ZmQ1Li41YTU0Y2E1ODQ2ODVlMmI2MGMxNDQyY2MzNmM3MjliZGY1MzA4NDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTc4LDQ1ICs3
OCw0NSBAQCB2b2lkIEludGxDb2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJPYmplY3QiKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvckZ1bmNDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgLy8gMTAuMy40IENvbGxhdG9yIENvbXBhcmUgRnVuY3Rpb25zIChFQ01BLTQw
MiAyLjApCiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8v
IDIuIEFzc2VydDogVHlwZShjb2xsYXRvcikgaXMgT2JqZWN0IGFuZCBjb2xsYXRvciBoYXMgYW4g
W1tpbml0aWFsaXplZENvbGxhdG9yXV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVl
LgotICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0Nhc3Q8SW50bENvbGxhdG9yKj4oc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNDYXN0PElu
dGxDb2xsYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gSWYgeCBp
cyBub3QgcHJvdmlkZWQsIGxldCB4IGJlIHVuZGVmaW5lZC4KICAgICAvLyA0LiBJZiB5IGlzIG5v
dCBwcm92aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgogICAgIC8vIDUuIExldCBYIGJlIFRvU3Ry
aW5nKHgpLgotICAgIEpTU3RyaW5nKiB4ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0
YXRlKTsKKyAgICBKU1N0cmluZyogeCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmco
Y2FsbEZyYW1lKTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDcuIExldCBZIGJl
IFRvU3RyaW5nKHkpLgotICAgIEpTU3RyaW5nKiB5ID0gc3RhdGUtPmFyZ3VtZW50KDEpLnRvU3Ry
aW5nKHN0YXRlKTsKKyAgICBKU1N0cmluZyogeSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9T
dHJpbmcoY2FsbEZyYW1lKTsKICAgICAvLyA4LiBSZXR1cm5JZkFicnVwdChZKS4KICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDkuIFJl
dHVybiBDb21wYXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCi0gICAgYXV0byB4Vmlld1dpdGhT
dHJpbmcgPSB4LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoc3RhdGUpOworICAgIGF1dG8geFZp
ZXdXaXRoU3RyaW5nID0geC0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0
byB5Vmlld1dpdGhTdHJpbmcgPSB5LT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoc3RhdGUpOwor
ICAgIGF1dG8geVZpZXdXaXRoU3RyaW5nID0geS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3ItPmNvbXBhcmVTdHJpbmdzKCpzdGF0ZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0
aFN0cmluZy52aWV3KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqY2FsbEZyYW1lLCB4Vmlld1dpdGhTdHJp
bmcudmlldywgeVZpZXdXaXRoU3RyaW5nLnZpZXcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9iamVj
dC4KLSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0
b3IqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9y
ID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29s
bGF0b3IiX3MpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0
b3ItPmJvdW5kQ29tcGFyZSgpOwogICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJl
XV0gaXMgdW5kZWZpbmVkLApAQCAtMTI3LDcgKzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIHN0
YXRlCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29tcGFyZSJfcywgSW50bENvbGxhdG9yRnVuY0NvbXBh
cmUsIE5vSW50cmluc2ljKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlv
bkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3Qs
IGNvbGxhdG9yLCBudWxscHRyLCAyLCAiY29tcGFyZSJfcyk7CisgICAgICAgIGJvdW5kQ29tcGFy
ZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgImNvbXBhcmUiX3MpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
Ly8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAgICAgICAgIGNvbGxh
dG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5kQ29tcGFyZSk7CkBAIC0xMzYsMTcgKzEzNiwx
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdl
dHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Ym91bmRDb21wYXJlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQotICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0
PEludGxDb2xsYXRvcio+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxDb2xsYXRv
ciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiX3MpKTsKIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMo
KnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKmNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjU0ZWNiMGNiMGVj
Y2E2NGMzYWZiOGE2ZTIyZGI1NDZhYTMzNWI5MS4uN2E0YjA3NzBlNDgxMzI5MmU2MmFlNDZmYzkx
YTRlZWM0N2U5OTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5j
U3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9j
YWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjksOCArNjks
OCBAQCBTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3Jt
YXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRs
RGF0ZVRpbWVGb3JtYXQsIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCkKQEAgLTg1LDYzICs4
NSw2MiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFBybwogICAgIGRhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMi4xLjIgSW50
bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQog
ICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhl
IGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQu
CiAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0
cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90eXBlJSkuCiAgICAgLy8gMy4g
UmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRl
LT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oc3Rh
dGUtPmpzQ2FsbGVlKCkpLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5kYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoZGF0ZVRp
bWVGb3JtYXQpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChk
YXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCiAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgZGF0ZVRpbWVGb3JtYXQt
PmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRhdGVUaW1lRm9ybWF0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVU
aW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8g
MS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZl
IGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KICAgICAv
LyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9u
LgogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNhbGxlZSA9IGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEu
MCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxE
YXRlVGltZUZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+dGhpc1ZhbHVlKCksIGNhbGxlZSwgWyZdIChW
TSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5j
ZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRlVGltZUZvcm1h
dD4oKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2
bSkgewogICAgICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVG
cm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KICAg
ICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgogICAgICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGUodm0sIGNhbGxlZS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgQVNT
RVJUKGRhdGVUaW1lRm9ybWF0KTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KLSAgICAgICAg
ZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICAgICAgZGF0ZVRpbWVGb3JtYXQt
PmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICAgICAgcmV0dXJuIGRhdGVUaW1lRm9y
bWF0OwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRpbWVGb3JtYXQuc3Vw
cG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCiAKICAg
ICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxh
YmxlTG9jYWxlc11dLgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+
anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4g
YXZhaWxhYmxlTG9jYWxlcyA9IGdsb2JhbE9iamVjdC0+aW50bERhdGVUaW1lRm9ybWF0QXZhaWxh
YmxlTG9jYWxlcygpOwogCiAgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25p
Y2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRM
b2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyAzLiBSZXR1
cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBv
cHRpb25zKS4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShz
dXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxl
cywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKmNhbGxGcmFtZSwgYXZhaWxhYmxlTG9j
YWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAppbmRleCBjMmE4ZjVh
MmRmZjc0NTM4MTU3Y2NjMjAxNGY2YjhmYTI1MzQzOTlhLi4wN2UwNzgwMGVhZGU2MmUxODA2NDBl
MmI2MDM2YzEyY2MyYjE0NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBTdHJ1Y3R1
cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFs
T2JqZWN0KHZtKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSog
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qo
KS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNzE1ODU3YjhhNTk4MzlmNDY4ZmI0Yjc2NDFjNjBmYjYz
MjBlN2ZmOS4uM2E4ZjAxZDAyOWE4NWE0ZWQwYTZmMTdiMDdmZDIzNWU0ZmFlNWI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC00MSwxMSArNDEsMTEgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2lmIEpTQ19JQ1VfSEFTX1VGSUVMRFBP
U0lURVIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zv
cm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC05Miw0OCArOTIsNDgg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAi
T2JqZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShFeGVjU3RhdGUqIHN0YXRlKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zv
cm1hdERhdGVUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgLy8gMTIuMS43IERhdGVUaW1lIEZvcm1hdCBGdW5jdGlvbnMgKEVDTUEtNDAyKQogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdGRhdGV0aW1lCiAK
LSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3Jt
YXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0
ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
Ci0gICAgSlNWYWx1ZSBkYXRlID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZGF0
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgZG91YmxlIHZhbHVlOwogCiAgICAgaWYg
KGRhdGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZGF0
ZU5vdyhzdGF0ZSkpLnRvTnVtYmVyKHN0YXRlKTsKKyAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1w
bCgpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RG
Ojp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIHZhbHVlID0gV1RGOjp0
aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdCgqc3RhdGUsIHZh
bHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZv
cm1hdC0+Zm9ybWF0KCpjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0
ZVRpbWVGb3JtYXQgb2JqZWN0LgotICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5h
bWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmth
cm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBw
bHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzY3OQogICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsK
ICAgICB9CiAKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAgIGlmICghZHRmKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3Jt
YXQiX3MpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJvdW5k
Rm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBzbG90
IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwKQEAgLTE0Myw3ICsx
NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBv
ZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5vdGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0
eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVj
dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiZm9ybWF0Il9zLCBJ
bnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsKICAgICAg
ICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrsp
LgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0ciwgMSwgImZvcm1hdCJf
cyk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0ciwgMSwgImZv
cm1hdCJfcyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0byBiZi4KICAg
ICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwpAQCAtMTUzLDUyICsx
NTMsNTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKgogfQogCiAjaWYgSlNDX0lDVV9IQVNfVUZJ
RUxEUE9TSVRFUgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgLy8gMTUuNCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIChF
Q01BLTQwMiA0LjApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMt
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cwogCi0gICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJf
cykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERh
dGVUaW1lRm9ybWF0Il9zKSk7CiAKLSAgICBKU1ZhbHVlIGRhdGUgPSBzdGF0ZS0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBkb3Vi
bGUgdmFsdWU7CiAKICAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KHN0YXRlKSkudG9OdW1iZXIoc3RhdGUpOworICAgICAg
ICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBlbHNlIHsK
LSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoc3RhdGUpKTsKKyAg
ICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVU
aW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdFRv
UGFydHMoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEyLjMuNSBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAg
IEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxEYXRlVGlt
ZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1h
dCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJv
dW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5
IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChjYWxsRnJhbWUsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFt
ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9y
bWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDg1Y2Q2NDNkNWU2Mzk4MDEy
OTkwYjlhYjhlNDRhMWQ3ZDA1ZjZlNzEuLjlkZThkNWVlOGZiZmEyNzFjYmJhZmNjYTEyYWJkZjBk
NTJkODYyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2Nh
bGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjksOCArNjksOCBAQCBTdHJ1Y3R1cmUq
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxOdW1iZXJGb3JtYXQsIGNvbnN0cnVjdEludGxO
dW1iZXJGb3JtYXQpCkBAIC04NSw2MyArODUsNjIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJlckZvcm1hdFByb3RvdHkK
ICAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRs
TnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0p
IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0
IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFy
Z2V0IGJlIE5ld1RhcmdldC4KICAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5
Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUp
LgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCi0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShz
dGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPm51bWJlckZv
cm1hdFN0cnVjdHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQobnVtYmVyRm9y
bWF0KTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIG51bWJl
ckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1i
ZXJGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZv
cm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9w
dGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZp
bmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxl
dCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5k
ZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqIGNhbGxlZSA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iq
PihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBj
YWxsZWUgPSBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0
aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVn
YWN5SW50bENvbnN0cnVjdG9yPEludGxOdW1iZXJGb3JtYXQ+KCpzdGF0ZSwgc3RhdGUtPnRoaXNW
YWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1
Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PigqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CiAgICAgICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQg
YmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0
UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCku
CiAgICAgICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZSh2bSwgY2FsbGVlLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAgICAg
ICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CiAKICAgICAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxp
emVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KLSAgICAgICAg
bnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICBudW1iZXJGb3JtYXQtPmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQ7CiAgICAg
fSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1
cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIC8vIDExLjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2Yo
bG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEuIExldCBhdmFp
bGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KHZtKTsKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9
IGdsb2JhbE9iamVjdC0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAogICAg
IC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9j
YWxlcykuCi0gICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJp
bmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMo
YXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3Rh
dGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVudCgx
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBw
b3J0ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2Fs
ZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaAppbmRleCBhNDk5ZDNmZTZhNzE1NGNjNjNiZmM1ZmM0MzE4ZmIy
MWI2ZDAxYjMwLi4wM2FiZWJhZWM0MjFhZDdhNzgwYjlkM2U4MmZmZmZhMWRlOTliYjY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZShWTSYg
dm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPm51bWJlckZvcm1hdFN0cnVjdHVy
ZSgpOyB9CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7
IHJldHVybiBnbG9iYWxPYmplY3QoKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCk7IH0KIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDU3MDljOTIyYjg1YTdlMzgyN2Ri
NzU3MjVkZWE3OWY5NmI0YWY5YjkuLjVkMWY4NDRlOGNkMjlmNTJmYjcwNjAyNWFkZTNiNjViNDFh
MjkwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgSEFWRShJQ1VfRk9STUFU
X0RPVUJMRV9GT1JfRklFTERTKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5k
aWYKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04OSw0NCAr
ODksNDQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5n
KHZtLCAiT2JqZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zv
cm1hdE51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIC8vIDExLjMuNCBGb3JtYXQgTnVtYmVyIEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQogICAg
IC8vIDEuIExldCBuZiBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBBc3NlcnQ6IFR5cGUo
bmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtbaW5pdGlhbGl6ZWROdW1iZXJGb3JtYXRdXSBp
bnRlcm5hbCBzbG90IHdob3NlIHZhbHVlICB0cnVlLgotICAgIEludGxOdW1iZXJGb3JtYXQqIG51
bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0Nhc3Q8SW50bE51bWJl
ckZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gSWYgdmFsdWUg
aXMgbm90IHByb3ZpZGVkLCBsZXQgdmFsdWUgYmUgdW5kZWZpbmVkLgogICAgIC8vIDQuIExldCB4
IGJlIFRvTnVtYmVyKHZhbHVlKS4KLSAgICBkb3VibGUgbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKHN0YXRlKTsKKyAgICBkb3VibGUgbnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIC8vIDUuIFJldHVybklmQWJydXB0KHgp
LgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgLy8gNi4gUmV0dXJuIEZvcm1hdE51bWJlcihuZiwgeCkuCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKnN0
YXRlLCBudW1iZXIpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKmNhbGxGcmFtZSwgbnVtYmVyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy4zIEludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQg
bmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgotICAgIEludGxOdW1iZXJGb3JtYXQqIG5m
ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUo
KSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29y
a2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9h
cHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOworICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFuZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIE51bWJlckZvcm1hdCJfcykpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
b3JtYXQgPSBuZi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2JvdW5kRm9ybWF0
XV0gaXMgdW5kZWZpbmVkLApAQCAtMTM2LDcgKzEzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUq
IHN0CiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMg
MS4KICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxOdW1iZXJGb3JtYXRGdW5jRm9y
bWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1
bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQgPSBK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2Jq
ZWN0LCBuZiwgbnVsbHB0ciwgMSwgImZvcm1hdCJfcyk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0g
SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCAiZm9ybWF0Il9zKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIC8vIGQuIFNldCBu
Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIG5mLT5zZXRCb3VuZEZvcm1hdCh2bSwg
Ym91bmRGb3JtYXQpOwpAQCAtMTQ2LDQ1ICsxNDYsNDUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSog
c3QKIH0KIAogI2lmIEhBVkUoSUNVX0ZPUk1BVF9ET1VCTEVfRk9SX0ZJRUxEUykKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRU
b1BhcnRzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAyKQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5mb3JtYXR0
b3BhcnRzCiAKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRs
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFudW1iZXJGb3JtYXQp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0
Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51
bWJlckZvcm1hdCJfcykpOwogCi0gICAgZG91YmxlIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKHN0YXRlKTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoKnN0YXRlLCB2YWx1ZSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3Jt
YXQtPmZvcm1hdFRvUGFydHMoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy41IElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4w
KQotICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxOdW1iZXJG
b3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRv
IHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRl
cm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2
NzkKICAgICBpZiAoIW51bWJlckZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOworICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwg
dmFsdWUpOwogICAgIH0KIAogICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9z
KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMo
KmNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDgwMTI5NGE4YjdiODViZWVlNjlk
Y2E0MjA3NTExMDdlZDE0Y2MzMjcuLjRlOGRkM2M4NDRiOTA5ZmQyZTNhYTc5ZmZjMWU2NTkzOWUz
ZTBiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE9iamVjdCk7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5j
R2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9i
amVjdCkKIHsKQEAgLTkxNywyNyArOTE3LDI2IEBAIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5
c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIG51bWJlcmlu
Z1N5c3RlbXM7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1
bmNHZXRDYW5vbmljYWxMb2NhbGVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBJbnRs
LmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWE0MDIvI3NlYy1pbnRsLmdldGNhbm9uaWNhbGxvY2FsZXMKIAotICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBs
b2NhbGVMaXN0ID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbG9jYWxlTGlzdCA9IGNhbm9uaWNhbGl6ZUxvY2Fs
ZUxpc3QoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBsZW5ndGggPSBs
b2NhbGVMaXN0LnNpemUoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBKU0FycmF5KiBsb2NhbGVB
cnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIGxl
bmd0aCk7CiAgICAgaWYgKCFsb2NhbGVBcnJheSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3Ioc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGxvY2Fs
ZUFycmF5LT5wdXREaXJlY3RJbmRleChzdGF0ZSwgaSwganNTdHJpbmcodm0sIGxvY2FsZUxpc3Rb
aV0pKTsKKyAgICAgICAgbG9jYWxlQXJyYXktPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgaSwg
anNTdHJpbmcodm0sIGxvY2FsZUxpc3RbaV0pKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobG9jYWxlQXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCmluZGV4IGIwMjIyNTBj
YWYxMWFmM2MzOTUwYTFlZjEwMTM5ZGQ0OGMzODllZTIuLjM3YWNjODllMTY2MWEzMDhhNDkxNGJl
MjEwNjk4YzI0YWJhMGUwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY3LDggKzY3LDggQEAgU3RydWN0
dXJlKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGcKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5j
dGlvbih2bSwgc3RydWN0dXJlLCBjYWxsSW50bFBsdXJhbFJ1bGVzLCBjb25zdHJ1Y3RJbnRsUGx1
cmFsUnVsZXMpCkBAIC04Myw0NyArODMsNDYgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUKICAg
ICBwbHVyYWxSdWxlc1Byb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhFeGVjU3RhdGUqIHN0YXRl
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFBsdXJh
bFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAvLyAxMy4yLjEgSW50bC5QbHVyYWxSdWxlcyAoWyBsb2NhbGVzIFsgLCBvcHRpb25zIF0gXSkK
ICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1
bGVzCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFBs
dXJhbFJ1bGVzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSktPnBsdXJhbFJ1bGVzU3Ry
dWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0
KCksIGpzQ2FzdDxJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKHZtKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxS
dWxlcyA9IEludGxQbHVyYWxSdWxlczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIEFTU0VS
VChwbHVyYWxSdWxlcyk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcGx1cmFsUnVsZXMt
PmluaXRpYWxpemVQbHVyYWxSdWxlcygqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUt
PmFyZ3VtZW50KDEpKTsKKyAgICBwbHVyYWxSdWxlcy0+aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKCpj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEV4ZWNTdGF0
ZSogc3RhdGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBs
dXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyAxMy4yLjEgSW50bC5QbHVyYWxSdWxlcyAoWyBsb2NhbGVzIFsgLCBvcHRpb25zIF0g
XSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJh
bHJ1bGVzCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlBsdXJhbFJ1bGVzIikp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUGx1cmFsUnVsZXMiKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gMTMuMy4yIEludGwuUGx1cmFsUnVsZXMuc3VwcG9ydGVkTG9jYWxlc09mIChsb2Nh
bGVzIFssIG9wdGlvbnMgXSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnN1cHBvcnRlZGxvY2FsZXNvZgotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsK
ICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGdsb2JhbE9iamVj
dC0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAotICAgIFZlY3RvcjxTdHJp
bmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0g
Y2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExv
Y2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+
YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1lLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oCmluZGV4IDc5ODg5YmZjMjQ0OWIwNjYyNWJlZTk3
N2EyZDY0ZjAzYzVhOGZjYWIuLmQ4M2VhMWMyYzNmMzE0Y2MyMzljMmYyZWM4MmI3YWJjNDUwNTRk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAog
ICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUo
Vk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5wbHVyYWxSdWxlc1N0cnVj
dHVyZSgpOyB9CisgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZShWTSYpIGNvbnN0
IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSgpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBkOTkzZGY1ZDAxNzJiY2RjMTQ4ZWZh
N2U2OGEwYjhmZWEwNzE4NWI2Li4xYmZjZDQzZGQyZTljYTVmMjFmMjZhYTJlNzAwMDc1MmEyOTcz
MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB9CiAKQEAgLTc4LDM3ICs3OCwzNyBAQCB2b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNT
dHJpbmcodm0sICJPYmplY3QiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDEzLjQuMyBJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3QgKHZhbHVlKQogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMu
cHJvdG90eXBlLnNlbGVjdAotICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5
bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAg
IEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxS
dWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFsUnVs
ZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcykp
OwogCi0gICAgZG91YmxlIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRl
KTsKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVy
YWxSdWxlcy0+c2VsZWN0KCpzdGF0ZSwgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgqY2FsbEZyYW1lLCB2
YWx1ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIC8vIDEzLjQuNCBJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
KCkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJh
bHJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKLSAgICBJbnRsUGx1cmFsUnVsZXMqIHBs
dXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgc3RhdGUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWlj
Q2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAg
ICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMo
KnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMoKmNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCA1NzVjNTdjMWUyMjlkMGRlYmNl
NzgzYWE5NWFlMjk0YTU1ZDNkZTFjLi4wNDliNjBjZTY3Njc4YTI3Y2MwNGZkZjBiOWRlY2M0MTQy
YTQ3OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVm
ZmVyRnVuY0lzVmlldyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5
QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBsYXRlPD4KIGNvbnN0
IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsKQEAgLTY3LDI2
ICs2NywyNiBAQCB2b2lkIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01v
ZGU+OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQXJyYQogICAgIHB1dERpcmVjdE5vbkluZGV4
QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5
bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIAog
ICAgIGlmIChzaGFyaW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzVmlldywgYXJyYXlCdWZmZXJGdW5jSXNWaWV3LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAg
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmlzVmlld1ByaXZhdGVOYW1lKCksIGFycmF5QnVmZmVyRnVuY0lz
Vmlldywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDEpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZT4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNHZW5lcmljQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNHZW5lcmljQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEFycmF5QnVmZmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2VuZXJpY0FycmF5QnVm
ZmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTR2VuZXJpY0FycmF5QnVmZmVy
Q29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0dlbmVyaWNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAotICAgIFN0cnVjdHVyZSogYXJy
YXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2
bSktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSk7CisgICAgU3RydWN0dXJlKiBh
cnJheUJ1ZmZlclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmds
b2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGg7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBsZW5ndGggPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0luZGV4KGV4ZWMsICJsZW5ndGgiKTsKKyAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAgbGVuZ3RoID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0luZGV4KGNhbGxGcmFtZSwgImxlbmd0aCIpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBkb2Vzbid0IHNheSBz
bywgaXQgaXMgaW4gZmFjdCBjb3JyZWN0IHRvIHNheQpAQCAtOTcsNyArOTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hh
cmluZ01vZGU+Ojpjb25zdAogCiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGxlbmd0aCwgMSk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpKTsKICAgICAKICAgICBpZiAoc2hhcmluZ01vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZTo6U2hhcmVkKQogICAgICAgICBidWZmZXItPm1ha2VTaGFyZWQoKTsKQEAgLTExOSwxOSArMTE5
LDE5IEBAIGNvbnN0IENsYXNzSW5mbyogSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjxz
aGFyaW5nTW9kZT46OmluZm8oKQogICAgIHJldHVybiAmSlNHZW5lcmljQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvcjxzaGFyaW5nTW9kZT46OnNfaW5mbzsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJBcnJheUJ1ZmZlciIpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBF
Q01BIDI0LjEuMy4xCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyRnVu
Y0lzVmlldyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1l
bnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWlj
Q2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpKTsKIH0KIAogLy8gSW5zdGFudGlhdGUgSlNHZW5lcmljQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCmluZGV4IDQyZjE2M2ZlMzhhY2M0ZjdjY2NjOTNl
ODdiZTE2OTYyYzljY2IzNGIuLjhhYWNhNWRlN2NmNjRhNWU0NDU1NGYyMTVhZjUxZmE4ZDYxM2E3
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTR2VuZXJpY0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAg
ICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiwgR2V0dGVy
U2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsKIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5QnVmZmVyKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5QnVmZmVyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNHZW5lcmljQXJy
YXlCdWZmZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVz
U3ltYm9sKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCBjOTc4MjQyNDFlZGEwYjUyZGRkMWE2OGUwMWZj
ZTVlZWNiNDE2ODMzLi5iMTEwMTYwZjMxNmUwZjM4MDM2NGNlODk5MmEzMzk4YjhmNGI0MjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcApAQCAtMzUsMzAgKzM1LDI4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVu
Y1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICAKLSAgICBKU0FycmF5QnVmZmVyKiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5QnVmZmVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09i
amVjdCB8fCB0aGlzT2JqZWN0LT5pbXBsKCktPmlzU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBh
biBBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBBcnJheUJ1ZmZlci4i
X3MpOwogCi0gICAgZG91YmxlIGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGV4
ZWMpOworICAgIGRvdWJsZSBiZWdpbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbnRlZ2Vy
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgCiAgICAgZG91YmxlIGVuZDsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEp
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW5kID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MSkudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIGVuZCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MSkudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBlbmQgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKICAgICBhdXRvIG5ld0J1ZmZlciA9IHRo
aXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7CiAgICAgCi0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPmFycmF5QnVmZmVyU3RydWN0
dXJlKG5ld0J1ZmZlci0+c2hhcmluZ01vZGUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKG5ld0J1ZmZlci0+c2hhcmluZ01v
ZGUoKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVmZmVyKSk7CiAgICAgCkBAIC02Niwz
NyArNjQsMzcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZm
ZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIC8vIGh0dHA6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hc2NyaXB0X3NoYXJlZG1lbS9zaG1lbS5odG1sI3NlYy1nZXQtYXJyYXlidWZm
ZXIucHJvdG90eXBlLmJ5dGVsZW5ndGgKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvR2V0
dGVyRnVuY0J5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJh
eUJ1ZmZlcio+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUg
YW4gYXJyYXkgYnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIiX3MpOwog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc1NoYXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBub3QgYmUgYSBzaGFyZWQgYXJy
YXkgYnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBub3QgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9z
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpKSkpOwogfQogCiAvLyBodHRwOi8v
dGMzOS5naXRodWIuaW8vZWNtYXNjcmlwdF9zaGFyZWRtZW0vc2htZW0uaHRtbCNTdHJ1Y3R1cmVk
RGF0YS5TaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUuZ2V0X2J5dGVMZW5ndGgKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJG
dW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzaGFyZWRBcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxk
IGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxk
IGJlIGFuIGFycmF5IGJ1ZmZlciBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogCiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIiX3MpOwogICAgIGlmICghdGhpc09iamVjdC0+
aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHNoYXJlZCBhcnJheSBidWZmZXIiX3MpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+aW1wbCgpLT5ieXRl
TGVuZ3RoKCkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmNwcAppbmRleCA3ZDY1OWRiYzM0NDgzODJlOGM0ODU3ZDhhZTgxOTk1ZDRk
NGIwYmI3Li42NjBlZDZlNzM0Y2JlMDk2N2EwZmUyNjdmNmMxODlkOTBlZmM4ZTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAg
LTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQm91
bmRGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQm91bmRGdW5jdGlvbikgfTsKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIGFy
Z3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgYXJn
cy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldEZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihib3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlv
bigpKTsKQEAgLTUxLDE2ICs1MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGV4ZWN1
dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RDaGVja0FyaXR5KTsKICAgICB9
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShleGVjLT52bSgpLCB0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCB0YXJnZXRGdW5jdGlv
biwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxGcmFtZSwgdGFyZ2V0RnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0JvdW5k
RnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICBKU0FycmF5
KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKIApAQCAtNjksMTAgKzY5
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXRJ
bmRleFF1aWNrbHkoaSkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhl
Yy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ3MuaGFzT3ZlcmZsb3dl
ZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtODAsMzAgKzgwLDMwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVj
KQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBl
ICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0YXJnZXRGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5j
dGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1
bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChp
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYm91bmRG
dW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEo
ZXhlYy0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOworICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoZ2xvYmFsT2JqZWN0LT52bSgp
LCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5
cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3QoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERh
dGEsIGFyZ3MpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChjYWxsRnJh
bWUsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVj
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVu
Y3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVu
Y3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsK
IAogICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOwog
CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5k
RnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5h
cHBlbmQoYm91bmRBcmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwogICAgIH0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIGFy
Z3MuYXBwZW5kKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgYXJn
cy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgaWYgKFVOTElL
RUxZKGFyZ3MuaGFzT3ZlcmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAt
MTIzLDIwICsxMjMsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0
aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVj
dERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0
YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29u
c3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXRGdW5j
dGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc0JvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc0JvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4oZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShzdGF0aWNfY2FzdDxib29sPihq
c0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZE9iamVjdCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
OworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRPYmplY3QgPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0
aW9uKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3VuZE9iamVjdC0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5z
dGFuY2UoZXhlYywgdmFsdWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGNhbGxGcmFtZSwg
dmFsdWUpKSk7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbikKQEAgLTIxMCw3ICsyMTAsNyBAQCBKU0FycmF5KiBK
U0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVs
bHB0ciwgZ2xvYmFsT2JqZWN0KHZtKSk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIHJlc3VsdC0+cHVzaChleGVj
LCBtX2JvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggOGJiNGI3N2FjNTc4N2Q2MWYy
ZGUzNjlkMGM4NWIwZGVjYmFmYWU5Mi4uMjI1YWNiMGJlOGQ1M2I0YmE0NjI2NjZlZjNkNzUwZTlj
NmQzMGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmgKQEAgLTI5LDEyICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NG
dW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24oRXhlY1N0YXRlKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY2xhc3MgSlNCb3Vu
ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDJjNjQ5ZTE2MDIwZmQwYmE0
OTg2YjBmMTM3MDY3YzJhODE3NTQyZDguLmFlODMxNTFiZGUxYTZhNmJlZWNiM2Q4OWNhN2FkZWU1
OTIwN2ExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVy
czsKIGNsYXNzIEpTQmlnSW50OwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNDZWxsOwogY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIFZNOwpAQCAtNTMsNiAr
NTMsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWU7CiBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBQ
dXRQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIEpJVENv
bXBpbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA1NDYxMjc0
ZWJkNzdkZmYzZjA1ZjEyZGMxMDcyOWFmZTE0NjhmMjAxLi5lOTVkNTEyYTM4ZTY4MmRiZmRhMzY0
ZDI4MGIxZThkNzdhZGJhN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBDb21wbGV0ZVN1YnNwYWNlOwogY2xhc3MgQ29weVZpc2l0b3I7CiBjbGFzcyBH
Q0RlZmVycmFsQ29udGV4dDsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIElkZW50aWZpZXI7CiBj
bGFzcyBKU0FycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OwpAQCAt
NTIsNiArNTIsNyBAQCBjbGFzcyBQcm9wZXJ0eU5hbWU7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eTsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIEpTQ2VsbExvY2s7Cit1c2luZyBFeGVjU3RhdGUg
PSBDYWxsRnJhbWU7CiAKIGVudW0gY2xhc3MgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZSB7
CiAgICAgSGFzQXJnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1YzcxMmMwM2I5
ZjRhZGQ4NDdlMjc0NDFiMTMwMjYzOTk1NzEwMThkLi41NWM1MGU0ZjE0NGUwMGI2Y2JkMGM0OWQ1
MjQ2NzU2MTNlMGNmZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcApAQCAtMzUsMjkg
KzM1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24pIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24qIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiA9IGpzQ2FzdDxKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBD
dXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IGN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uLT5jdXN0b21HZXR0ZXJTZXR0ZXIoKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKIAogICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+aXNTZXR0
ZXIoKSkgewogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciBzZXR0ZXIg
PSBjdXN0b21HZXR0ZXJTZXR0ZXItPnNldHRlcigpOwogICAgICAgICBBU1NFUlQoc2V0dGVyKTsK
LSAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBzZXR0ZXIsIHRydWUsIHRoaXNWYWx1ZSwg
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGNhbGxGcmFtZSwg
c2V0dGVyLCB0cnVlLCB0aGlzVmFsdWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAogICAgIGlm
IChjdXN0b21HZXR0ZXJTZXR0ZXItPmluaGVyaXRzPERPTUF0dHJpYnV0ZUdldHRlclNldHRlcj4o
dm0pKSB7CiAgICAgICAgIGF1dG8gZG9tQXR0cmlidXRlID0ganNDYXN0PERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPmRvbUF0dHJpYnV0ZSgpOwogICAgICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLmNsYXNzSW5mbykpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihleGVj
LCBzY29wZSwgZG9tQXR0cmlidXRlLmNsYXNzSW5mbywgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24tPnByb3BlcnR5TmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmli
dXRlR2V0dGVyVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGRvbUF0dHJpYnV0ZS5jbGFzc0lu
Zm8sIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCkoZXhlYywgSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSksIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5h
bWUoKSk7CisgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCkoY2FsbEZyYW1l
LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24t
PnByb3BlcnR5TmFtZSgpKTsKIH0KIAogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6SlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBUeXBlIHR5cGUsIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCmluZGV4IDgwYTJj
ODFiYmY4ZjhhM2MzMTViNTMwZjk5MDcyODc2OTZmYTc1ZWUuLjRmZWQwZWQ0NmI5ZmJlNmE5ZmMy
NWNjZmVmNGUyODBlN2IwMDQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgKQEAgLTYzLDcg
KzYzLDcgQEAgY2xhc3MgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiBmaW5hbCA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKICAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBUeXBlLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIEN1c3RvbUdldHRl
clNldHRlciosIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSopOwor
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRl
clNldHRlci5nZXQoKTsgfQogICAgIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6U2V0dGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDdhMmVjNzQyNzZjNTcwNDY0NDhl
ZGZkMzlkOGZlMTQ5OTVlODRhYjMuLmMyYzJmNzk5NDg3OTQ2MjRlYzM4MGE1MjE1YmMwZGU1MTZl
MTZkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwCkBAIC02MSwyNSArNjEsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiBA
ZW5kCiAqLwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50OChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQxNihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jR2V0VWludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY1NldEludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0RmxvYXQzMihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dl
dHRlckJ5dGVPZmZzZXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQz
MihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRG
bG9hdDY0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDE2KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRVaW50OChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVu
Y1NldFVpbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNTZXRGbG9hdDY0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0dldHRlckJ5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC0xMjAsOSArMTIwLDkgQEAgU3Ry
dWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1FbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxK
U0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTE2Myw5ICsxNjMsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KLUVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZp
ZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMjEwLDEyMCArMjEwLDEyMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogSUdOT1JFX0NMQU5HX1dBUk5J
TkdTX0JFR0lOKCJtaXNzaW5nLXByb3RvdHlwZXMiKQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZp
ZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhw
ZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihleGVjKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2aWV3LT5wb3NzaWJseVNoYXJlZEpTQnVmZmVyKGNh
bGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJv
dG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHlu
YW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNEYXRh
VmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlz
fCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVP
ZmZzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRh
Vmlldyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90
eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcu
cHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5ieXRlT2Zmc2V0
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVu
Y0dldEludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRhVmlld1Byb3RvRnVuY0dldEludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8SW50OEFkYXB0b3I+KGV4
ZWMpOworICAgIHJldHVybiBnZXREYXRhPEludDhBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1
bmNHZXRJbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8SW50MTZBZGFwdG9y
PihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxJbnQxNkFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvRnVuY0dldEludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxJbnQzMkFk
YXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRhPEludDMyQWRhcHRvcj4oZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBnZXREYXRhPFVp
bnQ4QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8VWludDhBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0
RGF0YTxVaW50MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxVaW50MTZBZGFw
dG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gZ2V0RGF0YTxVaW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0YTxV
aW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRG
bG9hdDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBnZXREYXRhPEZsb2F0MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1
cm4gZ2V0RGF0YTxGbG9hdDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2
NChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3
UHJvdG9GdW5jR2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4oZXhl
Yyk7CisgICAgcmV0dXJuIGdldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY1NldEludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8SW50OEFkYXB0b3I+
KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPEludDhBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNTZXRJbnQxNihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8SW50MTZBZGFw
dG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxJbnQxNkFkYXB0b3I+KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmll
d1Byb3RvRnVuY1NldEludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxJbnQz
MkFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXREYXRhPEludDMyQWRhcHRvcj4oZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jU2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBzZXREYXRh
PFVpbnQ4QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8VWludDhBZGFwdG9yPihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
c2V0RGF0YTxVaW50MTZBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0YTxVaW50MTZB
ZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0RGF0YTxVaW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0RGF0
YTxVaW50MzJBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBzZXREYXRhPEZsb2F0MzJBZGFwdG9yPihleGVjKTsKKyAgICBy
ZXR1cm4gc2V0RGF0YTxGbG9hdDMyQWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0Rmxv
YXQ2NChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jU2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxGbG9hdDY0QWRhcHRvcj4o
ZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKTsKIH0KIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCmluZGV4IDlkNDk3NTg3YWEyMTI5YWM5MmU2
YzBiNjJlN2NhNWNhNWMyOTBmOTMuLjYwNDFkNWVlZTBlZDA2MDIwMzFkMzlkMzQ5MWY0NWZmMmYz
Y2UwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKQEAg
LTQ3LDggKzQ3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIENhbGxGcmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
CiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShWTSYsIGRvdWJs
ZSwgV1RGOjpUaW1lVHlwZSBvdXRwdXRUaW1lVHlwZSwgR3JlZ29yaWFuRGF0ZVRpbWUmKTsKIEpT
X0VYUE9SVF9QUklWQVRFIGRvdWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoVk0mLCBjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSYsIGRvdWJsZSwgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbWVUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMmNh
ZTQ0ZGE3MWJkMTdlYmMzOGEwOWQ5NmIxNzhkZGViYjJhYWUzMy4uZWFhZGRkNTkyMGQwZDlmNzEy
MTk3YWJkNzZmYzJmMmUyN2Q2NTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKQEAgLTUyLDExICs1MiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxI
b3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBleGVjLT5qc0NhbGxlZSgpKSk7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJv
cihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSkpOwogfQogCiBjb25zdCBDbGFzc0lu
Zm8gSlNGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRnVuY3Rpb24pIH07CkBAIC0xMTUs
NiArMTE1LDcgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZChWTSYgdm0sIEpTR2xvYmEKIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9l
eGVjdXRhYmxlKCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUtPmds
b2JhbE9iamVjdCgpKQogewogICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKIH0K
QEAgLTE2Myw3ICsxNjQsNyBAQCBKU09iamVjdCogSlNGdW5jdGlvbjo6cHJvdG90eXBlRm9yQ29u
c3RydWN0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChMSUtFTFkocHJvdG90
eXBlLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gYXNPYmplY3QocHJvdG90eXBlKTsKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qodm0p
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qo
KTsKICAgICBpZiAoIWlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmlu
aXRpb25zLXJ1bnRpbWUtc2VtYW50aWNzLWV2YWx1YXRlYm9keQogICAgICAgICBpZiAoaXNHZW5l
cmF0b3JXcmFwcGVyUGFyc2VNb2RlKGpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSkpCkBAIC0x
ODMsNyArMTg0LDcgQEAgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6YWxsb2NhdGVBbmRJ
bml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXoKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JDb25zdHJ1Y3Rp
b24odm0sIGV4ZWMpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25S
YXJlRGF0YTo6Y3JlYXRlKHZtLCB0aGlzKTsKLSAgICByYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3Qodm0pLCBwcm90b3R5cGUsIGlubGlu
ZUNhcGFjaXR5LCB0aGlzKTsKKyAgICByYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3QoKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwg
dGhpcyk7CiAKICAgICAvLyBBIERGRyBjb21waWxhdGlvbiB0aHJlYWQgbWF5IGJlIHRyeWluZyB0
byByZWFkIHRoZSByYXJlIGRhdGEKICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IGl0IHNl
ZXMgaXQgcHJvcGVybHkgYWxsb2NhdGVkCkBAIC0xOTksNyArMjAwLDcgQEAgRnVuY3Rpb25SYXJl
RGF0YSogSlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IGlubGluZUMKICAgICBBU1NFUlQoY2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSk7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0gcHJvdG90eXBl
Rm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKLSAgICBtX3JhcmVEYXRhLT5pbml0aWFsaXplT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUodm0sIGdsb2JhbE9iamVjdCh2bSksIHByb3RvdHlwZSwgaW5s
aW5lQ2FwYWNpdHksIHRoaXMpOworICAgIG1fcmFyZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNp
dHksIHRoaXMpOwogICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogfQogCkBAIC00MzcsOSAr
NDM4LDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgICAgICAgICAvLyBVbmxp
a2UgZnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUgb2JqZWN0IHRoYXQgaXMgdGhlIHZhbHVlIG9mIHRo
ZSBhIEdlbmVyYXRvckZ1bmN0aW9uJ3MgcHJvdG90eXBlCiAgICAgICAgICAgICAgICAgLy8gcHJv
cGVydHkgZG9lcyBub3QgaGF2ZSBhIGNvbnN0cnVjdG9yIHByb3BlcnR5IHdob3NlIHZhbHVlIGlz
IHRoZSBHZW5lcmF0b3JGdW5jdGlvbiBpbnN0YW5jZS4KICAgICAgICAgICAgICAgICAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3JmdW5jdGlvbi1pbnN0YW5j
ZXMtcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2VuZXJhdG9yUHJvdG90
eXBlKCkpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2Rl
KHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSkpCi0gICAgICAgICAgICAg
ICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KHZtKS0+YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAgICAgICAgICAg
ICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCktPmFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKCkpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggMThkOWNmYmYxNTg4YWM2NDliZjY4NDg1YjVkMjM0MWU5YTk5
ZDA0Yy4uM2ZlZjkyZDQ0NWVjNGMwN2U0ZjMxMjYwY2M4M2NkM2QyZDRmZTQ2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNDksNyArNDksNyBAQCBj
bGFzcyBTaWduYXR1cmU7CiB9CiAKIAotSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYsIEpTT2Jq
ZWN0Kik7CiAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBK
U0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9y
YXJlRGF0YSk7CiAgICAgfQogCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Z1
bmN0aW9uLCBtX2dsb2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgRnVuY3Rpb25SYXJlRGF0YSog
cmFyZURhdGEoVk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRh
KSkKQEAgLTE0NCw2ICsxNDksOCBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVl
IHsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIAorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQor
CiAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdDsKICAgICBib29sIGlzQW5vbnltb3VzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3Q7CkBAIC0yMjQsNiArMjMxLDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1Ymxp
YyBKU0NhbGxlZSB7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0
YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25SYXJlRGF0YT4gbV9yYXJlRGF0YTsKKyAg
ICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsKIAogY2xh
c3MgSlNTdHJpY3RGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IDE4
NzI2ODRkYTQwY2VhYzRlYjk4YWQyZDAzODU0YmNkOTg0YzRhYzQuLjNlMDQ3NWM4NDQ4NjJkZjk2
MmY1ZDc1NDdlZTEyMWRmYzI0YmMwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNDIsNiArNDIsNyBAQCBpbmxpbmUgSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSogcwogICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKICAgICAsIG1f
ZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKICAgICAsIG1fcmFyZURhdGEoKQorICAg
ICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiB7
CiAgICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDgyM2FjNTM3NGQyMTZhNDIy
MWRlNTE4OTlhZDJlYTA4MWE4ZGMzZS4uN2ZlOTFjNTBiZjQ2MWNmZWQyNTA3Y2JhYWNhODEwYTA2
MzViYzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCkBAIC0zOCwxMCArMzgsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0Ns
YXNzPjo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtMjA2LDU2ICsyMDYsNTYgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywg
U3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpOwotICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rp
b24tPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBl
ZEFycmF5U3RvcmFnZVR5cGUpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IHBhcmVudFN0cnVjdHVyZSk7CisgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgU3RydWN0
dXJlKiBwYXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJy
YXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1Y3R1cmUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
c2l6ZV90IGFyZ0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmdD
b3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogCiAgICAgaWYgKCFhcmdDb3VudCkg
ewogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURh
dGFWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIl9z
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIl9z
KTsKIAotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShW
aWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRlKGNhbGxG
cmFtZSwgc3RydWN0dXJlLCAwKSkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gV1RGOjpudWxsb3B0OwogICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQg
PiAxKSB7Ci0gICAgICAgIG9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW5k
ZXgoZXhlYywgImJ5dGVPZmZzZXQiKTsKKyAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGNhbGxGcmFtZSwgImJ5dGVPZmZzZXQiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAg
ICAgaWYgKGFyZ0NvdW50ID4gMikgewogICAgICAgICAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRB
cnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykgewogICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBEYXRhVmlldyBieXRlTGVuZ3RoIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5lZCwgdHJlYXQg
aXQgYXMgbWlzc2luZy4KLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGJ5dGVMZW5ndGhWYWx1ZSA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgYnl0
ZUxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWJ5dGVMZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGhWYWx1ZS50b0luZGV4KGV4ZWMsICJieXRlTGVu
Z3RoIik7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGhWYWx1ZS50b0lu
ZGV4KGNhbGxGcmFtZSwgImJ5dGVMZW5ndGgiKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgyKS50b0luZGV4KGV4ZWMsICJsZW5ndGgiKTsKKyAgICAgICAgICAg
ICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvSW5kZXgoY2Fs
bEZyYW1lLCAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPFZpZXdDbGFzcz4oZXhlYywgc3Ry
dWN0dXJlLCBKU1ZhbHVlOjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8Vmlld0NsYXNzPihjYWxsRnJhbWUsIHN0
cnVjdHVyZSwgSlNWYWx1ZTo6ZW5jb2RlKGZpcnN0VmFsdWUpLCBvZmZzZXQsIGxlbmd0aCkpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNh
bGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVmlld0NsYXNzOjppbmZv
KCktPmNsYXNzTmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGFkYjMyNzkzYjkyYzdkNzc3
OWY3OWUwMTgyOTU5MGUwOGE5ZWExNmUuLjBhNGIxMzQyMTExMjQyODlhZTZhN2MzOTBlMTIwNDcz
Y2M1YjBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaApAQCAtNDUzLDcgKzQ1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBFeGVjU3RhCiAgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0FycmF5QnVmZmVyVmlldyogcmVz
dWx0ID0gc3BlY2llc0NvbnN0cnVjdChleGVjLCB0aGlzT2JqZWN0LCBhcmdzLCBbJl0oKSB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT50
eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT50eXBl
ZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKICAgICAg
ICAgcmV0dXJuIFZpZXdDbGFzczo6Y3JlYXRlVW5pbml0aWFsaXplZChleGVjLCBzdHJ1Y3R1cmUs
IGxlbmd0aCk7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC01NDksMTAgKzU0OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0m
dgogCiAgICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQo
KSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKLSAgICBKU09iamVjdCogZGVm
YXVsdENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5Q29u
c3RydWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgIEpTT2JqZWN0
KiBkZWZhdWx0Q29uc3RydWN0b3IgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5
Q29uc3RydWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIEpTVmFs
dWUgc3BlY2llcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGlmIChzcGVjaWVz
ID09IGRlZmF1bHRDb25zdHJ1Y3RvcikgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6
OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5
cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCiAgICAgICAgICAgICBleGVjLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoYXJyYXlCdWZmZXIpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGEyMGIxNjM4NGZkNDljOTc0OWY5
NzYyNDQ3NTdlOGNjN2NjYTllZDguLmQ5NTY5NzkzZDgyOTFmM2UxMzgxNzk1YzJkZWVmZDhhY2Rj
ZDE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTI2OCw0NiArMjY4LDQ0IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNvbnNv
bGVQcm9wZXJ0eShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIENvbnNvbGVP
YmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsLCBDb25zb2xlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbCwgY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsLT5nbG9iYWxFeGVjKCkpKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VCb3VuZEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7Ci0KLSAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgYm91bmRUaGlzID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgyKTsKLSAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMyk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBhc1N0cmluZyhleGVjLT51
bmNoZWNrZWRBcmd1bWVudCg0KSk7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTVmFsdWUgYm91bmRUaGlzID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGJvdW5kQXJncyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBsZW5ndGhWYWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMyk7CisgICAgSlNTdHJpbmcqIG5hbWVT
dHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAogICAg
IEFTU0VSVChsZW5ndGhWYWx1ZS5pc0ludDMyQXNBbnlJbnQoKSk7CiAgICAgaW50MzJfdCBsZW5n
dGggPSBsZW5ndGhWYWx1ZS5hc0ludDMyQXNBbnlJbnQoKTsKIAotICAgIFN0cmluZyBuYW1lID0g
bmFtZVN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lU3RyaW5nLT52
YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywg
Ym91bmRBcmdzLmlzQ2VsbCgpID8ganNDYXN0PEpTQXJyYXkqPihib3VuZEFyZ3MpIDogbnVsbHB0
ciwgbGVuZ3RoLCBXVEZNb3ZlKG5hbWUpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUs
IGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpz
Q2FzdDxKU0FycmF5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0aCwgV1RGTW92ZShuYW1l
KSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVu
Z3RoUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJv
cGVydHkoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCkpKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3Vt
ZW50KDApLmlzQm9vbGVhbigpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuYXNCb29sZWFu
KCkpCisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc0Jvb2xlYW4o
KSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuYXNCb29sZWFuKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBib29sIGl0ZXJh
dGVkT25jZSA9IGZhbHNlOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBsaW5lOwotICAgIGV4ZWMtPml0ZXJhdGUoWyZdIChTdGFja1Zpc2l0b3ImIHZp
c2l0b3IpIHsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0
b3IpIHsKICAgICAgICAgaWYgKCFpdGVyYXRlZE9uY2UpIHsKICAgICAgICAgICAgIGl0ZXJhdGVk
T25jZSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsK
QEAgLTM5NiwxNSArMzk0LDE0IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogQGVuZAogKi8KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAKLSAgICBKU1ZhbHVlIGpvYiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUg
YXJndW1lbnQwID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudDEgPSBl
eGVjLT5hcmd1bWVudCgyKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MiA9IGV4ZWMtPmFyZ3VtZW50
KDMpOworICAgIEpTVmFsdWUgam9iID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOworICAgIEpTVmFsdWUgYXJndW1lbnQyID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgzKTsKIAogICAgIGdsb2JhbE9iamVjdC0+cXVldWVNaWNyb3Rh
c2soY3JlYXRlSlNNaWNyb3Rhc2sodm0sIGpvYiwgYXJndW1lbnQwLCBhcmd1bWVudDEsIGFyZ3Vt
ZW50MikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZjRkYjdhNDNkYTY1MDZkMjY1NDI2ZWI0
Zjg1OTQ0ZGJlZDMwYmZlOS4uMjhiNGM2YjUzYjFkNzMwYjQ1OTllNDgwMjdhMWEzZGZiZjM3MTc5
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDc4LDUwICs0NzgsNDggQEAgc3RhdGljIGRvdWJs
ZSBwYXJzZUZsb2F0KFN0cmluZ1ZpZXcgcykKICAgICByZXR1cm4ganNTdHJEZWNpbWFsTGl0ZXJh
bChkYXRhLCBlbmQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB4ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB4ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh4KTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3Qt
PmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2Fn
ZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUV2
YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdl
KCkpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICB9CiAKLSAgICBTdHJpbmcgcyA9IGFzU3RyaW5nKHgpLT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgcyA9IGFzU3RyaW5nKHgpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBwYXJzZWRPYmpl
Y3Q7CiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4g
cHJlcGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNP
Tik7CisgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHMu
Y2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7CiAgICAgICAgIHBhcnNl
ZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoZXhlYywgcy5jaGFyYWN0ZXJzMTYo
KSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJzZXI8VUNo
YXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIE5v
blN0cmljdEpTT04pOwogICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJh
bFBhcnNlKCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGlmIChwYXJzZWRPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocGFyc2VkT2JqZWN0KTsKIAotICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4g
PSBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogY2FsbGVl
R2xvYmFsT2JqZWN0ID0gZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LCBtYWtlU291cmNlKHMsIHNvdXJjZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOworICAgIFNvdXJjZU9yaWdpbiBz
b3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpOworICAgIEV2YWxF
eGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFt
ZSwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBleGVjLCBj
YWxsZWVHbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSwgY2FsbGVlR2xvYmFsT2JqZWN0LT5nbG9i
YWxTY29wZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxUaGlzKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSByYWRpeFZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Cisg
ICAgSlNWYWx1ZSByYWRpeFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIC8v
IE9wdGltaXplZCBoYW5kbGluZyBmb3IgbnVtYmVyczoKICAgICAvLyBJZiB0aGUgYXJndW1lbnQg
aXMgMCBvciBhIG51bWJlciBpbiByYW5nZSAxMF4tNiA8PSBuIDwgSU5UX01BWCsxLCB0aGVuIHBh
cnNlSW50CkBAIC01NDEsMzMgKzUzOSwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgLy8gSWYg
VG9TdHJpbmcgdGhyb3dzLCB3ZSBzaG91bGRuJ3QgY2FsbCBUb0ludDMyLgotICAgIHJldHVybiB0
b1N0cmluZ1ZpZXcoZXhlYywgdmFsdWUsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VJbnQodmlldywgcmFkaXhWYWx1
ZS50b0ludDMyKGV4ZWMpKSkpOworICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoY2FsbEZyYW1lLCB2
YWx1ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihwYXJzZUludCh2aWV3LCByYWRpeFZhbHVlLnRvSW50MzIoY2FsbEZyYW1l
KSkpKTsKICAgICB9KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUGFyc2VGbG9hdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2
aWV3V2l0aFN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1l
KS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihwYXJzZUZsb2F0KHZpZXdXaXRoU3RyaW5nLnZpZXcpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNv
ZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0
aWMgQml0bWFwPDI1Nj4gZG9Ob3RVbmVzY2FwZVdoZW5EZWNvZGluZ1VSSSA9IG1ha2VDaGFyYWN0
ZXJCaXRtYXAoCiAgICAgICAgICIjJCYrLC86Oz0/QCIKICAgICApOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShkZWNvZGUoZXhlYywgZG9Ob3RVbmVzY2FwZVdoZW5EZWNvZGluZ1VSSSwg
dHJ1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGNhbGxGcmFtZSwgZG9O
b3RVbmVzY2FwZVdoZW5EZWNvZGluZ1VSSSwgdHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9u
ZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGlj
IEJpdG1hcDwyNTY+IGVtcHR5Qml0bWFwOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVj
b2RlKGV4ZWMsIGVtcHR5Qml0bWFwLCB0cnVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShkZWNvZGUoY2FsbEZyYW1lLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUkkoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwyNTY+
IGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAg
ICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgpAQCAtNTc2LDEwICs1NzQsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgIiEjJCYnKCkqKywtLi86Oz0/QF9+IgogICAgICk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShleGVjLCBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VS
SSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZW5jb2RlKGNhbGxGcmFtZSwgZG9Ob3RF
c2NhcGVXaGVuRW5jb2RpbmdVUkkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRtYXA8MjU2
PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VDaGFyYWN0ZXJCaXRt
YXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKQEAgLTU4OCwxMCArNTg2
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNv
bXBvbmVudChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIhJygpKi0uX34iCiAgICAgKTsKIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZW5jb2RlKGV4ZWMsIGRvTm90RXNjYXBlV2hlbkVu
Y29kaW5nVVJJQ29tcG9uZW50KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlbmNvZGUo
Y2FsbEZyYW1lLCBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0
YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAg
ICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKQEAgLTYwMCw4ICs1OTgsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAiKistLi9AXyIKICAgICApOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b1N0cmluZ1ZpZXcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5nVmlldyB2
aWV3KSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b1N0cmluZ1ZpZXcoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBb
Jl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgaWYgKHZpZXcuaXM4
Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjID0gdmlldy5jaGFyYWN0ZXJzOCgp
OwpAQCAtNjM2LDkgKzYzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvU3RyaW5nVmlldyhleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgWyZdIChT
dHJpbmdWaWV3IHZpZXcpIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvU3RyaW5nVmll
dyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5nVmlldyB2aWV3
KSB7CiAgICAgICAgIC8vIFdlIHVzZSBpbnQgZm9yIGsgYW5kIGxlbmd0aCBpbnRlbnRpb25hbGx5
IHNpbmNlIHdlIHdvdWxkIGxpa2UgdG8gZXZhbHVhdGUKICAgICAgICAgLy8gdGhlIGNvbmRpdGlv
biBgayA8PSBsZW5ndGggLTZgIGV2ZW4gaWYgbGVuZ3RoIGlzIGxlc3MgdGhhbiA2LgogICAgICAg
ICBpbnQgayA9IDA7CkBAIC02ODgsNjIgKzY4Niw2MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYy0+dm0oKSwgYnVpbGRl
ci50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0o
KSwgYnVpbGRlci50b1N0cmluZygpKTsKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIidh
cmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0
aGlzIGNvbnRleHQuIik7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIidhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nl
c3NlZCBpbiB0aGlzIGNvbnRleHQuIik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVj
dHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJlKEVycm9y
VHlwZTo6VHlwZUVycm9yKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgZXhlYy0+YXJndW1lbnQoMCksIG51bGxw
dHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RB
bk9iamVjdEVycm9yKGV4ZWMsIHRoaXNWYWx1ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0
aGlzVmFsdWUpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U09iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdCkgewotICAgICAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gdGhpc1ZhbHVlLnN5bnRoZXNpemVQcm90b3R5cGUoZXhl
Yyk7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSB0aGlzVmFsdWUuc3ludGhlc2l6ZVBy
b3RvdHlwZShjYWxsRnJhbWUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXByb3RvdHlwZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm90b3R5cGUpOwogICAgIH0KIAotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZSh2bSwgZXhlYykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcik7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25O
dWxsT3JVbmRlZmluZWRFcnJvcik7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhp
c1ZhbHVlKTsKIApAQCAtNzU3LDMxICs3NTQsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOwotICAgIHRo
aXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRocm93SWZDYW50
U2V0KTsKKyAgICB0aGlzT2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSwgdmFsdWUs
IHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNI
b3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGpzQ2Fz
dDxKU1Byb21pc2UqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNQcm9taXNlKiBwcm9taXNl
ID0ganNDYXN0PEpTUHJvbWlzZSo+KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogCiAgICAgLy8g
SW50ZXJuYWxQcm9taXNlcyBzaG91bGQgbm90IGJlIGV4cG9zZWQgdG8gdXNlciBzY3JpcHRzLgog
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4odm0sIHByb21pc2UpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNW
YWx1ZSBvcGVyYXRpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgb3Bl
cmF0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgQVNTRVJUKG9wZXJh
dGlvblZhbHVlLmlzTnVtYmVyKCkpOwotICAgIGF1dG8gb3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8
SlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uPihvcGVyYXRpb25WYWx1ZS50b1VJbnQzMihleGVj
KSk7CisgICAgYXV0byBvcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VSZWplY3Rpb25P
cGVyYXRpb24+KG9wZXJhdGlvblZhbHVlLnRvVUludDMyKGNhbGxGcmFtZSkpOwogICAgIEFTU0VS
VChvcGVyYXRpb24gPT0gSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uOjpSZWplY3QgfHwgb3Bl
cmF0aW9uID09IEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbjo6SGFuZGxlKTsKICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVjdGlvblRyYWNrZXIpCi0gICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cHJvbWlzZVJlamVjdGlvblRyYWNr
ZXIoZ2xvYmFsT2JqZWN0LCBleGVjLCBwcm9taXNlLCBvcGVyYXRpb24pOworICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21pc2VSZWplY3Rpb25UcmFj
a2VyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBwcm9taXNlLCBvcGVyYXRpb24pOwogICAgIGVs
c2UgewogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewogICAgICAgICBjYXNlIEpTUHJvbWlz
ZVJlamVjdGlvbk9wZXJhdGlvbjo6UmVqZWN0OgpAQCAtNzk3LDkxICs3OTMsODggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFj
a2VyKEV4ZWNTdGF0ZSogZXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGlu
TG9nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0J1aWx0aW5Mb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBkYXRhTG9nKGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpLCAiXG4iKTsK
KyAgICBkYXRhTG9nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KSwgIlxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y0J1aWx0aW5EZXNjcmliZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMt
PnZtKCksIHRvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCB0b1N0cmluZyhjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZURl
ZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBwcm9taXNl
ID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIGF1
dG8gcmVqZWN0ID0gWyZdIChKU1ZhbHVlIHJlamVjdGlvblJlYXNvbikgewogICAgICAgICBjYXRj
aFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBy
ZWplY3Rpb25SZWFzb24pOworICAgICAgICBwcm9taXNlLT5yZWplY3QoY2FsbEZyYW1lLCByZWpl
Y3Rpb25SZWFzb24pOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKICAgICB9Owog
Ci0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSk7Ci0gICAgYXV0byog
c3BlY2lmaWVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Cisg
ICAgYXV0byBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbigpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpOworICAg
IGF1dG8qIHNwZWNpZmllciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3Bl
LmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbi0+dmFsdWUoKSk7
CiAKICAgICAvLyBXZSBhbHdheXMgc3BlY2lmeSBwYXJhbWV0ZXJzIGFzIHVuZGVmaW5lZC4gT25j
ZSBkeW5hbWljIGltcG9ydCgpIHN0YXJ0cyBhY2NlcHRpbmcgZmV0Y2hpbmcgcGFyYW1ldGVycywK
ICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhpcyBmcm9tIHRoZSBhcmd1bWVudHMuCiAgICAg
SlNWYWx1ZSBwYXJhbWV0ZXJzID0ganNVbmRlZmluZWQoKTsKLSAgICBhdXRvKiBpbnRlcm5hbFBy
b21pc2UgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUoZXhlYywg
c3BlY2lmaWVyLCBwYXJhbWV0ZXJzLCBzb3VyY2VPcmlnaW4pOworICAgIGF1dG8qIGludGVybmFs
UHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShjYWxs
RnJhbWUsIHNwZWNpZmllciwgcGFyYW1ldGVycywgc291cmNlT3JpZ2luKTsKICAgICBpZiAoRXhj
ZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gcmVqZWN0KGV4Y2VwdGlvbi0+dmFsdWUoKSk7Ci0gICAgcHJvbWlzZS0+cmVzb2x2ZShleGVj
LCBpbnRlcm5hbFByb21pc2UpOworICAgIHByb21pc2UtPnJlc29sdmUoY2FsbEZyYW1lLCBpbnRl
cm5hbFByb21pc2UpOwogCiAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVy
dHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpOwotICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNj
cmlwdG9yOwotICAgIGJvb2wgZW51bWVyYWJsZSA9IG9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlKCk7CisgICAgYm9vbCBlbnVtZXJhYmxlID0gb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0
b3IuZW51bWVyYWJsZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGVu
dW1lcmFibGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
T3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhl
Yyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmpl
Y3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShv
d25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5k
U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoY2FsbEZy
YW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCiAjaWYgRU5BQkxFKElOVEwpCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGlt
ZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOwogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIGRhdGVUaW1lRm9y
bWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIHZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMikudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgyKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXQoKmV4ZWMsIHZhbHVlKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9y
bWF0LT5mb3JtYXQoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgKaW5kZXggOTQ4ZDY3ZWMxOGY5NWUxZjYyZTk4ZDE4ZjZiNjgyZjQyMjZhY2Y3Ni4uMjExMzBm
OWI2MGM5ZTlkZWQxN2Q0YWUxNWMwMzUyMDg1YTk0NWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCkBAIC0y
OSwzNSArMjksMzYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcmdMaXN0OwotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIHJl
YWxseSBiZSBpbiBKU0dsb2JhbE9iamVjdC5jcHAsIGJ1dCBwdXR0aW5nIHRoZW0gdGhlcmUKIC8v
IGlzIGEgMC41JSByZWR1Y3Rpb24uCiAKIGV4dGVybiBjb25zdCBBU0NJSUxpdGVyYWwgT2JqZWN0
UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5j
b2RlVVJJKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1l
bnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVj
dGlvblRyYWNrZXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNCdWlsdGluTG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFibGUo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNPd25L
ZXlzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VG
bG9hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25l
bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNFc2NhcGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNU
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVB
bmRDYWxsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvR2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGlu
RGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGRvdWJsZSBqc1RvTnVtYmVyKFN0
cmluZ1ZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDBi
MjdmZjYzZmU0ODE1YmYyNjNmYzY2Zjc4OTcxMGMzMmIwYzI1MDYuLmUzMWMyOWNhMDExNTYwMGY0
NjE0ZGUzNjkyOTUxM2E1YjFkMWQzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5oCkBAIC00OSw4ICs0OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIERyb3BBbGxMb2Nr
cyBvYmplY3QgdGFrZXMgY2FyZSB0byByZWxlYXNlIHRoZSBKU0xvY2sgb25seSBpZiB5b3VyCiAv
LyB0aHJlYWQgYWNxdWlyZWQgaXQgdG8gYmVnaW4gd2l0aC4KIAotY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgVk07CitjbGFzcyBKU0xvY2s7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm90ZWN0IHRoZSBp
bml0aWFsaXphdGlvbiBvZiB0aGUgbGVnYWN5IHNpbmdsZSAKIC8vIHNoYXJlZCBWTS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCBl
ODg3ODBiNWQxMDM0YmZkZjEyNjI3OGYyYjAxYWU0ODRhNDY2YWI4Li4wZTVhOTdlOGMzMTAyMDdh
NTNiZDkxNjI4Y2UzY2UzOTYyYjU2ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlclBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVT
eW5jKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyRmV0Y2goRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1v
ZHVsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9u
SW5zdGFudGlhdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyUmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfQogCkBAIC0zODcsMzMgKzM4NywzMyBAQCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCogSlNNb2R1bGVMb2FkZXI6OmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3Rh
dGUqIGV4ZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6dHJ5Q3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjp0cnlD
cmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlamVjdCA9IFsmXSAoSlNWYWx1ZSBy
ZWplY3Rpb25SZWFzb24pIHsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZWplY3QoZXhlYywgcmVqZWN0aW9uUmVh
c29uKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVqZWN0KGNhbGxGcmFtZSwg
cmVqZWN0aW9uUmVhc29uKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfTsKIAotICAgIGNv
bnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIGlmIChVTkxJS0VMWShjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdChjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpKTsKIAotICAgIEpTVmFsdWUgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSk7Cisg
ICAgSlNWYWx1ZSBzb3VyY2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8qIGpz
U291cmNlQ29kZSA9IGpzQ2FzdDxKU1NvdXJjZUNvZGUqPihzb3VyY2UpOwogICAgIFNvdXJjZUNv
ZGUgc291cmNlQ29kZSA9IGpzU291cmNlQ29kZS0+c291cmNlQ29kZSgpOwogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIGlmIChzb3VyY2VDb2RlLnByb3ZpZGVyKCktPnNvdXJjZVR5cGUo
KSA9PSBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OldlYkFzc2VtYmx5KQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGV4ZWMsIGRlZmVy
cmVkLCBtb2R1bGVLZXksIGpzU291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGNhbGxGcmFtZSwgZGVmZXJyZWQsIG1v
ZHVsZUtleSwganNTb3VyY2VDb2RlKSk7CiAjZW5kaWYKIAogICAgIENvZGVQcm9maWxpbmcgcHJv
ZmlsZShzb3VyY2VDb2RlKTsKQEAgLTQyMyw0OCArNDIzLDQ4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICB2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpO
b3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9y
LnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlKSk7CiAgICAgQVNTRVJUKG1v
ZHVsZVByb2dyYW1Ob2RlKTsKIAotICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4
ZWMsIG1vZHVsZUtleSwgc291cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0
aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBNb2R1
bGVBbmFseXplciBtb2R1bGVBbmFseXplcihjYWxsRnJhbWUsIG1vZHVsZUtleSwgc291cmNlQ29k
ZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9k
ZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiByZWplY3QoY2F0Y2hTY29wZS5leGNlcHRpb24oKSk7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG1vZHVsZUFuYWx5
emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKSk7CisgICAgYXV0byByZXN1bHQgPSBkZWZl
cnJlZC0+cmVzb2x2ZShjYWxsRnJhbWUsIG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVBy
b2dyYW1Ob2RlKSk7CiAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogbW9kdWxl
UmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0
cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
IW1vZHVsZVJlY29yZCkgCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlB
cnJheShjYWxsRnJhbWUsIG51bGxwdHIpKSk7CiAKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9k
dWxlcygpLnNpemUoKSk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShjYWxsRnJhbWUsIG51bGxwdHIsIG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpLnNp
emUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoYXV0byYga2V5IDogbW9kdWxlUmVjb3JkLT5y
ZXF1ZXN0ZWRNb2R1bGVzKCkpIHsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVj
LCBpKyssIGpzU3RyaW5nKHZtLCBrZXkuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChjYWxsRnJhbWUsIGkrKywganNTdHJpbmcodm0sIGtleS5nZXQoKSkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
ck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2Fz
dDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0
byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KHZt
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChPcHRp
b25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2coIkxvYWRlciBb
bGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CiAKLSAgICBtb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIG1vZHVsZVJlY29yZC0+
bGluayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3Miw3MSArNDcyLDcxIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0
aW9uKEV4ZWNTdGF0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAvLyBIb29rIHBv
aW50LCBMb2FkZXIucmVzb2x2ZS4KICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9h
ZGVyLyNicm93c2VyLXJlc29sdmUKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0
IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAg
IC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9y
IHRoZSByZXNvdXJjZS4KLSAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2Fz
dDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNNb2R1bGVM
b2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShs
b2FkZXItPnJlc29sdmUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEp
LCBleGVjLT5hcmd1bWVudCgyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVy
LT5yZXNvbHZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5jKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNNb2R1bGVM
b2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0
PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGF1dG8gcmVzdWx0ID0gbG9hZGVyLT5yZXNvbHZlU3luYyhleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3VtZW50KDIpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGxvYWRlci0+cmVzb2x2ZVN5bmMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIHJlc3VsdCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNoKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2go
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLmZldGNoCiAgICAgLy8gaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAogICAgIC8vIFRha2UgdGhlIGtleSBhbmQg
ZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgogICAgIC8vIEZvciBleGFtcGxlLCBKYXZhU2Ny
aXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UK
ICAgICAvLyBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICBKU01vZHVsZUxvYWRlciog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1
bGVMb2FkZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGxvYWRlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8q
IGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byogbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID0g
bG9hZGVyLT5nZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIGF1dG8qIG1vZHVsZU5hbWVzcGFjZU9iamVjdCA9IGxvYWRlci0+Z2V0TW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShtb2R1bGVOYW1lc3BhY2VPYmplY3QpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tIEFkZGl0aW9uYWwgSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICAvLyBUbyBpbnN0cnVtZW50IGFuZCByZXRyaWV2ZSB0aGUgZXJyb3Jz
IHJhaXNlZCBmcm9tIHRoZSBtb2R1bGUgZXhlY3V0aW9uLAogICAgIC8vIHdlIGluc2VydGVkIHRo
ZSBob29rIHBvaW50IGhlcmUuCiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTW9k
dWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5h
cmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGxvYWRlci0+ZXZhbHVhdGUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA4YzUxMDk4OTZhMDgzNWYxMTc3YTcyZjJk
MmYzOGU5YWYyNTA1YTJkLi5jOTUxYmVlNDJiOTZjM2RkNzU3MWVjMDA0NjU5MzgyZjkyMDc1OWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcApAQCAtNTcsMTEgKzU3LDExIEBAIHZvaWQgSlNOYXRpdmVTdGRGdW5jdGlv
bjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBp
CiAgICAgbV9mdW5jdGlvbkNlbGwuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNlbGwpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVuU3RkRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNOYXRpdmVT
dGRGdW5jdGlvbio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU05hdGl2ZVN0ZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIHJldHVybiBmdW5jdGlvbi0+bmF0
aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoc3RhdGUpOworICAgIHJldHVybiBmdW5j
dGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpOwogfQogCiBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5oCmluZGV4IGZhYjlkNmUzNTdlNzk3MTc1Y2YwNGQxNWVhZTE3NDI5NjhjNzQwOWIuLmY2
YzczYjM4MGE2ZDczMWNmZDE4MzAzYjg0NzI1ZjdiOTFjMmNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbDsKIAotdXNpbmcgTmF0aXZlU3RkRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPEVuY29kZWRKU1ZhbHVlKEV4ZWNTdGF0ZSopPjsKK3VzaW5nIE5hdGl2ZVN0ZEZ1bmN0
aW9uID0gV1RGOjpGdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopPjsKIAogY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1
bmN0aW9uIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5jcHAKaW5kZXggODI0ODk4YWQzYjFkYTE1MzgxM2Y1ODQ0NGNhNzZmNDc4ZDA5Yjg0Yi4u
Nzc0YzVjMmZkYjEyYjVjMTc4NmYyZGY0NzllZThlMzFhOTg5MmYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShK
U09OT2JqZWN0KTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5j
UGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90
b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTT05Qcm90b0Z1bmNQYXJzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNzk3LDU1ICs3OTcsNTUgQEAgTkVWRVJfSU5M
SU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKIH0KIAogLy8gRUNN
QS0yNjIgdjUgMTUuMTIuMgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9G
dW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U09OUHJvdG9GdW5jUGFyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dp
dGhTdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZp
ZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmlld1dpdGhTdHJpbmcudmll
dzsKIAogICAgIEpTVmFsdWUgdW5maWx0ZXJlZDsKICAgICBpZiAodmlldy5pczhCaXQoKSkgewot
ICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHZpZXcuY2hhcmFj
dGVyczgoKSwgdmlldy5sZW5ndGgoKSwgU3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJz
ZXI8TENoYXI+IGpzb25QYXJzZXIoY2FsbEZyYW1lLCB2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcu
bGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNlci50
cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgIXVuZmlsdGVyZWQpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpIHsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29u
UGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwganNvblBh
cnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4ganNvblBhcnNlcihleGVjLCB2aWV3LmNoYXJhY3RlcnMx
NigpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxV
Q2hhcj4ganNvblBhcnNlcihjYWxsRnJhbWUsIHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcubGVu
Z3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNlci50cnlM
aXRlcmFsUGFyc2UoKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgIXVuZmlsdGVyZWQpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpIHsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFy
c2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0ZXJlZCk7CiAg
ICAgCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwor
ICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICBXYWxrZXIgd2Fsa2VyKGV4ZWMsIGFzT2JqZWN0KGZ1bmN0
aW9uKSwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBXYWxrZXIgd2Fsa2VyKGNhbGxGcmFtZSwg
YXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsVHlwZSwgY2FsbERhdGEpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUod2Fsa2VyLndhbGsodW5maWx0ZXJlZCkpOwogfQogCiAvLyBFQ01BLTI2MiB2
NSAxNS4xMi4zCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJp
bmdpZnkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09O
UHJvdG9GdW5jU3RyaW5naWZ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIFN0cmluZ2lmaWVyIHN0cmluZ2lmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDEpLCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgU3RyaW5naWZpZXIgc3RyaW5naWZpZXIoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ2lmaWVyLnN0cmluZ2lmeShleGVjLT5h
cmd1bWVudCgwKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdHJpbmdpZmllci5zdHJpbmdpZnkoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0K
IAogSlNWYWx1ZSBKU09OUGFyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGpzb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYzQ2NzBm
OGE5MDE1MTI0YTA4N2NjNzI2MDM5OGY4NDYxYjg4NjliNi4uNzE4YzE1NjEwMzE4OWY4NzRjOTVl
ODFjN2Y5YTU5ZDQ5ZWYwODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcApAQCAtMjMwMiwxMiArMjMwMiwxMiBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0
SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3Rv
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihK
U09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBwcm90bykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihKU09iamVjdDo6ZGVmYXVsdEhhc0luc3Rh
bmNlKGNhbGxGcmFtZSwgdmFsdWUsIHByb3RvKSkpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNzc2YzFmYjBlMGQ4MWE2MGU5YTU3
MTE4YjRkZjM5MmQyNmZmMTI5MC4uNTM0YjdkYjUzZjVmOGNjYzAyYWQ0NmQ1MDgwODQ5ODhlZmI0
ZDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMTg0
LDcgKzExODQsNyBAQCBjbGFzcyBKU0ZpbmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTT2JqZWN0
IHsKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsKK0pTX0VYUE9S
VF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGlubGluZSBKU09iamVj
dCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCmluZGV4IGRkMTEyNDU5OWExMjBjY2Y3YTI5ZWRkYmEzNjhmNjU0N2YzZGU1MDAuLjg5
NDFkNThmOTE1Y2UxMzBiYWI2OWQ3MWMyZmI2NjI1NTgyZjhmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RU
eXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I6OkpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjb25zdHJ1Y3RU
eXBlZEFycmF5VmlldywgY29uc3RydWN0VHlwZWRBcnJheVZpZXcpCkBAIC02NSwxMSArNjUsMTEg
QEAgU3RydWN0dXJlKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSgKIAogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5
cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIiVUeXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSJfcyk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIiVUeXBlZEFycmF5
JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCBmYWI2ZTA5ZTg3ZDQzNjcyNTRmNWE4YzZi
YzI1ZmQyZDIxM2QxMWNlLi4zMGIwZGZmMDhmZGQyNmViYmM1ZGY2NTc0Njk2YzVlOTIzNDZiNDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtMzgsMjIzICszOCwyMjIgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiAjZGVmaW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihmdW5jdGlvbk5hbWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
c3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlT
dG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzd2l0Y2ggKHRoaXNW
YWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5
Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5Pih2bSwgY2FsbEZyYW1l
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQzMjog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMy
QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMyQXJyYXk+KHZtLCBjYWxs
RnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNl
IFR5cGVVaW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
TmFtZTxKU1VpbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFy
cmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBjYXNlIFR5cGVGbG9hdDY0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0Zsb2F0NjRBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDMyOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJheT4odm0sIGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQ4OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4odm0s
IGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50
ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1Vp
bnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KHZtLCBj
YWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBj
YXNlIFR5cGVJbnQxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uTmFtZTxKU0ludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2
QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBjYXNlIFR5cGVVaW50MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
TmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBjYXNlIFR5cGVEYXRhVmlldzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
IH0gd2hpbGUgKGZhbHNlKQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRB
cnJheVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzQ2VsbCgpICYmIGlz
VHlwZWRWaWV3KHZhbHVlLmFzQ2VsbCgpLT5jbGFzc0luZm8oZXhlYy0+dm0oKSktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih2YWx1
ZS5pc0NlbGwoKSAmJiBpc1R5cGVkVmlldyh2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKGdsb2Jh
bE9iamVjdC0+dm0oKSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQu
aXNDZWxsKCkgfHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0p
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CiAKICAgICBKU0FycmF5QnVm
ZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGFyZ3VtZW50
KTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJl
ZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmxlbmd0aCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIFR5cGVkQXJy
YXlUeXBlIHR5cGUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgp
LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CiAgICAgQVNTRVJUKGlzVHlw
ZWRWaWV3KHR5cGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheUNvbnN0cnVjdG9yKHR5cGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9H
RU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU29ydCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZ
X1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29w
ZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4pOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
Y2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxk
IGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGNh
bGxGcmFtZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5jbHVkZXMpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFz
dEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJB
WV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdElu
ZGV4T2YpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZV
TkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pv
aW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY0pvaW4pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90
IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNCdWZmZXIpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRl
ckZ1bmNMZW5ndGgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklD
X1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklD
X1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1JldmVyc2UpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5
Q3JlYXRlKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29w
ZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNU
b1N0cmluZ1RhZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBzd2l0Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKSB7CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCAiVWludDhDbGFtcGVkQXJyYXkiKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmgKaW5kZXggNGUzMzQzMTQyMjlmZTA4Zjk5YjM5ZWM2ZjUwODNhZDc4Zjk0
NzA3Mi4uNWQ1NDk5MzY4Y2FmYWVlYmFkMTBmZGFhZjQxMjc5YmRiYjUwNTQ4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaApAQCAtNDUsMTAgKzQ1LDEwIEBAIGNsYXNzIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xl
bmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJh
eUNyZWF0ZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRB
cnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2
YXRlRnVuY1NvcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDc3NmVjM2M0ZjIxYWI4ZWNkMTQyZjljYzY1
NzVhYTJkYjk2MGQ4NDguLjcyYTIxYTUwNTUyYzY2OGRlYWJmNzNkNGE2MWYyMzYwNmRjNjMzZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5j
cHAKQEAgLTQ3LDYyICs0Nyw2MSBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIE1hcFByb3RvdHlwZSogbWFwUHJvdG90eXBlLCBHZXR0ZXJTZQogICAgIHB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1h
cChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdE1hcChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiBNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbE1hcCwgY29uc3RydWN0
TWFwKQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFw
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIk1hcCIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIk1hcCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
TWFwOjpjcmVhdGUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSkpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNNYXA6OmNyZWF0ZShjYWxsRnJhbWUs
IHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAKICAgICBpZiAoYXV0byogaXRlcmFibGVNYXAgPSBqc0R5
bmFtaWNDYXN0PEpTTWFwKj4odm0sIGl0ZXJhYmxlKSkgewogICAgICAgICBpZiAoaXRlcmFibGVN
YXAtPmNhbkNsb25lRmFzdEFuZE5vbk9ic2VydmFibGUobWFwU3RydWN0dXJlKSkKLSAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhYmxlTWFw
LT5jbG9uZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKSkpOworICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNsb25lKGNhbGxG
cmFtZSwgdm0sIG1hcFN0cnVjdHVyZSkpKTsKICAgICB9CiAKLSAgICBKU01hcCogbWFwID0gSlNN
YXA6OmNyZWF0ZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKTsKKyAgICBKU01hcCogbWFwID0gSlNN
YXA6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBtYXBTdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhZGRlckZ1
bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7
CisgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0KGNhbGxGcmFt
ZSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
YWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5j
dGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogCiAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0o
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKKyAgICBmb3JFYWNo
SW5JdGVyYWJsZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBFeGVjU3RhdGUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGlmICghbmV4dEl0ZW0uaXNPYmplY3QoKSkgewot
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChleGVjLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oMCkpOworICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChj
YWxsRnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5leHRJ
dGVtLmdldChleGVjLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOworICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0xMTAsMjUgKzEwOSwyNSBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKICAgICAgICAgQVNTRVJU
KCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICBjYWxsKGV4ZWMsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwg
YWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBtYXAsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoY2Fs
bEZyYW1lLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rp
b25DYWxsRGF0YSwgbWFwLCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShtYXApOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
aXZhdGVGdW5jTWFwQnVja2V0SGVhZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5h
bWljQ2FzdDxKU01hcCo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgSlNN
YXAqIG1hcCA9IGpzQ2FzdDxKU01hcCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU01hcCo+KGdsb2Jh
bE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIEpTTWFwKiBtYXAg
PSBqc0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBh
dXRvKiBoZWFkID0gbWFwLT5oZWFkKCk7CiAgICAgQVNTRVJUKGhlYWQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoaGVhZCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChq
c0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1l
bnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNN
YXA6OkJ1Y2tldFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKKyAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICBi
dWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICB3aGlsZSAoYnVja2V0KSB7CkBAIC0xMzYsMjEg
KzEzNSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFw
QnVja2V0TmV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJ1Y2tldCk7CiAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgIH0K
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc2VudGluZWxNYXBCdWNrZXQo
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnZtKCkuc2VudGlu
ZWxNYXBCdWNrZXQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJp
dmF0ZUZ1bmNNYXBCdWNrZXRLZXkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWlj
Q2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7
Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5
bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNr
ZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1
Y2tldCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQtPmtleSgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0
VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0byogYnVja2V0
ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBqc0R5bmFtaWNDYXN0PEpTTWFwOjpC
dWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7
CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShidWNrZXQtPnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKaW5kZXggZWQ0ODMwNWM1ZGIzZDRmYmQ2
NDVmMDk2MzE4MDM4NmQ0MjEyZjc3OS4uMWJiYWI3NmY3YmIwZmJlYjEyNTM5MmEwNGEyM2RmYjZl
MTNkZDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5oCkBAIC01Niw5ICs1Niw5IEBAIGNsYXNzIE1hcENvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBNYXBQ
cm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwogfTsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0
TmV4dChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRLZXkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2
YXRlRnVuY01hcEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCmluZGV4IGMyMjkwNWU4ODEzZDRmMjRjOTkxNTY0ZWZiMjdhZjQ1NTc3
NGFmNGQuLmFmNTcyNmY3YjZlOTJhN2U5Zjg4MGQ2MmRjZmEzMWZkZGUwOTM4MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNDgsMTMg
KzQ4LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1hcCIs
ICZCYXNlOjpzX2luZm8sICZtYXBQcm90b3R5cGVUYWJsCiBAZW5kCiAqLwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0dldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1
bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
SGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6
ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAgICAKIHZvaWQgTWFw
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CkBAIC03OCw5ICs3OCw5IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElW
RV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIG1hcFBy
b3RvRnVuY1NpemUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBnZXRNYXAo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZy
YW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNW
YWx1ZS5pc0NlbGwoKSkpIHsKQEAgLTk1LDUyICs5NSw1MiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIG1hcC0+Y2xlYXIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1h
cCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPnJlbW92ZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwLT5nZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG1hcC0+aGFzKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIHRoaXNWYWx1
ZSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBtYXAtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhpc1ZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1hcC0+c2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDJiMDZkNjYwMzVhOGY4YTgy
MWI2MzdkYzdjNTk5MzA4NDlkODEyZmEuLmFkZmZhZWRlYTk1ZDRkMDExNDZhNGViNTVlZmIwN2E0
NGFlMTlhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCkBAIC0zMywzOCArMzMsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShNYXRoT2JqZWN0KTsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW5oKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRh
bjIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNDYnJ0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jQ2VpbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0NsejMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQ29zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jQ29zaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRnJvdW5kKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2coRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzEwKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9n
MihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y01heChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY01pbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1BvdyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1JvdW5kKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbmgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0lNdWwoRXhlY1N0YXRl
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNBQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNp
bmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW5oKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNBVGFuMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2VpbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQ2x6MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NvcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29z
aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHBtMShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jRnJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNIeXBvdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNMb2cxcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMTAoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xv
ZzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY01heChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNQb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1JhbmRvbShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY1NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2luaChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jU3FydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNU
YW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IGNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8gPSB7ICJNYXRoIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRoT2JqZWN0KSB9
OwogCkBAIC0xMjcsNzYgKzEyNyw3NiBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
QWJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmYWJzKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmFicyhjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YWNvcyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihl
eGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6
OmFjb3MoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW4o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFzaW4oZXhlYy0+YXJndW1lbnQoMCku
dG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjphc2luKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1l
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRh
bihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNBVGFuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFuKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6YXRhbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0FUYW4yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0FUYW4yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBkb3VibGUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpOworICAgIGRvdWJsZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkb3VibGUgYXJnMSA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcxID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoYXRhbjIoYXJnMCwgYXJnMSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2VpbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDZWlsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihjZWlsKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2VpbChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0NsejMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICB1aW50MzJfdCB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
VUludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1VJbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShjbHoo
dmFsdWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0NvcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvcyhleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvcyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0V4cChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cChl
eGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmbG9vcihl
eGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGZsb29yKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2Fs
bEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jSHlwb3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jSHlwb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICB1bnNpZ25lZCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBk
b3VibGUgbWF4ID0gMDsKICAgICBWZWN0b3I8ZG91YmxlLCA4PiBhcmdzOwogICAgIGFyZ3MucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmdzQ291bnQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcmdzQ291bnQ7ICsraSkgewotICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKS50b051bWJlcihleGVjKSk7CisgICAgICAgIGFyZ3MudW5j
aGVja2VkQXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoY2Fs
bEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICBpZiAoc3RkOjppc2luZihhcmdzW2ldKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoK3N0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSkpOwpAQCAtMjE3LDE5ICsyMTcsMTkgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSHlwb3QoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChzdW0pICogbWF4KSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNM
b2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmxvZyhleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91Ymxl
TnVtYmVyKE1hdGg6OmxvZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFt
ZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01h
eChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNNYXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25l
ZCBhcmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBkb3VibGUgcmVz
dWx0ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGsgPSAwOyBrIDwgYXJnc0NvdW50OyArK2spIHsKLSAgICAgICAgZG91YmxlIHZh
bCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBk
b3VibGUgdmFsID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihjYWxs
RnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsKSkgewogICAgICAgICAgICAgcmVzdWx0
ID0gUE5hTjsKQEAgLTIzOSwxNCArMjM5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY01heChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSArc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291bnQ7ICsraykg
ewotICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1i
ZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2YWwgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGspLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoc3RkOjppc25hbih2YWwpKSB7
CiAgICAgICAgICAgICByZXN1bHQgPSBQTmFOOwpAQCAtMjU2LDM0ICsyNTYsMzQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIEVD
TUEgMTUuOC4yLjEuMTMKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGRvdWJsZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KTsKKyAgICBkb3VibGUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkb3VibGUgYXJnMiA9IGV4ZWMtPmFyZ3VtZW50
KDEpLnRvTnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcyID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS50b051bWJlcihjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKG9wZXJhdGlvbk1hdGhQb3coYXJnLCBhcmcyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFuZG9tKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0RvdWJsZU51bWJlcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYWtSYW5k
b21OdW1iZXIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
Z2xvYmFsT2JqZWN0LT53ZWFrUmFuZG9tTnVtYmVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUm91bmQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGpzUm91bmQoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc1JvdW5kKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaWduKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZG91YmxlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpOworICAgIGRvdWJsZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgaWYgKHN0ZDo6aXNuYW4oYXJnKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICBpZiAoIWFyZykKQEAgLTI5MSw5NSAr
MjkxLDk1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpZ24o
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3Rk
OjpzaWduYml0KGFyZykgPyAtMSA6IDEpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jU2luKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
TWF0aDo6c2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6c2luKGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU3FydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihzcXJ0KGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVt
YmVyKE1hdGg6OnRhbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnRhbihjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0lNdWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaW50MzJfdCBsZWZ0ID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGxlZnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgaW50MzJf
dCByaWdodCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaW50MzJfdCBy
aWdodCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9JbnQzMihjYWxsRnJhbWUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobGVmdCAqIHJpZ2h0KSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zaChleGVjLT5hcmd1bWVudCgwKS50b051
bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVy
KE1hdGg6OmFjb3NoKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbmgo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jQVNpbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFzaW5oKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbmgoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJl
cihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNBVGFuaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
YXRhbmgoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphdGFuaChjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0NicnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoTWF0aDo6Y2JydChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNicnQoY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3NoKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKE1hdGg6OmNvc2goZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpj
b3NoKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwbTEoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwbTEo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cG0xKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoTWF0aDo6ZXhwbTEoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJh
bWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNG
cm91bmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jRnJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzdGF0aWNfY2FzdDxm
bG9hdD4oZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxcChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjps
b2cxcChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzEwKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzEw
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2cxMChleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91Ymxl
TnVtYmVyKE1hdGg6OmxvZzEwKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
TG9nMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNMb2cyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2cyKGV4ZWMt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVt
YmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY1NpbmgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jU2luaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6
c2luaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbmgoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVt
YmVyKE1hdGg6OnRhbmgoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW5oKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKmV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVuYyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYykpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAppbmRleCBh
ZjU3ZDM0YmE1ZTQzYmE0MWZjNDI1YmVkMjMzN2VjNmYyYmY2YWY3Li5iY2RlYjQzYzkxMTZlNjAw
NTU4Y2RhMmNlMGRlZGI0YzU4ZDhhZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0aE9iamVjdC5oCkBAIC00OSw4ICs0OSw4IEBAIGNsYXNzIE1hdGhPYmplY3QgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNGbG9vcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jVHJ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NaWNy
b3Rhc2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01pY3JvdGFzay5oCmluZGV4
IDljNGYyNzQ2NTMxNGVkNGRkNjA2NTcxZTYyZDc3OTI0NzdmOTNhNmYuLjVkODg5MTVkNWI0ZWMz
OTM0ODNhNGQxZGFhYmM1YmM1NmM1MzcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01pY3JvdGFzay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01pY3JvdGFzay5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiAKIGNsYXNzIE1pY3JvdGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPE1pY3JvdGFzaz4g
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA2MjE2NTA3Y2FiNjBlODhiNGI2OTk0MTk3
MmFlYTczYmIzZDQ0M2VkLi5kYzM0MDY4MTJhNmQzMDY3ODQzNjM1MjZkZTQ1MjRjNDgzNDNkZDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNTAsMjQgKzUwLDI0IEBAIHZvaWQgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvckJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIHByCiB9CiAKIHRlbXBsYXRlPEVycm9yVHlwZSBlcnJvclR5cGU+Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y29uc3Ry
dWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y29uc3Ry
dWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0g
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSh2bSkpOwor
ICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0
dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSh2
bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIEFTU0VSVChlcnJvclN0cnVjdHVyZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0
dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpKTsKIH0KIAogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+Ojpj
YWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y2FsbE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0
dXJlID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKS0+
ZXJyb3JTdHJ1Y3R1cmUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0
YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBl
Tm90aGluZywgZmFsc2UpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwg
bWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIHRlbXBsYXRlIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCmluZGV4IDczMDdkMDEwYzkzNDQ2OTZjNjRhYWM5YThjMjk1ZjdhYjMzZTRhMzAuLjE2NmVl
NzFiNDU0MjQ4YjgzNGZjZDdjMjM3M2FlMjRhNzFkYTBkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTYw
LDEwICs2MCwxMCBAQCBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGlj
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoVk0mIHZtKSB7IHJldHVy
biBnbG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZShlcnJvclR5cGUpOyB9CisgICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZShWTSYpIHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5lcnJv
clN0cnVjdHVyZShlcnJvclR5cGUpOyB9CiBwcml2YXRlOgotICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSop
OwotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmgKaW5kZXgg
N2JkYzhmOTZkMDMwMWMyMDQwNDMxNGI5YWViNzRkYmRiMDMwN2E0Yi4uMTBiYWY5MDk2Nzk3MzE3
MmFjNDM4Njg1ZjBiNzc1YTI2MmU2ZjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiAKLXR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpTQ19IT1NUX0NBTEwgKlJhd05hdGl2ZUZ1bmN0aW9uKShFeGVjU3RhdGUq
KTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpTQ19IT1NUX0NBTEwgKlJhd05hdGl2ZUZ1bmN0
aW9uKShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjbGFzcyBOYXRpdmVGdW5jdGlv
biB7CiBwdWJsaWM6CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsKICAg
ICBib29sIG9wZXJhdG9yPT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID09IG90aGVyLm1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KE5hdGl2ZUZ1bmN0aW9u
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogCi0gICAgRW5j
b2RlZEpTVmFsdWUgb3BlcmF0b3IoKShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIG1fcHRyKGV4
ZWMpOyB9CisgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gbV9wdHIoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpOyB9CiAKICAgICB2b2lkKiByYXdQb2ludGVyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9wdHIpOyB9CiAKQEAgLTgxLDcgKzgxLDcgQEAg
Y2xhc3MgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gewogICAgIGJvb2wgb3BlcmF0b3I9PShUYWdnZWRO
YXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7
IH0KICAgICBib29sIG9wZXJhdG9yIT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBv
cGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gTmF0aXZlRnVuY3Rpb24oKnRoaXMp
KGV4ZWMpOyB9CisgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gTmF0aXZlRnVuY3Rp
b24oKnRoaXMpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgTmF0aXZlRnVuY3Rpb24oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IGE1NmNhYjNmYWU3OWVl
OTQ1ZTY5NzY2MjRhMTY0YjViMThkOGY0YzguLjk2N2RiZmM1OWQxZmJmNjI4MGZlNWJmMWY1OWMy
ZWNmYTBlNzgyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bGxHZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbEdldHRlckZ1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IGNvbnN0IENsYXNzSW5mbyBOdWxsR2V0dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShO
dWxsR2V0dGVyRnVuY3Rpb24pIH07CiAKIG5hbWVzcGFjZSBOdWxsR2V0dGVyRnVuY3Rpb25JbnRl
cm5hbCB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5k
ZWZpbmVkKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNTZk
NTNjYzRhYTY3NmJmNzNkZmMxZTBlZTZmNGYzYTYyNzE4NzAzMy4uOTBjNWNmM2VlZGZiZmM1MWUx
MzdlMzIzMTk3MTljMDgyMTdkNmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgc3Rh
dGljIGJvb2wgY2FsbGVySXNTdHJpY3QoRXhlY1N0YXRlKiBleGVjKQogfQogCiBuYW1lc3BhY2Ug
TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChjYWxsZXJJc1N0cmlj
dChleGVjKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9z
KSk7CisgICAgaWYgKGNhbGxlcklzU3RyaWN0KGNhbGxGcmFtZSkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlNldHRpbmcg
YSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCBlODJhOGZiNGJmNDM5
OTY1MTQwZDU1ZGJiNzQzOWEwMTk5ZTNlOThiLi45MDY4MjkzOGFmNDg4MDU4MWFlNzA0NzhjODdh
NWQ3NjYxMWZhMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3Rv
ckZ1bmNJc0ludGVnZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5j
SXNJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC01
Miw4ICs1Miw4IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiBAZW5kCiAqLwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1i
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogTnVtYmVyQ29uc3RydWN0
b3I6Ok51bWJlckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxOdW1iZXJDb25zdHJ1Y3Rvciwg
Y29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IpCkBAIC04NiwxMyArODYsMTMgQEAgdm9pZCBOdW1i
ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51
bWJlclByb3RvdHlwZSkKIH0KIAogLy8gRUNNQSAxNS43LjEKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBkb3VibGUgbiA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGV4ZWMpIDogMDsKKyAgICBkb3VibGUgbiA9IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID8gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihj
YWxsRnJhbWUpIDogMDsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJP
YmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBOdW1iZXJPYmplY3QqIG9iamVjdCA9IE51bWJlck9iamVjdDo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAtMTAxLDIxICsxMDEsMjEgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQogfQogCiAvLyBFQ01BIDE1LjcuMgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID8gMCA6IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpOwogfQogCiAvLyBF
Q01BLTI2MiAyMC4xLjIuMwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGV4
ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KSk7CiB9CiAKIC8vIEVDTUEtMjYyIDIwLjEuMi41Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVj
dG9yRnVuY0lzU2FmZUludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYm9vbCBpc0ludGVn
ZXI7CiAgICAgaWYgKGFyZ3VtZW50LmlzSW50MzIoKSkKICAgICAgICAgaXNJbnRlZ2VyID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCmluZGV4IDAzYTVlMWIwMDM3OGJiMmJlY2MyNjRiZDg5M2FjNzdlN2Y5ZGU5ZTIuLjI4ZTJm
NTQxMzJlYzhjZGI2NGU5M2ZjMjc1ZmJjOGI5MGE0Mzc2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDQsMTEgKzQ0LDEx
IEBAIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBEb3VibGVD
b252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTM4Niwx
OCArMzg2LDE4IEBAIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91YmxlVmFsdWUs
IGludDMyX3QgcmFkaXgpCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVu
dCBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRvIHJvdW5kIHRo
ZSBzaWduaWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRob2Qgb3B0aW9u
YWxseSByb3VuZHMKIC8vIHRvIGFyZ3VtZW50LXBsdXMtb25lIHNpZ25pZmljYW50IGZpZ3VyZXMp
LgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50
aWFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9FeHBvbmVudGlhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgZXhl
Yy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVy
cm9yKGV4ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0b1RoaXNOdW1i
ZXIodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogCi0gICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IGFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgLy8gUGVyZm9ybSBUb0ludGVnZXIg
b24gdGhlIGFyZ3VtZW50IGJlZm9yZSByZW1haW5pbmcgc3RlcHMuCi0gICAgaW50IGRlY2ltYWxQ
bGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0ludGVnZXIoZXhlYykpOworICAgIGludCBk
ZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBIYW5kbGUg
TmFOIGFuZCBJbmZpbml0eS4KQEAgLTQwNSw3ICs0MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3Ry
aW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwgMCB8fCBkZWNpbWFs
UGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhlYywgc2Nv
cGUsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
dG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOwog
CiAgICAgLy8gUm91bmQgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB1bmRlZmluZWQsIGFsd2F5cyBm
b3JtYXQgYXMgZXhwb25lbnRpYWwuCiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwpA
QCAtNDIzLDE5ICs0MjMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQ
cm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFRoaXMgbWV0aG9kIHRh
a2VzIGFuIGFyZ3VtZW50IHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8g
cm91bmQgdGhlCiAvLyBzaWduaWZpY2FuZCB0by4gSG93ZXZlciB3aGVuIGNvbnZlcnRpbmcgbGFy
Z2UgdmFsdWVzICgxZSsyMSBhbmQgYWJvdmUpIHRoaXMKIC8vIG1ldGhvZCB3aWxsIGluc3RlYWQg
ZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSB4OwotICAgIGlmICghdG9U
aGlzTnVtYmVyKHZtLCBleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIXRvVGhpc051bWJlcih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgeCkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBpbnQgZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19j
YXN0PGludD4oZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGV4ZWMpKTsKKyAgICBpbnQgZGVj
aW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0lu
dGVnZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICBpZiAoZGVjaW1hbFBsYWNlcyA8IDAgfHwgZGVjaW1hbFBsYWNlcyA+IDEwMCkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9GaXhlZCgpIGFyZ3Vt
ZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJl
IGJldHdlZW4gMCBhbmQgMTAwIl9zKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJZiB4
ID49IDEwXjIxLCB0aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNvIGNv
dmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAtNDU3
LDIyICs0NTcsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1
bmNUb0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKIC8vIGRlY2ltYWwsIHdoaWxzdCAxMDAwIGlzIGNv
bnZlcnRlZCB0byB0aGUgZXhwb25lbnRpYWwgcmVwcmVzZW50YXRpb24gMS4wMGUrMy4KIC8vIEZv
ciBuZWdhdGl2ZSBleHBvbmVudHMgdmFsdWVzID49IDFlLTYgYXJlIGZvcm1hdGVkIGFzIGRlY2lt
YWwgZnJhY3Rpb25zLAogLy8gd2l0aCBzbWFsbGVyIHZhbHVlcyBjb252ZXJ0ZWQgdG8gZXhwb25l
bnRpYWwgcmVwcmVzZW50YXRpb24uCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgaWYgKCF0b1Ro
aXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4KSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIC8vIFRv
IHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5n
LgogICAgIGlmIChhcmcuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIC8vIFBlcmZvcm0g
VG9JbnRlZ2VyIG9uIHRoZSBhcmd1bWVudCBiZWZvcmUgcmVtYWluaW5nIHN0ZXBzLgotICAgIGlu
dCBzaWduaWZpY2FudEZpZ3VyZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50b0ludGVnZXIoZXhl
YykpOworICAgIGludCBzaWduaWZpY2FudEZpZ3VyZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZy50
b0ludGVnZXIoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmluaXR5LgpAQCAtNDgwLDcgKzQ4MCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24o
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChzaWduaWZpY2Fu
dEZpZ3VyZXMgPCAxIHx8IHNpZ25pZmljYW50RmlndXJlcyA+IDEwMCkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9QcmVjaXNpb24oKSBhcmd1bWVudCBt
dXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5n
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUg
YmV0d2VlbiAxIGFuZCAxMDAiX3MpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVkUHJlY2lzaW9uKHgsIHNpZ25pZmlj
YW50RmlndXJlcywgS2VlcFRyYWlsaW5nWmVyb3MpKSk7CiB9CkBAIC01NTMsNTAgKzU1Myw0OSBA
QCBKU1N0cmluZyogbnVtYmVyVG9TdHJpbmcoVk0mIHZtLCBkb3VibGUgZG91YmxlVmFsdWUsIGlu
dDMyX3QgcmFkaXgpCiAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW50ZXJuYWwodm0sIGRvdWJs
ZVZhbHVlLCByYWRpeCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKLSAgICBpZiAo
IXRvVGhpc051bWJlcih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpLCBkb3VibGVWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3Ioc3RhdGUsIHNjb3BlLCBzdGF0ZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLCBkb3VibGVWYWx1ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVy
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBh
dXRvIHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhBcmd1bWVudChzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBzY29wZSk7CisgICAgYXV0byByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4
QXJndW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlclRvU3RyaW5nSW50ZXJuYWwodm0sIGRvdWJsZVZhbHVl
LCByYWRpeCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgaWYgKCF0b1Ro
aXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCB4KSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSW50
bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKLSAgICBudW1iZXJGb3Jt
YXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKmV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVj
LT5hcmd1bWVudCgxKSk7CisgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0
KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1h
dC0+Zm9ybWF0TnVtYmVyKCpleGVjLCB4KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpjYWxsRnJhbWUs
IHgpKSk7CiAjZWxzZQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkudG9T
dHJpbmcoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkudG9T
dHJpbmcoY2FsbEZyYW1lKSk7CiAjZW5kaWYKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgdGhpc1Zh
bHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBz
Y29wZSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051
bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDI5ZTU1YzVlYjM0
ZGEyNWQ2YmFmYTVlOTE5YjAyM2QzYTEzNDg1M2YuLjc5N2EzY2IwODhkZGFhNGU2YTEyY2QwOGQ3
OWNlZjg0NTIzZmVkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE51bWJlclByb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewogICAgIE51bWJlclByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBKU1N0
cmluZyogaW50MzJUb1N0cmluZyhWTSYsIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwog
SlNTdHJpbmcqIGludDUyVG9TdHJpbmcoVk0mLCBpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHJhZGl4
KTsKIEpTU3RyaW5nKiBudW1iZXJUb1N0cmluZyhWTSYsIGRvdWJsZSB2YWx1ZSwgaW50MzJfdCBy
YWRpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggODg0ZDlmZmY0MmRkNTY3ZWRlN2JiM2I2NDc5MTU4MzkwYjNhYTZi
Yi4uOTRlY2FiMzdmOTY0NmQxNWRhNWViMGZiOGMyNTkxZjk2YzUyNDUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAt
NDAsMjEgKzQwLDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyhFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVBy
b3BlcnR5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
clByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJs
ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JJcyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JBc3NpZ24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckRlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9u
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96
ZW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTkzLDggKzkzLDggQEAg
Y29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
amVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVj
dENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxPYmplY3RDb25zdHJ1Y3RvciwgY29uc3RydWN0
V2l0aE9iamVjdENvbnN0cnVjdG9yKQpAQCAtMTE1LDExICsxMTUsMTAgQEAgdm9pZCBPYmplY3RD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBPYmoKIH0KIAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCi1zdGF0aWMg
QUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBuZXdUYXJnZXQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3Ry
dWN0T2JqZWN0V2l0aE5ld1RhcmdldChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0ganNDYXN0PE9i
amVjdENvbnN0cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG9iamVjdENvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgbmV3VGFyZ2V0IGNvbmRpdGlvbiBpbiB0aGlzIGNhbGxlciBzaWRlIGluc3RlYWQg
b2YgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUgc2lkZS4KQEAgLTE0
Myw0MyArMTQyLDQzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3RP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1RhcmdlCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBhcmcudG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdChleGVj
LCBKU1ZhbHVlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVj
dFdpdGhOZXdUYXJnZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIEpTVmFsdWUoKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90
eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZSh2
bSwgY2FsbEZyYW1lKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb2JqZWN0
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc2V0IHByb3RvdHlw
ZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfcyk7CiAKLSAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFwcm90b1ZhbHVl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
IlByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm90b3R5cGUg
dmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOwogCi0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd0lm
Q2FudFNldCA9IHRydWU7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFBy
b3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAg
IGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGNhbGxGcmFt
ZSwgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlRfVU5VU0VEKGRpZFNldFByb3RvdHlwZSwgc2NvcGUuZXhjZXB0aW9uKCkgfHwgZGlkU2V0UHJv
dG90eXBlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVlKTsKIH0KQEAg
LTIzMiw2NCArMjMxLDY0IEBAIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iCiAgICAgcmV0dXJuIGRl
c2NyaXB0b3JzOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShl
eGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Q
cm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG9i
amVjdCwgcHJvcGVydHlOYW1lKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNh
bGxGcmFtZSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
ZXhlYywgb2JqZWN0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjYWxsRnJh
bWUsIG9iamVjdCkpKTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUu
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVy
dHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0
eUtleXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVu
dW1lcmF0aW9uIGNhY2hlLgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVj
dCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMo
ZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBEb250RW51bVByb3BlcnRp
ZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhjYWxsRnJhbWUsIG9iamVjdCwgUHJvcGVydHlOYW1l
TW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVjKTsKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5
S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkV4Y2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0
eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWdu
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JBc3NpZ24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJn
ZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIk9iamVjdC5hc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJh
bWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKLSAgICBKU09iamVjdCogdGFyZ2V0
ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmplY3QuYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5w
dXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7CisgICAgSlNPYmplY3Qq
IHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIEZJWE1FOiBFeHRlbmQgdGhpcyBmb3Ig
bm9uIEpTRmluYWxPYmplY3QuIEZvciBleGFtcGxlLCB3ZSB3b3VsZCBsaWtlIHRvIHVzZSB0aGlz
IGZhc3QgcGF0aCBmb3IgZnVuY3Rpb24gb2JqZWN0cyB0b28uCkBAIC0yOTgsMTcgKzI5NywxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCA4
PiBwcm9wZXJ0aWVzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsKLSAgICB1bnNp
Z25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgYXJn
c0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IGFyZ3NDb3VudDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgc291cmNlVmFsdWUg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSk7CiAgICAgICAgIGlmIChzb3VyY2VW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IEpTT2JqZWN0KiBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAg
SlNPYmplY3QqIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHRhcmdl
dENhblBlcmZvcm1GYXN0UHV0KSB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+c3RhdGljUHJv
cGVydGllc1JlaWZpZWQodm0pKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLT5yZWlmeUFsbFN0
YXRpY1Byb3BlcnRpZXMoZXhlYyk7CisgICAgICAgICAgICAgICAgc291cmNlLT5yZWlmeUFsbFN0
YXRpY1Byb3BlcnRpZXMoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogCkBAIC0zNzQsMTIgKzM3MywxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdGFyZ2V0Q2FuUGVyZm9ybUZhc3RQdXQgPSBmYWxzZTsK
IAogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKHZtLCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzQW5kU3ltYm9scywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwotICAg
ICAgICBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2Us
IGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSk7CisgICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKHNvdXJjZSwgY2FsbEZyYW1lLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzb3Vy
Y2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0g
ICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdl
dE93blByb3BlcnR5U2xvdChzb3VyY2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdChzb3VyY2UsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAgICAg
ICBpZiAoIWhhc1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4OCwxMyAr
Mzg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAg
ICAgICAgICAgaWYgKExJS0VMWSghc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSkKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZhbHVlID0gc291cmNl
LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNvdXJj
ZS0+Z2V0KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBw
dXRQcm9wZXJ0eVNsb3QodGFyZ2V0LCB0cnVlKTsKLSAgICAgICAgICAgIHRhcmdldC0+cHV0SW5s
aW5lKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CisgICAgICAg
ICAgICB0YXJnZXQtPnB1dElubGluZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1
dFByb3BlcnR5U2xvdCk7CiAgICAgICAgIH07CiAKICAgICAgICAgLy8gRmlyc3QgbG9vcCBpcyBm
b3Igc3RyaW5ncy4gU2Vjb25kIGxvb3AgaXMgZm9yIHN5bWJvbHMgdG8ga2VlcCBzdGFuZGFyZGl6
ZWQgb3JkZXIgcmVxdWlyZW1lbnQgaW4gdGhlIHNwZWMuCkBAIC00MjYsMjggKzQyNSwyOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
clZhbHVlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0
YXJnZXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHRhcmdldFZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOwotICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJn
ZXRWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJh
bWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICBKU09iamVjdCogdGFyZ2V0
ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlB
cnJheShleGVjLCBudWxscHRyKTsKKyAgICBKU0FycmF5KiB2YWx1ZXMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXModm0sIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKLSAgICB0YXJn
ZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQsIGV4ZWMsIHBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRl
KSk7CisgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXModGFy
Z2V0LCBjYWxsRnJhbWUsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBhdXRvIGFkZFZhbHVlID0gWyZdIChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRh
cmdldCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsK
LSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAg
ICBib29sIGhhc1Byb3BlcnR5ID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0YXJnZXQsIGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgaWYgKCFoYXNQcm9w
ZXJ0eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1NiwxMiArNDU1LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgIGlmIChMSUtFTFkoIXNsb3Qu
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCi0gICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0
VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRW
YWx1ZShjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHZhbHVlID0gdGFyZ2V0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHZh
bHVlID0gdGFyZ2V0LT5nZXQoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIHZhbHVlcy0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgdmFsdWUpOworICAgICAgICB2YWx1ZXMtPnB1dERpcmVj
dEluZGV4KGNhbGxGcmFtZSwgaW5kZXgrKywgdmFsdWUpOwogICAgIH07CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7IGkgPCBudW1Q
cm9wZXJ0aWVzOyBpKyspIHsKQEAgLTU3NCwyNCArNTczLDI0IEBAIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmpl
Y3RzLiJfcyk7Ci0gICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlL
ZXkoZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm9wZXJ0
aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOworICAgIEpTT2JqZWN0KiBv
YmogPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGF1dG8gc3VjY2VzcyA9IHRvUHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKTsKKyAgICBh
dXRvIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJp
YnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlz
QWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmosIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgb2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KG9iaiwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRydWUpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG9iaikpOwogfQogCkBAIC02NDEsMzggKzY0MCwzOCBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQ
cm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHBy
bwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2Jq
ZWN0cy4iX3MpOwotICAgIEpTT2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSk7Ci0gICAgSlNPYmplY3QqIHByb3BzID0gZXhlYy0+YXJndW1lbnQoMSkudG9PYmpl
Y3QoZXhlYyk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm9wZXJ0
aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOworICAgIEpTT2JqZWN0KiB0
YXJnZXRPYmogPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBKU09iamVj
dCogcHJvcHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm9wcyk7CiAgICAg
aWYgKFVOTElLRUxZKCFwcm9wcykpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3Bl
cnRpZXMoZXhlYywgdGFyZ2V0T2JqLCBwcm9wcykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGNhbGxGcmFtZSwgdGFyZ2V0
T2JqLCBwcm9wcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAo
IXByb3RvLmlzT2JqZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUg
YW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0
IG9yIG51bGwuIl9zKTsKICAgICBKU09iamVjdCogbmV3T2JqZWN0ID0gcHJvdG8uaXNPYmplY3Qo
KQotICAgICAgICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0KHByb3RvKSkK
LSAgICAgICAgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCisgICAgICAgID8gY29uc3RydWN0RW1wdHlPYmpl
Y3QoY2FsbEZyYW1lLCBhc09iamVjdChwcm90bykpCisgICAgICAgIDogY29uc3RydWN0RW1wdHlP
YmplY3QoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwotICAgIEpTT2JqZWN0KiBw
cm9wZXJ0aWVzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9PYmplY3QoZXhlYyk7Cisg
ICAgSlNPYmplY3QqIHByb3BlcnRpZXMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRlZmlu
ZVByb3BlcnRpZXMoZXhlYywgbmV3T2JqZWN0LCBwcm9wZXJ0aWVzKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMoY2FsbEZy
YW1lLCBuZXdPYmplY3QsIHByb3BlcnRpZXMpKSk7CiB9CiAKIGVudW0gY2xhc3MgSW50ZWdyaXR5
TGV2ZWwgewpAQCAtNzkwLDE3ICs3ODksMTcgQEAgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9y
U2VhbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIG9iamVj
dDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNl
YWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvclNlYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gTy4KLSAgICBK
U1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvclNlYWwoZXhlYywgYXNPYmplY3Qob2Jq
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmpl
Y3RDb25zdHJ1Y3RvclNlYWwoY2FsbEZyYW1lLCBhc09iamVjdChvYmopKSkpOwogfQogCiBKU09i
amVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQpAQCAtODIyLDM2ICs4MjEsMzYgQEAgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9y
RnJlZXplKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
RnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgcmV0dXJuIE8uCi0g
ICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iaiA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBvYmpl
Y3RDb25zdHJ1Y3RvckZyZWV6ZShleGVjLCBhc09iamVjdChvYmopKTsKKyAgICBKU09iamVjdCog
cmVzdWx0ID0gb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoY2FsbEZyYW1lLCBhc09iamVjdChvYmop
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJl
dmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghYXJndW1lbnQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShh
cmd1bWVudCk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGFyZ3VtZW50KTsKLSAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBleGVj
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0
LCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JJc1NlYWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIAogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgcmV0
dXJuIHRydWUuCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwpAQCAtODYxLDE1ICs4NjAsMTUgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
b2JqZWN0LT5pc1NlYWxlZCh2bSkpKTsKIAogICAgIC8vIDIuIFJldHVybiA/IFRlc3RJbnRlZ3Jp
dHlMZXZlbChPLCAic2VhbGVkIikuCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4odGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGV4ZWMsIHZtLCBv
YmplY3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGVzdEludGVn
cml0eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGNhbGxGcmFtZSwgdm0sIG9iamVjdCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
RnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc0Zyb3plbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCwgcmV0dXJuIHRydWUuCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmou
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1
ZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwpAQCAtODc5LDI1ICs4
NzgsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
RnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5pc0Zyb3plbih2bSkpKTsKIAogICAgIC8vIDIuIFJldHVybiA/IFRl
c3RJbnRlZ3JpdHlMZXZlbChPLCAiZnJvemVuIikuCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4odGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpGcm96ZW4+KGV4
ZWMsIHZtLCBvYmplY3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dGVzdEludGVncml0eUxldmVsPEludGVncml0eUxldmVsOjpGcm96ZW4+KGNhbGxGcmFtZSwgdm0s
IG9iamVjdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvcklzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgb2JqID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwotICAg
IGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgYm9v
bCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzRXh0ZW5zaWJsZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5h
cmd1bWVudCgxKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzYW1l
VmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKSkpOwogfQogCiBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERv
bnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDNlMDY3
MjRjZWFjMzhhMTllODIyNzZiNGYzNzBmMDg1YmE1MWE3YmQuLjZlZjI0MzgzYTNhZDRmZGE3ZjE5
MGRhMDcyM2IxZTIzYjJjZTJmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMjYsMTEgKzI2LDExIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVj
U3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY2xhc3MgT2JqZWN0UHJvdG90
eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAppbmRleCAwMDA4NjZmZGU5ZDFjMjkxYTFmMmViMGM3Y2EzMWRjNWM0ZmU1ZjQ4Li5l
NWE5ZGFmZGUyZDcwNzc1NzA4N2Y1NGE2MDdhOTQ5NDUzMDljMjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTMzLDE1ICsz
MywxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNl
dHRlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1By
b3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9m
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKE9iamVjdFBy
b3RvdHlwZSk7CiAKQEAgLTc4LDI0ICs3OCwyNCBAQCBPYmplY3RQcm90b3R5cGUqIE9iamVjdFBy
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBKU09iamVjdCogdmFsdWVPYmogPSB0
aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOworICAgIEpTT2Jq
ZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIGlmIChV
TkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlT2JqKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmlj
dE1vZGUpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9w
ZXJ0eUtleShleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CisgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CkBAIC0xMDMsMzQgKzEwMywzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgSGFzT3duUHJvcGVy
dHlDYWNoZSogaGFzT3duUHJvcGVydHlDYWNoZSA9IHZtLmVuc3VyZUhhc093blByb3BlcnR5Q2Fj
aGUoKTsKICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJvcGVydHlDYWNo
ZS0+Z2V0KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBBU1NFUlQoKnJlc3Vs
dCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICAgICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoY2FsbEZy
YW1lLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oKnJlc3VsdCkpOwogICAg
IH0KIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYm9vbCByZXN1bHQgPSB0aGlz
T2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJv
b2wgcmVzdWx0ID0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgaGFzT3duUHJvcGVydHlDYWNoZS0+dHJ5QWRkKHZtLCBzbG90LCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmlj
dE1vZGUpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxG
cmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFsdWUgdiA9IGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBK
U1ZhbHVlIHYgPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBl
KHZtLCBjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTEzOCwyNSArMTM4LDI1IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogICAgICAgICBpZiAodiA9PSB0aGlzT2JqKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICB2ID0gYXNPYmpl
Y3QodiktPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgIHYgPSBhc09iamVjdCh2KS0+
Z2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGdl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
aWYgKGdldENhbGxEYXRhKHZtLCBnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJpbnZhbGlkIGdldHRl
ciB1c2FnZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJpbnZhbGlkIGdldHRlciB1c2FnZSJfcyk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwpAQCAtMTY2LDI1ICsxNjYsMjUgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91
bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHNldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOworICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEodm0sIHNldCwgY2FsbERhdGEp
ID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgImludmFsaWQgc2V0dGVyIHVzYWdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImludmFsaWQgc2V0dGVyIHVzYWdlIl9zKTsK
IAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7
CkBAIC0xOTQsMjQgKzE5NCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBib29sIHNob3Vs
ZFRocm93ID0gdHJ1ZTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGNhbGxGcmFtZSwgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsK
KyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKLSAgICBib29sIGhhc1By
b3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdldFByb3BlcnR5U2xv
dChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5KTsKICAgICBpZiAoaGFzUHJvcGVydHkp
IHsKICAgICAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKSB7CkBAIC0yMjEsNyArMjIxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc2xvdC5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjcmlwdG9yOwogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSk7Ci0g
ICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAgIGlmIChzbG90LnNs
b3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0dGVy
UHJlc2VudCgpID8gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3IuZ2V0dGVyKCkpIDogSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDE5ICsy
MjksMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Y2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJvcGVydHkgPSB0
aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICBib29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFt
ZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNl
cHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwogICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAg
ICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkpIHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvcikgewogICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2Ny
aXB0b3I7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpKTsKLSAgICAgICAgICAg
IGlmIChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQorICAgICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKS0+
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkg
PyBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5zZXR0ZXIoKSkgOiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTksNjQgKzI1OSw2NCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9w
ZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2NyaXB0b3I7Ci0gICAgYm9vbCBlbnVtZXJhYmxlID0gdGhpc09iamVjdC0+Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRv
ci5lbnVtZXJhYmxlKCk7CisgICAgYm9vbCBlbnVtZXJhYmxlID0gdGhpc09iamVjdC0+Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSAm
JiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihlbnVtZXJhYmxlKSk7CiB9CiAKIC8vIDE1LjIuNC4zIE9iamVjdC5wcm90b3R5cGUu
dG9Mb2NhbGVTdHJpbmcoKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBWIGJlIHRoZSB0aGlz
IHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gMi4g
SW52b2tlKFYsICJ0b1N0cmluZyIpCiAKICAgICAvLyBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCi0g
ICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMo
Y2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gTGV0IHRvU3Ry
aW5nIGJlIHRoZSBPLltbR2V0XV0oInRvU3RyaW5nIiwgVikKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZywgc2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IG9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcs
IHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNQ
cm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSB0b1N0cmluZyA9IGhhc1Byb3BlcnR5ID8gc2xvdC5nZXRW
YWx1ZShleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykgOiBqc1VuZGVmaW5lZCgpOwor
ICAgIEpTVmFsdWUgdG9TdHJpbmcgPSBoYXNQcm9wZXJ0eSA/IHNsb3QuZ2V0VmFsdWUoY2FsbEZy
YW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykgOiBqc1VuZGVmaW5lZCgpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gSWYg
SXNDYWxsYWJsZSh0b1N0cmluZykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlv
bi4KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCB0b1N0cmluZywgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAog
ICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGludGVybmFs
IG1ldGhvZCBvZiB0b1N0cmluZyBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFuZCBubyBhcmd1bWVu
dHMuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCB0b1N0cmluZywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxp
c3QpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2Fs
bChjYWxsRnJhbWUsIHRvU3RyaW5nLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZt
LmVtcHR5TGlzdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3MudW5k
ZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmluZygp
KTsKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUp
OwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVj
dCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMzI2LDI2ICszMjYsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAogICAgIFByb3BlcnR5TmFtZSB0
b1N0cmluZ1RhZ1N5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3Qt
PmdldFByb3BlcnR5U2xvdChleGVjLCB0b1N0cmluZ1RhZ1N5bWJvbCwgWyZdIChib29sIGZvdW5k
LCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGNhbGxGcmFtZSwgdG9TdHJpbmdUYWdTeW1ib2wsIFsmXSAoYm9vbCBmb3VuZCwgUHJv
cGVydHlTbG90JiB0b1N0cmluZ1RhZ1Nsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoZm91
bmQpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgc3RyaW5nVGFnID0gdG9TdHJpbmdUYWdTbG90Lmdl
dFZhbHVlKGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sKTsKKyAgICAgICAgICAgIEpTVmFsdWUgc3Ry
aW5nVGFnID0gdG9TdHJpbmdUYWdTbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgdG9TdHJpbmdUYWdT
eW1ib2wpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICAgICAgICAgIGlmIChzdHJpbmdUYWcuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIEpT
U3RyaW5nKiByZXN1bHQgPSBqc1N0cmluZyhleGVjLCB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3Ry
aW5nU3RhcnQoKSwgYXNTdHJpbmcoc3RyaW5nVGFnKSwgdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNo
YXJhY3RlclN0cmluZygnXScpKTsKKyAgICAgICAgICAgICAgICBKU1N0cmluZyogcmVzdWx0ID0g
anNTdHJpbmcoY2FsbEZyYW1lLCB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nU3RhcnQoKSwg
YXNTdHJpbmcoc3RyaW5nVGFnKSwgdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmlu
ZygnXScpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRv
U3RyaW5nVmFsdWUoZXhlYywgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKKyAgICAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVl
KGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgU3Ry
aW5nIHRhZyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9TdHJpbmdOYW1lKHRoaXNP
YmplY3QsIGV4ZWMpOworICAgICAgICBTdHJpbmcgdGFnID0gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT50b1N0cmluZ05hbWUodGhpc09iamVjdCwgY2FsbEZyYW1lKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgU3RyaW5nIG5ld1N0cmluZyA9
IHRyeU1ha2VTdHJpbmcoIltvYmplY3QgIiwgV1RGTW92ZSh0YWcpLCAiXSIpOwogICAgICAgICBp
ZiAoIW5ld1N0cmluZykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgbmV3U3RyaW5nKTsKLSAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+
c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3Qp
OworICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1Zh
bHVlKGNhbGxGcmFtZSwgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAppbmRleCBmMjc4ODZiYjI2NjY2NTA3Mzc2MDYxY2JkMDYy
MmZmMjJhZTRiMjMwLi5iOWFhNjQ5ZjYwYzA1MjlhMDYwNTU2ZTZlMjFkM2NjYzM3NzM0M2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaApA
QCAtNDUsNiArNDUsNiBAQCBjbGFzcyBPYmplY3RQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgT2JqZWN0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CiB9
OwogCi1KU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjc3Mzk1
NWFkOTk1YjZmZGM5NDgxMjM2OGU5NDA5M2ZmZWU0Njk5MS4uNDU4NmMxMzBkM2E2OWE4YTU3OGUx
ZDAwMjM4MmU2NTEzOGVkZGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ4LDMwICs0OCwzMCBAQCBQcm94eUNvbnN0
cnVjdG9yKiBQcm94eUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBQcm94eUNv
bnN0cnVjdG9yOjpQcm94eUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxQcm94eSwgY29uc3RydWN0UHJveHlPYmpl
Y3QpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VSZXZv
Y2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5LnJldm9jYWJsZSBu
ZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUg
aGFuZGxlciJfcyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlByb3h5LnJl
dm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0
IGFuZCB0aGUgaGFuZGxlciJfcyk7CiAKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgQXJn
TGlzdCBhcmdzKGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwog
ICAgIEpTVmFsdWUgaGFuZGxlciA9IGFyZ3MuYXQoMSk7Ci0gICAgUHJveHlPYmplY3QqIHByb3h5
ID0gUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHRhcmdldCwgaGFuZGxlcik7CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0gUHJveHlPYmplY3Q6
OmNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBQcm94eVJl
dm9rZSogcmV2b2tlID0gUHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5wcm94eVJldm9rZVN0cnVjdHVyZSgpLCBwcm94eSk7CisgICAgUHJveHlSZXZv
a2UqIHJldm9rZSA9IFByb3h5UmV2b2tlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJveHlS
ZXZva2VTdHJ1Y3R1cmUoKSwgcHJveHkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwg
InByb3h5IiksIHByb3h5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
Ok5vbmUpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgbWFrZUlkZW50aWZpZXIodm0sICJy
ZXZva2UiKSwgcmV2b2tlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
Ok5vbmUpKTsKQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJveHlSZXZvY2FibGVD
b25zdHJ1Y3RvclRocm93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
ZXhlYy0+dm0oKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQ
cm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxs
ZWQiX3MpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVj
dC0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlByb3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNh
bGxlZCJfcyk7CiB9CiAKIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAt
OTIsMjIgKzkyLDIyIEBAIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCoKICAgICBwdXREaXJlY3Qodm0s
IG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAyLCAicmV2b2NhYmxlIl9zLCBtYWtlUmV2b2NhYmxlUHJveHksIE5vSW50
cmluc2ljLCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcikpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKLSAgICBpZiAoZXhlYy0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJuZXcudGFyZ2V0IG9mIFByb3h5
IGNvbnN0cnVjdCBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBpZiAoY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAibmV3LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qg
c2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiX3MpOwogCi0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwor
ICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gYXJncy5h
dCgwKTsKICAgICBKU1ZhbHVlIGhhbmRsZXIgPSBhcmdzLmF0KDEpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFByb3h5T2JqZWN0OjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0YXJnZXQsIGhhbmRsZXIpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmplY3Q6OmNyZWF0
ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKSkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlByb3h5IikpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJQcm94eSIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZTM1ZDQ5NWFi
YzE2YjEwYzM3NjViMTk3ZGQwMmQxYzNkYjJmMjY0MC4uOGJlODE4Mjc5OTNiMjExNGQxZjE1YjA3
Mzc5N2M3MTViYzc5NDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcApAQCAtNTExLDQyICs1MTEsNDIgQEAgYm9vbCBQcm94eU9iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW0KICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBOT19UQUlMX0NBTExTKCk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nh
c3Q8UHJveHlPYmplY3QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBQcm94eU9iamVjdCogcHJv
eHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEpT
VmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZh
bHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4o
aGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxs
VHlwZTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMs
IGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJhcHBseSIpLCAiJ2FwcGx5
JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwor
ICAgIEpTVmFsdWUgYXBwbHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoY2FsbEZyYW1lLCBj
YWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiYXBwbHkiKSwgIidhcHBseScg
cHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gcHJveHktPnRhcmdldCgpOwogICAgIGlmIChhcHBseU1ldGhvZC5pc1Vu
ZGVmaW5lZCgpKSB7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh0YXJnZXQs
IGNhbGxEYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6
Ok5vbmUpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjYWxsKGV4ZWMsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBleGVjLT50aGlzVmFsdWUo
KSwgQXJnTGlzdChleGVjKSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CiAgICAgfQog
Ci0gICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2Fz
dDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoZXhlYykpOworICAg
IEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCBzdGF0aWNfY2Fz
dDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoY2FsbEZyYW1lKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFy
Z2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBFQ01BTW9kZTo6U3RyaWN0TW9kZSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBFQ01BTW9kZTo6U3RyaWN0TW9kZSkpOwog
ICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChleGVjLCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVy
LCBhcmd1bWVudHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChjYWxsRnJhbWUsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhh
bmRsZXIsIGFyZ3VtZW50cykpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlPYmplY3Q6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtNTYyLDQ1ICs1NjIsNDUg
QEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERh
dGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94
eUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBOT19UQUlMX0NBTExTKCk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vy
c2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAgICBQcm94eU9iamVjdCog
cHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBQcm94
eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBp
ZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0
PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBD
YWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAi
Y29uc3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBz
aG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgY29uc3RydWN0TWV0aG9kID0gaGFu
ZGxlci0+Z2V0TWV0aG9kKGNhbGxGcmFtZSwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRp
Zmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJveHkt
PnRhcmdldCgpOwogICAgIGlmIChjb25zdHJ1Y3RNZXRob2QuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgICAgIENvbnN0cnVjdFR5cGUg
Y29uc3RydWN0VHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRh
KHRhcmdldCwgY29uc3RydWN0RGF0YSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnN0cnVj
dFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXQsIGNvbnN0cnVj
dFR5cGUsIGNvbnN0cnVjdERhdGEsIEFyZ0xpc3QoZXhlYyksIGV4ZWMtPm5ld1RhcmdldCgpKSkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIEFy
Z0xpc3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpKTsKICAgICB9CiAKLSAg
ICBKU0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7CisgICAgSlNB
cnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUsIHN0YXRpY19jYXN0PEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQp
OwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQo
ZXhlYy0+bmV3VGFyZ2V0KCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgY29uc3RydWN0TWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNh
bGxGcmFtZSwgY29uc3RydWN0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFy
Z3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0
cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxl
cidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9zKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAppbmRleCBmODc1ZjY1ZDQ1MTM5NDk3MDY0ZDkzNmE5
NzRhNzlkZjYwOGVlYTRlLi43MDY2MmMwZThkOGMxNjY3YzBlNWIwNmUzZmEzYmVjNGZkOTdhMjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCkBA
IC00Miw3ICs0Miw3IEBAIFByb3h5UmV2b2tlKiBQcm94eVJldm9rZTo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3h5T2JqZWN0KiBwcm94CiAgICAgcmV0dXJuIHJldm9r
ZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
UmV2b2tlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cGVyZm9ybVByb3h5UmV2b2tlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFByb3h5
UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlLCBwZXJmb3JtUHJveHlSZXZva2UsIG51bGxwdHIpCkBAIC01Nywx
NSArNTcsMTUgQEAgdm9pZCBQcm94eVJldm9rZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25z
dCBjaGFyKiBuYW1lLCBQcm94eU9iamVjdCogcHJveHkpCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5UmV2b2tl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpzQ2FzdDxQcm94eVJldm9rZSo+KGV4ZWMt
PmpzQ2FsbGVlKCkpOworICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpzQ2FzdDxQcm94
eVJldm9rZSo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBwcm94eVZhbHVl
ID0gcHJveHlSZXZva2UtPnByb3h5KCk7CiAgICAgaWYgKHByb3h5VmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBQcm94
eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihwcm94eVZhbHVlKTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBwcm94eS0+cmV2b2tlKHZtKTsKICAgICBwcm94eVJldm9rZS0+c2V0UHJveHlUb051bGwodm0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDg1NjA5YjNj
MGZlODlhNjRkYmMzOGIxMzUyMWEwMGFhZjhhMjk4ZjAuLjg0NmQyOTM5MzJiNGYzZmU4MmQ3MDcx
ZTE0YmEwZGNiOGZiMjc1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwCkBAIC0zNCwxNiArMzQsMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RDb25z
dHJ1Y3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
T3duS2V5cyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90
eXBlT2YoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVP
ZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdE93bktleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdFNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlw
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODcsNTkgKzg3LDU5
IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCopCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLXJlZmxlY3QuY29uc3RydWN0Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJS
ZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1
Y3RvciJfcykpOwogCiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0
cnVjdFR5cGUgY29uc3RydWN0VHlwZTsKICAgICBpZiAoIXRhcmdldC5pc0NvbnN0cnVjdG9yKHZt
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0
cnVjdG9yIl9zKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKLSAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsK
KyAgICAgICAgbmV3VGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICAgICAgaWYg
KCFuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3Qg
cmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCJf
cykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFy
Z3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCJfcykpOwogICAgIH0KIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBKU09iamVjdCogYXJndW1lbnRzT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgxKSk7Cisg
ICAgSlNPYmplY3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKCFhcmd1bWVudHNPYmplY3QpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25k
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgY3JlYXRlTGlzdEZyb21BcnJheUxp
a2UoZXhlYywgYXJndW1lbnRzT2JqZWN0LCBSdW50aW1lVHlwZU1hc2tBbGxUeXBlcywgIlRoaXMg
ZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCAiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlz
ZWQiX3MsIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wgeworICAgIGNy
ZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGNhbGxGcmFtZSwgYXJndW1lbnRzT2JqZWN0LCBSdW50aW1l
VHlwZU1hc2tBbGxUeXBlcywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCAiVGhp
cyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiX3MsIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IChhcmd1bWVudHMub3ZlcmZsb3dDaGVja05vdE5lZWRlZCgpLCBlbmNvZGVkSlNWYWx1ZSgpKSk7
CiAgICAgaWYgKFVOTElLRUxZKGFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0
YSwgYXJndW1lbnRzLCBuZXdUYXJnZXQpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0LCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudHMsIG5ld1RhcmdldCkpKTsKIH0KIAogLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9wZXJ0eQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZWN0RGVmaW5lUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+
YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5kZWZpbmVQ
cm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Cisg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlL
ZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGJvb2wg
c3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBk
ZXNjcmlwdG9yKTsKKyAgICBib29sIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGRlc2NyaXB0b3IpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwogICAgIGlmIChVTkxJS0VM
WSghc3VjY2VzcykpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTQ5LDE0
MSArMTQ5LDE0MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RE
ZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eSBzaG91bGQgbm90IHRocm93IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93blByb3BlcnR5
IG9wZXJhdGlvbiBmYWlscy4KICAgICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7CiAgICAgSlNP
YmplY3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0T2JqZWN0LCBjYWxsRnJhbWUsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSkpOwogfQogCiAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmdldCBy
ZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAKLSAgICBjb25z
dCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlL
ZXkoZXhlYyk7CisgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgcmVjZWl2ZXIg
PSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKQotICAgICAgICBy
ZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA+PSAzKQorICAgICAgICByZWNlaXZlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7
CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUodGFyZ2V0LmdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0LmdldChjYWxsRnJh
bWUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgYXV0byBrZXkgPSBleGVjLT5hcmd1bWVudCgx
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8ga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoY2FsbEZyYW1lLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKSk7CiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0cHJvdG90eXBlb2YK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9m
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdEdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0YXJnZXQpLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlwZSh2bSwgY2FsbEZy
YW1lKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZs
ZWN0LmlzZXh0ZW5zaWJsZQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0Lmlz
RXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7
CiAKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IGFzT2JqZWN0KHRhcmdldCktPmlzRXh0ZW5zaWJs
ZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IGFzT2JqZWN0KHRhcmdldCktPmlzRXh0
ZW5zaWJsZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzRXh0
ZW5zaWJsZSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0Lm93bmtleXMKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dE93bktleXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0T3duS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpT
VmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVu
dCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0
KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkluY2x1ZGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwganNDYXN0
PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMs
IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dFByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgYm9vbCByZXN1bHQg
PSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBleGVj
KTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0
ZW5zaW9ucyhvYmplY3QsIGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ocmVzdWx0KSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2Vj
LXJlZmxlY3Quc2V0Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RT
ZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0
T2JqZWN0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0
Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3QiX3MpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3Qo
dGFyZ2V0KTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRh
cmdldDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDQpCi0gICAgICAgIHJlY2Vp
dmVyID0gZXhlYy0+YXJndW1lbnQoMyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgzKTsKIAog
ICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFwcGVuIGluIHN0
cmljdCBtb2RlLgogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZTsKICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJn
ZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBleGVjLT5hcmd1bWVudCgyKSwgc2xvdCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgyKSwgc2xvdCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlw
ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJS
ZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiX3MpKTsKLSAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJl
IGFuIG9iamVjdCJfcykpOworICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJS
ZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0
aGVyIGFuIG9iamVjdCBvciBudWxsIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBl
T2YgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51
bGwiX3MpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAg
ICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwotICAgIGJvb2wgZGlkU2V0UHJv
dG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvLCBzaG91bGRUaHJv
d0lmQ2FudFNldCk7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3Rv
dHlwZSh2bSwgY2FsbEZyYW1lLCBwcm90bywgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRpZFNldFByb3RvdHlwZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4
IGUzYmM4OTNmYjNjMmNhMGZkMDk5MGVmZTIwMTJkNTIwMzgyMjk5YzkuLjgzZGMxNTczMWE5NDUx
YmMzNmFiNzE2Y2FjYmIyYjM5MTJkZTEyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTc4LDggKzc4LDggQEAgY29u
c3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2kKICovCiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4
cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxSZWdFeHBDb25zdHJ1Y3RvciwgY29uc3RydWN0V2l0
aFJlZ0V4cENvbnN0cnVjdG9yKQpAQCAtMTAwLDUwICsxMDAsNDMgQEAgdm9pZCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFBy
b3RvdHlwZSwKIHRlbXBsYXRlPGludCBOPgogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JEb2xsYXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShn
bG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGV4ZWMsIGdsb2JhbE9i
amVjdCwgTikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25z
dHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVj
dG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmlu
cHV0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
RW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qo
dm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+cmVnRXhw
R2xvYmFsRGF0YSgpLm11bHRpbGluZSgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0QmFja3JlZihleGVj
LCBnbG9iYWxPYmplY3QsIDApKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRMYXN0UGFyZW4oZXhlYywgZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGVmdENv
bnRleHQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRMZWZ0Q29udGV4dChleGVjLCBnbG9iYWxP
YmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRl
eHQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxP
YmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRSaWdodENvbnRleHQoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKQEAgLTE1NSw3ICsxNDgsNyBAQCBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9y
SW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZQog
ICAgICAgICBhdXRvKiBzdHJpbmcgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvU3RyaW5nKGV4
ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuc2V0SW5wdXQoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzAsNyArMTYzLDcgQEAg
Ym9vbCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICAgICAgYm9vbCBtdWx0aWxpbmUgPSBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLnNl
dE11bHRpbGluZShtdWx0aWxpbmUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
NzcsMjQgKzI3MCwyMyBAQCBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQQogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgcmVnRXhwQ3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0
LCBwYXR0ZXJuQXJnLCBmbGFnc0FyZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIEpTVmFsdWUgcGF0dGVy
bkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgZmxhZ3NBcmcgPSBleGVjLT5h
cmd1bWVudCgxKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cENyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHBhdHRlcm5BcmcsIGZsYWdzQXJnKSk7Cisg
ICAgSlNWYWx1ZSBwYXR0ZXJuQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIGZsYWdzQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlZ0V4cENyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwganNVbmRlZmlu
ZWQoKSwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhS
ZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBleGVj
LT5qc0NhbGxlZSgpLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIEFyZ0xpc3QgYXJncyhjYWxs
RnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCksIGNhbGxGcmFt
ZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFy
Z3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoZXhl
YywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBleGVjLT5qc0NhbGxlZSgpKSk7CisgICAgQXJnTGlzdCBh
cmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdF
eHAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IDJlYjJjNjkzNDg1OGMxNmZmZjIyMzk1
MmM1OGY3Mjk3ZjUyN2U2NTYuLjk3NmU3YjZhZjgzYzE1MzBjNTIwMzQyN2E4MzlkNTNlMGFjZDFj
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuaApAQCAtNzUsNiArNzUsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNSZWdFeHAoVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG9iamVjdC0+
aW5oZXJpdHM8UmVnRXhwT2JqZWN0Pih2bSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZXNTcGVjUmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4ZDBlNWE5ZjBkNTcwNTlhMmY0YmYxNjUz
MzdlYmEwY2ViM2YxMWM5Li40YjhhZjA1YmU3NDUwNjNmNzAzN2Q1NzQzOGU3ZWYzNjUyZDVhY2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKQEAgLTQyLDE3ICs0MiwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0Nv
bXBpbGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVD
YXNlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jRXhlYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0
dGVyTXVsdGlsaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29k
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIFJlZ0V4cFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHBQcm90b3R5cGUpIH07
CiAKQEAgLTg2LDgzICs4Niw4MyBAQCB2b2lkIFJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jVGVzdEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhw
ID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXJlZ2V4cCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmdPck51bGwoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nT3JOdWxsKGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICFzdHJpbmcpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnRlc3QoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnRlc3QoY2FsbEZy
YW1lLCBnbG9iYWxPYmplY3QsIHN0cmluZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2
bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQnVpbHRpbiBSZWdFeHAgZXhlYyBjYW4g
b25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7Ci0gICAgSlNTdHJpbmcqIHN0cmlu
ZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQnVpbHRpbiBSZWdFeHAgZXhl
YyBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CisgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoY2FsbEZyYW1l
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXN0cmluZyk7
CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
cmVnZXhwLT5leGVjKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+
ZXhlYyhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgc3RyaW5nKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFz
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcq
PihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUmVnRXhwT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPnJlZ0V4cCgpLT5nbG9iYWwoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5leGVjKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzT2JqZWN0LT5tYXRjaEdsb2JhbChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHN0cmluZykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNP
YmplY3QtPmV4ZWMoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHN0cmluZykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bWF0Y2hHbG9iYWwoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIHN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8qIHRoaXNSZWdFeHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1JlZ0V4cCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBSZWdFeHAqIHJlZ0V4cDsKLSAg
ICBKU1ZhbHVlIGFyZzAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIGFyZzEgPSBl
eGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgYXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgCiAg
ICAgaWYgKGF1dG8qIHJlZ0V4cE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4o
dm0sIGFyZzApKSB7CiAgICAgICAgIGlmICghYXJnMS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJDYW5ub3Qgc3VwcGx5IGZs
YWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiJfcyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQ2Fubm90
IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4i
X3MpOwogICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFN0cmluZyBwYXR0ZXJuID0gYXJnMC5pc1VuZGVmaW5lZCgpID8gZW1wdHlT
dHJpbmcoKSA6IGFyZzAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJu
ID0gYXJnMC5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGFyZzAudG9XVEZTdHJpbmco
Y2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICAgICAgYXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IG1h
a2VPcHRpb25hbChPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdz
KGFyZzEudG9XVEZTdHJpbmcoZXhlYykpOworICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5pc1Vu
ZGVmaW5lZCgpID8gbWFrZU9wdGlvbmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlh
cnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmluZyhjYWxsRnJhbWUpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICgh
ZmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVh
dGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29u
c3RydWN0b3IuIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwgIkludmFsaWQgZmxhZ3Mgc3Vw
cGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcykpOwogCiAgICAgICAgIHJlZ0V4cCA9IFJl
Z0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBmbGFncy52YWx1ZSgpKTsKICAgICB9CiAKICAgICBp
ZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IHNjb3BlLCByZWdFeHAtPmVycm9yVG9UaHJvdyhleGVjKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coY2FsbEZyYW1l
KSk7CiAKICAgICB0aGlzUmVnRXhwLT5zZXRSZWdFeHAodm0sIHJlZ0V4cCk7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHRoaXNSZWdFeHAtPnNldExhc3RJbmRleChleGVjLCAwKTsKKyAgICB0
aGlzUmVnRXhwLT5zZXRMYXN0SW5kZXgoY2FsbEZyYW1lLCAwKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRoaXNSZWdFeHApOwogfQogCkBAIC0yMDcsMTQxICsyMDcsMTQxIEBAIHN0YXRp
YyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogcmVnZXhwKQogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCi0gICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBj
aGVja2VyKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hl
Y2tlcihjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKICAgICBpZiAoSlNW
YWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKLSAgICBKU1Zh
bHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
PnNvdXJjZSk7CisgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChjYWxs
RnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKKyAgICBKU1ZhbHVlIGZsYWdzVmFs
dWUgPSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5mbGFncyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
U3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcg
ZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICcvJywgc291cmNlLCAnLycsIGZsYWdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAnLycs
IHNvdXJjZSwgJy8nLCBmbGFncykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2JhbCBn
ZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnBy
b3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJl
Z2V4cC0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVn
RXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7
CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90
eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdl
eHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJl
Z0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5lIGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5t
dWx0aWxpbmUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvR2V0dGVyRG90QWxsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlz
VmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmRvdEFsbCBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlw
ZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3Mp
OwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdl
eHAtPnJlZ0V4cCgpLT5kb3RBbGwoKSkpOwogfQogICAgIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2Jq
ZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAg
ICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UmVnRXhwUHJvdG90eXBlPih2bSkpCiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0
aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVn
RXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4
cCBvYmplY3QiX3MpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5zdGlja3koKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0
PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhw
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0p
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnBy
b3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT51bmljb2RlKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJGbGFncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCJfcyk7CiAKLSAgICBhdXRvIGZsYWdzID0gZmxhZ3NT
dHJpbmcoZXhlYywgYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgYXV0byBmbGFncyA9IGZsYWdz
U3RyaW5nKGNhbGxGcmFtZSwgYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCBmbGFncy5kYXRhKCkpKTsKQEAgLTQ1NCwzNyArNDU0LDM2IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSByZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCByZXN1bHQu
dG9TdHJpbmcoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJjZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgIig/OikiX3MpKTsKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0
dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0
Il9zKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IHJlZ2V4cC0+cmVnRXhwKCktPnBh
dHRlcm4oKTsKICAgICBpZiAocGF0dGVybi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKGV4ZWMsIHBhdHRlcm4s
IHBhdHRlcm4uY2hhcmFjdGVyczgoKSwgcGF0dGVybi5sZW5ndGgoKSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJbnRlcm5hbChleGVjLCBwYXR0
ZXJuLCBwYXR0ZXJuLmNoYXJhY3RlcnMxNigpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJbnRlcm5hbChj
YWxsRnJhbWUsIHBhdHRlcm4sIHBhdHRlcm4uY2hhcmFjdGVyczgoKSwgcGF0dGVybi5sZW5ndGgo
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJ
bnRlcm5hbChjYWxsRnJhbWUsIHBhdHRlcm4sIHBhdHRlcm4uY2hhcmFjdGVyczE2KCksIHBhdHRl
cm4ubGVuZ3RoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNTZWFyY2hGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgUmVnRXhwKiByZWdFeHAgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhpc1ZhbHVlKS0+
cmVnRXhwKCk7CiAKLSAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMp
OworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvU3RyaW5nKGNhbGxGcmFtZSk7CisgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IGdsb2JhbE9iamVjdC0+cmVnRXhw
R2xvYmFsRGF0YSgpLnBlcmZvcm1NYXRjaCh2bSwgZ2xvYmFsT2JqZWN0LCByZWdFeHAsIHN0cmlu
ZywgcywgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBqc051bWJlcihyZXN1bHQu
c3RhcnQpIDoganNOdW1iZXIoLTEpKTsKQEAgLTU3OCwxOSArNTc3LDE5IEBAIHZvaWQgZ2VuZXJp
Y1NwbGl0KAogfQogCiAvLyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShz
dHJpbmcsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IHJ4
IGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElm
IFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBSZWdFeHAqIHJlZ2V4cCA9IGpz
Q2FzdDxSZWdFeHBPYmplY3QqPih0aGlzVmFsdWUpLT5yZWdFeHAoKTsKIAogICAgIC8vIDMuIFto
YW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5nKS4KLSAgICBK
U1N0cmluZyogaW5wdXRTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsK
LSAgICBTdHJpbmcgaW5wdXQgPSBpbnB1dFN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgSlNTdHJp
bmcqIGlucHV0U3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJh
bWUpOworICAgIFN0cmluZyBpbnB1dCA9IGlucHV0U3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEFT
U0VSVCghaW5wdXQuaXNOdWxsKCkpOwogCkBAIC02MDQsMTMgKzYwMywxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAvLyAxMS4gTGV0IEEgYmUgQXJyYXlDcmVhdGUoMCkuCiAgICAgLy8gMTIuIExl
dCBsZW5ndGhBIGJlIDAuCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNh
bGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAogICAgIC8vIDEzLiBJZiBs
aW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gYmUgMl4zMi0xOyBlbHNlIGxldCBsaW0gYmUgPyBU
b1VpbnQzMihsaW1pdCkuCi0gICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MSk7Ci0gICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZG
RkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgSlNWYWx1ZSBsaW1pdFZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0
VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJbnQzMihj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgLy8gMTQuIExldCBzaXplIGJlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4g
Uy4KQEAgLTYzMCw3ICs2MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIGMuIFBlcmZv
cm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KICAgICAgICAgLy8gZC4gUmV0dXJu
IEEuCiAgICAgICAgIGlmICghcmVnZXhwLT5tYXRjaCh2bSwgaW5wdXQsIDApKSB7Ci0gICAgICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGlucHV0U3RyaW5nKTsKKyAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCAwLCBpbnB1dFN0cmluZyk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC02NTIsNyArNjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIENvbnRp
bnVlU3BsaXQ7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoYm9vbCBpc0RlZmluZWQsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIC0+IFNwbGl0Q29udHJvbCB7Ci0gICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBpc0RlZmluZWQg
PyBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBzdGFydCwgbGVuZ3RoKSA6
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxs
RnJhbWUsIHJlc3VsdExlbmd0aCsrLCBpc0RlZmluZWQgPyBqc1N1YnN0cmluZ09mUmVzb2x2ZWQo
dm0sIGlucHV0U3RyaW5nLCBzdGFydCwgbGVuZ3RoKSA6IGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgQWJvcnRTcGxpdCk7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0TGVuZ3RoID49IGxpbWl0KQogICAgICAgICAgICAgICAgIHJldHVybiBBYm9y
dFNwbGl0OwpAQCAtNjY2LDcgKzY2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgLy8gMjAu
IExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25z
aXN0aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBz
aXplIChleGNsdXNpdmUpLgogICAgICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9w
ZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNT
dWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgcG9zaXRpb24sIGlucHV0U2l6ZSAt
IHBvc2l0aW9uKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBy
ZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHBvc2l0
aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikpOwogICAgICAgICAKICAgICAgICAgLy8gMjIuIFJl
dHVybiBBLgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC02OTEs
NyArNjkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNT
cGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9KTsKICAgICAKICAgICBpZiAocmVz
dWx0TGVuZ3RoICsgZHJ5UnVuQ291bnQgPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0g
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CiAgICAgfQogICAgIApAQCAtNzA1LDcgKzcwNCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNwbGl0OwogICAgICAgICB9LAogICAgICAg
ICBbJl0gKGJvb2wgaXNEZWZpbmVkLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKSAt
PiBTcGxpdENvbnRyb2wgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVj
LCByZXN1bHRMZW5ndGgrKywgaXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBp
bnB1dFN0cmluZywgc3RhcnQsIGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgrKywgaXNEZWZp
bmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgc3RhcnQsIGxlbmd0
aCkgOiBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEFib3J0U3BsaXQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+PSBsaW1pdCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gQWJvcnRTcGxpdDsKQEAgLTcxOSw3ICs3MTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgLy8gMjAuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRv
IHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2Vz
IHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBzaXplIChleGNsdXNpdmUpLgogICAgIC8vIDIxLiBQZXJm
b3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3Vs
dExlbmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgcG9zaXRpb24s
IGlucHV0U2l6ZSAtIHBvc2l0aW9uKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxs
RnJhbWUsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmlu
ZywgcG9zaXRpb24sIGlucHV0U2l6ZSAtIHBvc2l0aW9uKSk7CiAgICAgLy8gMjIuIFJldHVybiBB
LgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggNWI2NTk4NjZjMDBl
ODlhOGYxN2EwMTVjYmM1MTQ1YzI1OTljYWYwZC4uNDYwZTJhNDVhZGQ3MTM5MjQ4OWYwMWQyYmQw
N2UyZjhlZDE2YzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmgKQEAgLTUxLDkgKzUxLDkgQEAgY2xhc3MgUmVnRXhwUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVzdEZh
c3QoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
RnVuY01hdGNoRmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
RnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCA2MDJiZWQ5ZTVhNTdlMThm
YmU4MmJlNWQ3ODVmOTNhZDRmNDAyODA5Li5iMGRiMTU2ZjQ4OGQ2NDJlNmZlNzBkOGE1ODIzYTcx
MWExZGFlOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCkBAIC00Nyw3NCArNDcsNzMgQEAgdm9pZCBTZXRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSwgR2V0dGVyU2UK
ICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxTZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogU2V0Q29uc3RydWN0b3I6OlNldENvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTZXQs
IGNvbnN0cnVjdFNldCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNh
bGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXQiKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJTZXQiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBzZXRTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgaXRl
cmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSAKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1NldDo6Y3JlYXRl
KGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSkpKTsKIAogICAgIGlmIChhdXRvKiBpdGVyYWJs
ZVNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPih2bSwgaXRlcmFibGUpKSB7CiAgICAgICAgIGlm
IChpdGVyYWJsZVNldC0+Y2FuQ2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShzZXRTdHJ1Y3R1cmUp
KSAKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGl0ZXJhYmxlU2V0LT5jbG9uZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVTZXQt
PmNsb25lKGNhbGxGcmFtZSwgdm0sIHNldFN0cnVjdHVyZSkpKTsKICAgICB9CiAKLSAgICBKU1Nl
dCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKTsKKyAgICBKU1Nl
dCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzZXRTdHJ1Y3R1cmUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNW
YWx1ZSBhZGRlckZ1bmN0aW9uID0gc2V0LT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPmFkZCk7CisgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gc2V0LT5KU09iamVjdDo6
Z2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBp
ZiAoVU5MSUtFTFkoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBmb3JFYWNoSW5JdGVyYWJs
ZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRW
YWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNhbGxGcmFtZSwgaXRlcmFibGUsIFsmXShW
TSYsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIG5leHRWYWx1ZSkgewogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
bmV4dFZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICAgICAgY2FsbChleGVjLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUs
IGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgc2V0LCBhcmd1bWVudHMpOworICAgICAgICBjYWxsKGNh
bGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEsIHNldCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2V0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHlu
YW1pY0Nhc3Q8SlNTZXQqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIEpT
U2V0KiBzZXQgPSBqc0Nhc3Q8SlNTZXQqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihnbG9i
YWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBKU1NldCogc2V0
ID0ganNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
YXV0byogaGVhZCA9IHNldC0+aGVhZCgpOwogICAgIEFTU0VSVChoZWFkKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGhlYWQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQo
anNEeW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3Vt
ZW50KDApKSk7Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpT
U2V0OjpCdWNrZXRUeXBlKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7CiAgICAg
YnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgd2hpbGUgKGJ1Y2tldCkgewpAQCAtMTIyLDEz
ICsxMjEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1Nl
dEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShidWNrZXQpOwogICAgICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICB9
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnNlbnRpbmVsU2V0QnVja2V0
KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT52bSgpLnNlbnRp
bmVsU2V0QnVja2V0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0S2V5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1p
Y0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkp
OwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNE
eW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU1NldDo6QnVj
a2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChi
dWNrZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0LT5rZXkoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaAppbmRleCAz
ZjZlOGI5MjdiYzkyNTdkNTRmYmFkMWQxMmMxM2I3NTZlOWNjMzdjLi43MWFiNjk1MGZmNTc5NDdm
ZTk2YzEzMjlhMTVhYjE4NmE1ZTUwYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmgKQEAgLTU1LDggKzU1LDggQEAgY2xhc3MgU2V0Q29uc3Ry
dWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFNldFByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7
CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVj
a2V0SGVhZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJp
dmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDQ2ZjRiY2Qz
MzljMWQ3NmQ3MTRmNzg4MmRkNDQ1NDk2ODUwMjE0ZjEuLmM2NmQ5NWY2NTkxMWQxYzgyNjA3NDM1
NWVmMWI4OTgzYWY3OWEzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBTZXRQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpzX2luZm8sICZzZXRQcm90b3R5cGVU
YWJsCiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cm90b0Z1bmNBZGQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBTZXRQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
QEAgLTc2LDkgKzc2LDkgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgc2V0UHJvdG9GdW5jU2l6
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1Nl
dCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzQ2Vs
bCgpKSkgewpAQCAtOTIsNDQgKzkyLDQ0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTU2V0KiBn
ZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0FkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c2V0UHJvdG9GdW5jQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKLSAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgdGhpc1ZhbHVlKTsKKyAg
ICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
OwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIHNldC0+YWRkKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVhcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Nl
dCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
SlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgc2V0LT5jbGVhcihjYWxsRnJhbWUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNTZXQqIHNl
dCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTU2V0
KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNldC0+
cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1Nl
dCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
SlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
c2V0LT5oYXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoc2V0LT5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA2MmM0MjJjMTRjNjEyYzZkM2IwNzQyNzUyOWRh
NDAwZTkzNGIzNjYyLi4zMzFkNGIwMDcyMzQ1YTQ4NmE5YWQ5NGM3MTQ5NGJmZGVhOTUxZTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
RnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNTMsOCArNTMsOCBAQCBjb25zdCBDbGFzc0luZm8g
U3RyaW5nQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaQogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFN0cmluZ0Nv
bnN0cnVjdG9yKTsKIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3Ry
dWN0b3IpCkBAIC03MCwxNSArNzAsMTUgQEAgdm9pZCBTdHJpbmdDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBpZiAoTElLRUxZKGxlbmd0aCA9PSAxKSkgewogICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNvZGUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgdW5zaWduZWQgY29kZSA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICAgICAgLy8gTm90IGNo
ZWNraW5nIGZvciBhbiBleGNlcHRpb24gaGVyZSBpcyBvayBiZWNhdXNlIGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nIHdpbGwganVzdCBmZXRjaCBhbiB1bnVzZWQgc3RyaW5nIGlmIHRoZXJlJ3MgYW4g
ZXhjZXB0aW9uLgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKHZtLCBjb2RlKSk7CiAgICAgfQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgIExDaGFyKiBidWY4Qml0OwogICAgIGF1dG8gaW1wbDhCaXQgPSBTdHJpbmdJbXBs
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmOEJpdCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHN0
YXRpY19jYXN0PFVDaGFyPihleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1VJbnQzMihleGVj
KSk7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHN0YXRpY19jYXN0PFVDaGFyPihjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMyKGNhbGxGcmFtZSkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFpc0xhdGluMShjaGFyYWN0ZXIpKSkgewogICAgICAgICAgICAgVUNoYXIqIGJ1
ZjE2Qml0OwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYnVm
MTZCaXRbaV0gPSBjaGFyYWN0ZXI7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICBmb3Ig
KDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYnVmMTZCaXRbaV0gPSBzdGF0
aWNfY2FzdDxVQ2hhcj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50MzIoZXhlYykp
OworICAgICAgICAgICAgICAgIGJ1ZjE2Qml0W2ldID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgV1RGTW92ZShpbXBsMTZCaXQpKSkpOwpAQCAtMTEwLDIz
ICsxMTAsMjMgQEAgSlNTdHJpbmcqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4
ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKGV4ZWMtPnZtKCksIGFyZyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNvZGVQb2ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxk
ZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZG91YmxlIGNvZGVQb2ludEFzRG91YmxlID0gZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSBj
b2RlUG9pbnRBc0RvdWJsZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1i
ZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9
IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2Yg
Y29kZSBwb2ludHMiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJBcmd1bWVudHMgY29udGFp
biBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CiAKICAg
ICAgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CkBAIC0xMzksMTggKzEzOSwxNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEV4
ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgYnVpbGRlci50b1N0cmluZygpKSkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4o
ZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
Pm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3RyaW5nT2JqZWN0OjpjcmVh
dGUodm0sIHN0cnVjdHVyZSkpOwotICAgIEpTU3RyaW5nKiBzdHIgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogc3RyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoU3RyaW5nT2JqZWN0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgc3RyKSk7CiB9CkBA
IC0xNjMsMTIgKzE2MiwxMiBAQCBKU1N0cmluZyogc3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZyhl
eGVjKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN0cmlu
Z0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdDb25zdHJ1Y3Rvcihj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAppbmRleCA1ZmE5NTFhMGMxZjNjMTY1MGQyNGNhYWExNjAwNDY1YTVmY2E4
YzFjLi5jNzVkZmMwYjgwZmFhNTE3MDI3NWQ1M2Y1MTU2MjYxZDFkZDliYjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTYx
LDMwICs2MSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKFN0cmluZ1Byb3RvdHlwZSk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29k
ZVBvaW50QXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2Fz
ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2Fs
ZVVwcGVyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVHJpbShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVHJpbVN0YXJ0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0
aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSW5jbHVkZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0NvZGVQb2ludEF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhwKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGlj
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2Nh
bGVMb3dlckNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVHJpbShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVHJpbUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0VuZHNXaXRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05v
cm1hbGl6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiB9CiAKQEAgLTg0NiwzOCArODQ2LDM4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
aGVja09iamVjdENvZXJjaWJsZShKU1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRD
aGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gRm9yIGEgc3RyaW5nIHdoaWNoIGxlbmd0aCBpcyBz
aW5nbGUsIGluc3RlYWQgb2YgY3JlYXRpbmcgcm9wZXMsCiAgICAgLy8gYWxsb2NhdGluZyBhIHNl
cXVlbnRpYWwgYnVmZmVyIGFuZCBmaWxsIHdpdGggdGhlIHJlcGVhdGVkIHN0cmluZyBmb3IgZWZm
aWNpZW5jeS4KLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIEFT
U0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKIAotICAgIEFTU0VSVChleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1N0cmluZygpKTsKLSAgICBKU1N0cmluZyogc3RyaW5n
ID0gYXNTdHJpbmcoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVChjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzU3RyaW5nKCkpOworICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBB
U1NFUlQoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKTsKIAotICAgIEpTVmFsdWUgcmVwZWF0Q291bnRW
YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgcmVwZWF0Q291
bnRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQocmVwZWF0Q291bnRWYWx1ZS5pc051bWJlcigpKTsKICAgICBpbnQzMl90IHJlcGVhdENv
dW50OwogICAgIGRvdWJsZSB2YWx1ZSA9IHJlcGVhdENvdW50VmFsdWUuYXNOdW1iZXIoKTsKICAg
ICBpZiAodmFsdWUgPiBKU1N0cmluZzo6TWF4TGVuZ3RoKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKSk7CiAgICAgcmVwZWF0Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CiAg
ICAgQVNTRVJUKHJlcGVhdENvdW50ID49IDApOwogICAgIEFTU0VSVCghcmVwZWF0Q291bnRWYWx1
ZS5pc0RvdWJsZSgpIHx8IHJlcGVhdENvdW50VmFsdWUuYXNEb3VibGUoKSA9PSByZXBlYXRDb3Vu
dCk7CiAKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcoZXhlYyk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHN0cmluZy0+dmlld1dp
dGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmll
d1dpdGhTdHJpbmcudmlldzsKICAgICBBU1NFUlQodmlldy5sZW5ndGgoKSA9PSAxKTsKICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIFVDaGFyIGNoYXJhY3RlciA9IHZpZXdbMF07
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmIChpc0xhdGluMShjaGFyYWN0ZXIpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqZXhlYywgc3RhdGlj
X2Nhc3Q8TENoYXI+KGNoYXJhY3RlciksIHJlcGVhdENvdW50KSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmV4ZWMsIGNoYXJhY3RlciwgcmVwZWF0Q291bnQp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmNhbGxG
cmFtZSwgc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlciksIHJlcGVhdENvdW50KSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmNhbGxGcmFtZSwgY2hhcmFj
dGVyLCByZXBlYXRDb3VudCkpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNl
KApAQCAtOTAyLDMwICs5MDIsMzAgQEAgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZSgK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlcGxhY2Uodm0sIGV4ZWMsIHN0cmluZywg
c2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2lu
Z1JlZ0V4cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyk7Cisg
ICAgSlNTdHJpbmcqIHN0cmluZyA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIEpTVmFsdWUgc2VhcmNoVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBK
U1ZhbHVlIHNlYXJjaFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXNl
YXJjaFZhbHVlLmluaGVyaXRzPFJlZ0V4cE9iamVjdD4odm0pKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBleGVjLCBz
dHJpbmcsIHNlYXJjaFZhbHVlLCBleGVjLT5hcmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2go
dm0sIGNhbGxGcmFtZSwgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNTdHJpbmcq
IHN0cmluZyA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdTdHJp
bmdTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCh2bSwgY2FsbEZyYW1lLCBzdHJpbmcsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYygKQEAg
LTk0MCwxMiArOTQwLDEyIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlR2VuZXJpYygKICAgICAgICAgSlNWYWx1ZTo6ZGVjb2RlKHJlcGxhY2VW
YWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgLy8g
QWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0cmluZygpKQpA
QCAtOTU1LDU0ICs5NTUsNTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHN0cmluZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdPYmplY3QtPmludGVybmFsVmFs
dWUoKSk7CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwot
ICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBTdHJpbmdWaWV3IHZpZXcgPSB2aWV3V2l0aFN0cmluZy52aWV3OwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUgYTAgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gYTAuYXNVSW50
MzIoKTsKICAgICAgICAgaWYgKGkgPCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgdmlld1tpXSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKICAgICB9
Ci0gICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIGRwb3Mg
PSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZHBvcyA+PSAwICYmIGRwb3MgPCB2aWV3Lmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKHZtLCB2aWV3W3N0YXRpY19jYXN0PHVuc2lnbmVkPihkcG9zKV0pKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVB
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSB0aGlz
VmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmlld1dpdGhTdHJpbmcudmlldzsKLSAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9
IGEwLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChpIDwgdmlldy5sZW5ndGgoKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlld1tpXSkpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIH0KLSAgICBkb3VibGUgZHBvcyA9
IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZHBvcyA9IGEwLnRvSW50ZWdlcihjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IHZpZXcubGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlld1tzdGF0aWNfY2FzdDxpbnQ+KGRwb3Mp
XSkpOwpAQCAtMTAxOSwyMCArMTAxOSwyMCBAQCBzdGF0aWMgaW5saW5lIFVDaGFyMzIgY29kZVBv
aW50QXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZwogICAg
IHJldHVybiBjaGFyYWN0ZXI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jQ29kZVBvaW50QXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBTdHJpbmcgc3RyaW5n
ID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCk7CiAKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoYXJn
dW1lbnQwLmlzVUludDMyKCkpIHsKICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBhcmd1bWVu
dDAuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuZ3RoKQpAQCAtMTA0Miwy
OCArMTA0MiwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgZG91YmxlIGRvdWJsZVBvc2l0aW9uID0g
YXJndW1lbnQwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZG91YmxlUG9zaXRpb24gPSBh
cmd1bWVudDAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGRvdWJsZVBvc2l0aW9uID49IDAgJiYg
ZG91YmxlUG9zaXRpb24gPCBsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoY29kZVBvaW50QXQoc3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZG91Ymxl
UG9zaXRpb24pLCBsZW5ndGgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYTAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOwogCi0gICAgSlNTdHJpbmcqIHRoaXNKU1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKTsKKyAgICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKTsK
KyAgICBKU1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB1
bnNpZ25lZCBwb3MgPSAwOwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgaWYgKGExLmlzVUludDMyKCkpCiAgICAgICAgICAgICBwb3MgPSBzdGQ6Om1pbjx1aW50MzJf
dD4oYTEuYXNVSW50MzIoKSwgbGVuKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkb3Vi
bGUgZHBvcyA9IGExLnRvSW50ZWdlcihleGVjKTsKKyAgICAgICAgICAgIGRvdWJsZSBkcG9zID0g
YTEudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkcG9zIDwgMCkKICAg
ICAgICAgICAgICAgICBkcG9zID0gMDsKQEAgLTEwODYsOSArMTA4Niw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaWYgKHRoaXNKU1N0cmluZy0+bGVuZ3RoKCkgPCBvdGhlckpTU3RyaW5nLT5sZW5ndGgo
KSArIHBvcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwog
Ci0gICAgYXV0byB0aGlzVmlld1dpdGhTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZpZXdXaXRoVW5k
ZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHRoaXNWaWV3V2l0aFN0cmluZyA9IHRoaXNK
U1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvdGhlclZp
ZXdXaXRoU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4
ZWMpOworICAgIGF1dG8gb3RoZXJWaWV3V2l0aFN0cmluZyA9IG90aGVySlNTdHJpbmctPnZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNpemVfdCByZXN1bHQgPSB0aGlzVmlld1dp
dGhTdHJpbmcudmlldy5maW5kKG90aGVyVmlld1dpdGhTdHJpbmcudmlldywgcG9zKTsKICAgICBp
ZiAocmVzdWx0ID09IG5vdEZvdW5kKQpAQCAtMTA5NiwyNSArMTA5NiwyNSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNW
YWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYTEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwog
Ci0gICAgSlNTdHJpbmcqIHRoaXNKU1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsK
KyAgICBKU1N0cmluZyogdGhpc0pTU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgdW5zaWduZWQgbGVuID0gdGhpc0pTU3RyaW5nLT5sZW5ndGgoKTsKLSAgICBKU1N0cmluZyog
b3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBvdGhlckpT
U3RyaW5nID0gYTAudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGRvdWJsZSBkcG9zID0gYTEudG9JbnRl
Z2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXJQcmVz
ZXJ2ZU5hTihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb247CiAgICAgaWYgKGRwb3Mg
PCAwKQpAQCAtMTEyNyw5ICsxMTI3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGxlbiA8
IG90aGVySlNTdHJpbmctPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKC0xKSk7CiAKLSAgICBTdHJpbmcgdGhpc1N0cmluZyA9IHRoaXNKU1N0cmluZy0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHRoaXNTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZhbHVl
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgU3RyaW5nIG90aGVyU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmFsdWUoZXhl
Yyk7CisgICAgU3RyaW5nIG90aGVyU3RyaW5nID0gb3RoZXJKU1N0cmluZy0+dmFsdWUoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBzaXplX3QgcmVzdWx0OwogICAgIGlmICghc3RhcnRQb3NpdGlvbikKQEAgLTExNDEsMjkg
KzExNDEsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1Zh
bHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAK
ICAgICBpbnQgbGVuZ3RoID0gc3RyaW5nLT5sZW5ndGgoKTsKICAgICBSRUxFQVNFX0FTU0VSVChs
ZW5ndGggPj0gMCk7CiAKICAgICAvLyBUaGUgYXJnIHByb2Nlc3NpbmcgaXMgdmVyeSBtdWNoIGxp
a2UgQXJyYXlQcm90b0Z1bmM6OlNsaWNlCi0gICAgZG91YmxlIHN0YXJ0ID0gYTAudG9JbnRlZ2Vy
KGV4ZWMpOworICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGRvdWJs
ZSBlbmQgPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuZ3RoIDogYTEudG9JbnRlZ2VyKGV4ZWMpOwor
ICAgIGRvdWJsZSBlbmQgPSBhMS5pc1VuZGVmaW5lZCgpID8gbGVuZ3RoIDogYTEudG9JbnRlZ2Vy
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3Ry
aW5nU2xpY2UoZXhlYywgdm0sIHN0cmluZywgbGVuZ3RoLCBzdGFydCwgZW5kKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKGNhbGxG
cmFtZSwgdm0sIHN0cmluZywgbGVuZ3RoLCBzdGFydCwgZW5kKSkpOwogfQogCiAvLyBSZXR1cm4g
dHJ1ZSBpbiBjYXNlIG9mIGVhcmx5IHJldHVybiAocmVzdWx0TGVuZ3RoIGdvdCB0byBsaW1pdExl
bmd0aCkuCkBAIC0xMjAyLDMwICsxMjAyLDMwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
c3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGwoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5CiB9
CiAKIC8vIEVTIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGlt
aXQpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgQVNTRVJUKGNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCiAgICAgLy8gMy4gTGV0IFMgYmUgdGhlIHJl
c3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFsdWUgYXMgaXRz
IGFyZ3VtZW50LgogICAgIC8vIDcuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biBTLgotICAgIFN0cmluZyBpbnB1dCA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAg
ICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQo
IWlucHV0LmlzTnVsbCgpKTsKIAogICAgIC8vIDQuIExldCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0
ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFycmF5KCkKICAgICAvLyAgICB3aGVyZSBB
cnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29uc3RydWN0b3Igd2l0aCB0aGF0IG5hbWUu
Ci0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgMCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAv
LyA1LiBMZXQgbGVuZ3RoQSBiZSAwLgogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CiAK
ICAgICAvLyA2LiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gPSAyXjMyLTE7IGVsc2Ug
bGV0IGxpbSA9IFRvVWludDMyKGxpbWl0KS4KLSAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0VmFsdWUu
aXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJbnQzMihleGVjKTsK
KyAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
OworICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZG
RkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA4LiBMZXQgcCA9IDAu
CkBAIC0xMjMzLDggKzEyMzMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyA5LiBJZiBzZXBh
cmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdFeHAiKSwgbGV0
IFIgPSBzZXBhcmF0b3I7CiAgICAgLy8gICAgb3RoZXJ3aXNlIGxldCBSID0gVG9TdHJpbmcoc2Vw
YXJhdG9yKS4KLSAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7Ci0gICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvV1RGU3Ry
aW5nKGV4ZWMpOworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOworICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMTAuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KQEAg
LTEyNDUsNyArMTI0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoc2VwYXJhdG9yVmFsdWUu
aXNVbmRlZmluZWQoKSkgewogICAgICAgICAvLyBhLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3Bl
cnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwg
anNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgMCwganNTdHJpbmdXaXRoUmV1c2UoY2FsbEZy
YW1lLCB0aGlzVmFsdWUsIGlucHV0KSk7CiAgICAgICAgIC8vIGIuIFJldHVybiBBLgogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTI1OCw3ICsxMjU4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZh
c3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyBkLiBSZXR1cm4gQS4KICAgICAgICAgaWYg
KCFzZXBhcmF0b3IuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJl
dXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoY2FsbEZyYW1lLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShjYWxsRnJhbWUsIHRoaXNW
YWx1ZSwgaW5wdXQpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICBBU1NFUlQobGltaXQpOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcG9zaXRpb24sIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHZt
LCBpbnB1dFtwb3NpdGlvbl0pKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
Y2FsbEZyYW1lLCBwb3NpdGlvbiwganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIGlucHV0W3Bv
c2l0aW9uXSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIH0gd2hpbGUgKCsrcG9zaXRpb24gPCBsaW1pdCk7CiAKQEAg
LTEyOTMsMTAgKzEyOTMsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgc2VwYXJhdG9y
Q2hhcmFjdGVyID0gc2VwYXJhdG9ySW1wbC0+Y2hhcmFjdGVyczE2KClbMF07CiAKICAgICAgICAg
aWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdC
eU9uZUNoYXJhY3RlckltcGw8TENoYXI+KGV4ZWMsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwg
c3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBs
aW1pdCkpIAorICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPExD
aGFyPihjYWxsRnJhbWUsIHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2Vw
YXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIAogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVD
aGFyYWN0ZXJJbXBsPFVDaGFyPihleGVjLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmlu
Z0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQp
KSAKKyAgICAgICAgICAgIGlmIChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxVQ2hhcj4o
Y2FsbEZyYW1lLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRv
ckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsK
ICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTEzMTEsOSArMTMxMSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAg
IC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2Yg
UyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUp
CiAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCiAgICAgICAgICAgICAv
LyAyLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCi0g
ICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUs
IGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGF1dG8qIHN1YnN0cmluZyA9IGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1
dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1YnN0cmluZyk7CisgICAgICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0TGVuZ3RoLCBzdWJzdHJpbmcpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAg
IC8vIDMuIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCiAgICAgICAgICAgICAvLyA0LiBJZiBsZW5n
dGhBID09IGxpbSwgcmV0dXJuIEEuCkBAIC0xMzI5LDIzICsxMzI5LDIzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0
cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGlu
Y2x1c2l2ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgogICAgIC8vIDE2LiBD
YWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCi0gICAgYXV0
byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRp
b24sIGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pOworICAgIGF1dG8qIHN1YnN0cmluZyA9IGpz
U3Vic3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIGlucHV0Lmxl
bmd0aCgpIC0gcG9zaXRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
cmVzdWx0TGVuZ3RoKyssIHN1YnN0cmluZyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChj
YWxsRnJhbWUsIHJlc3VsdExlbmd0aCsrLCBzdWJzdHJpbmcpOwogCiAgICAgLy8gMTcuIFJldHVy
biBBLgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHN0cmluZ1Byb3RvRnVuY1N1YnN0ckltcGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgIHVuc2ln
bmVkIGxlbjsKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5n
OwpAQCAtMTM1MywxNyArMTM1MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGpzU3RyaW5nID0g
YXNTdHJpbmcodGhpc1ZhbHVlKTsKICAgICAgICAgbGVuID0ganNTdHJpbmctPmxlbmd0aCgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CisgICAgICAgIHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIGxlbiA9IHVTdHJpbmcubGVuZ3RoKCk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSBhMCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsK
KyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGEx
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50
ZWdlcihleGVjKTsKKyAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBk
b3VibGUgbGVuZ3RoID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6IGExLnRvSW50ZWdlcihleGVj
KTsKKyAgICBkb3VibGUgbGVuZ3RoID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6IGExLnRvSW50
ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGlmIChzdGFydCA+PSBsZW4gfHwgbGVuZ3RoIDw9IDApCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyh2bSkpOwpAQCAtMTM3OCwxMSAr
MTM3OCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1
YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlm
IChqc1N0cmluZykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhl
eGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGNhbGxGcmFtZSwganNTdHJpbmcs
IHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3Vic3RyaW5nKHZtLCB1U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5n
TGVuZ3RoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBzdHJpbmdQcm90b0Z1bmNTdWJz
dHJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gQHN1YnN0ckludGVy
bmFsIHNob3VsZCBub3QgaGF2ZSBhbnkgb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMgKGUuZy4gaXQg
c2hvdWxkIG5vdCBjYWxsCiAgICAgLy8gR2V0TWV0aG9kKC4uLiwgQEB0b1ByaW1pdGl2ZSkgb24g
dGhlIHRoaXNWYWx1ZSkuCkBAIC0xMzkyLDI4ICsxMzk3LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAvLyBndWFyYW50ZWUgdGhhdCB3ZSBvbmx5IHBhc3MgaXQgYSBzdHJpbmcgdGhpc1ZhbHVl
LiBBcyBhIHJlc3VsdCwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyCiAgICAgLy8gd2lsbCBub3QgbmVl
ZCB0byBjYWxsIHRvU3RyaW5nKCkgb24gdGhlIHRoaXNWYWx1ZSwgYW5kIHRoZXJlIHdpbGwgYmUg
bm8gb2JzZXJ2YWJsZQogICAgIC8vIHNpZGUtZWZmZWN0cy4KLSAgICBBU1NFUlQoZXhlYy0+dGhp
c1ZhbHVlKCkuaXNTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihl
eGVjKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5pc1N0cmluZygpKTsKKyAg
ICByZXR1cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
Y2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJp
bmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1Zh
bHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAg
ICAgaW50IGxlbiA9IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICBSRUxFQVNFX0FTU0VSVChsZW4g
Pj0gMCk7CiAKLSAgICBkb3VibGUgc3RhcnQgPSBhMC50b051bWJlcihleGVjKTsKKyAgICBkb3Vi
bGUgc3RhcnQgPSBhMC50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRvdWJsZSBlbmQ7CiAgICAgaWYgKCEo
c3RhcnQgPj0gMCkpIC8vIGNoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb3IgTmFOCkBAIC0xNDIz
LDcgKzE0MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGExLmlzVW5kZWZpbmVkKCkpCiAg
ICAgICAgIGVuZCA9IGxlbjsKICAgICBlbHNlIHsgCi0gICAgICAgIGVuZCA9IGExLnRvTnVtYmVy
KGV4ZWMpOworICAgICAgICBlbmQgPSBhMS50b051bWJlcihjYWxsRnJhbWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KCEoZW5kID49IDApKSAvLyBjaGVjayBmb3IgbmVnYXRpdmUgdmFsdWVzIG9yIE5hTgogICAgICAg
ICAgICAgZW5kID0gMDsKQEAgLTE0MzcsMjAgKzE0NDIsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAg
IH0KICAgICB1bnNpZ25lZCBzdWJzdHJpbmdTdGFydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCk7CiAgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVuZCkgLSBzdWJzdHJpbmdTdGFydDsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3Rh
cnQsIHN1YnN0cmluZ0xlbmd0aCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhjYWxsRnJhbWUsIGpzU3RyaW5nLCBzdWJzdHJpbmdT
dGFydCwgc3Vic3RyaW5nTGVuZ3RoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNT
dHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEpTU3RyaW5nKiBzVmFsID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgU3RyaW5nIGxvd2VyY2Fz
ZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAo
bG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCkBAIC0xNDU4LDE3ICsxNDYzLDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNh
c2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBsb3dlcmNhc2VkU3RyaW5nKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9V
cHBlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAg
IEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHMg
PSBzVmFsLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHNWYWwtPnZhbHVlKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgU3RyaW5nIHVwcGVyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRM
b2NhbGUoKTsKICAgICBpZiAodXBwZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCkBA
IC0xNDc2LDQ0ICsxNDgxLDQzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB1cHBlcmNhc2VkU3RyaW5n
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xv
Y2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMSBTdHJpbmcucHJvdG90
eXBlLmxvY2FsZUNvbXBhcmUgKHRoYXQgWywgbG9jYWxlcyBbLCBvcHRpb25zIF1dKSAoRUNNQS00
MDIgMi4wKQogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9u
cy9zdGFuZGFyZHMvRWNtYS00MDIuaHRtCiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNp
YmxlKHRoaXMgdmFsdWUpLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBh
cmUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlN0cmluZy5w
cm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQiX3MpOwogCiAgICAgLy8gMi4gTGV0IFMgYmUgVG9TdHJpbmcoTykuCiAgICAg
Ly8gMy4gUmV0dXJuSWZBYnJ1cHQoUykuCi0gICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICAvLyA0LiBMZXQgVGhhdCBiZSBUb1N0cmluZyh0aGF0KS4KICAgICAv
LyA1LiBSZXR1cm5JZkFicnVwdChUaGF0KS4KLSAgICBKU1ZhbHVlIHRoYXRWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOwotICAgIFN0cmluZyB0aGF0ID0gdGhhdFZhbHVlLnRvV1RGU3RyaW5nKGV4
ZWMpOworICAgIEpTVmFsdWUgdGhhdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBTdHJpbmcgdGhhdCA9IHRoYXRWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAjaWYgRU5BQkxF
KElOVEwpCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKLSAgICBKU1ZhbHVlIGxvY2FsZXMgPSBleGVjLT5hcmd1bWVudCgxKTsK
LSAgICBKU1ZhbHVlIG9wdGlvbnMgPSBleGVjLT5hcmd1bWVudCgyKTsKKyAgICBKU1ZhbHVlIGxv
Y2FsZXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IG51bGxw
dHI7CiAgICAgaWYgKGxvY2FsZXMuaXNVbmRlZmluZWQoKSAmJiBvcHRpb25zLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgY29sbGF0b3IgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2xsYXRvcihl
eGVjKTsKKyAgICAgICAgY29sbGF0b3IgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2xsYXRvcihj
YWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmNvbGxhdG9yU3RydWN0dXJlKCkpOwotICAgICAgICBj
b2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpleGVjLCBsb2NhbGVzLCBvcHRpb25zKTsKKyAg
ICAgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqY2FsbEZyYW1lLCBsb2NhbGVzLCBv
cHRpb25zKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqZXhlYywgc3RyaW5nLCB0aGF0KSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21w
YXJlU3RyaW5ncygqY2FsbEZyYW1lLCBzdHJpbmcsIHRoYXQpKSk7CiAjZWxzZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoQ29sbGF0b3IoKS5jb2xsYXRlKHN0cmluZywgdGhh
dCkpKTsKICNlbmRpZgpAQCAtMTUyNSw5ICsxNTI5LDkgQEAgZW51bSBjbGFzcyBDYXNlQ29udmVy
c2lvbk1vZGUgewogICAgIExvd2VyLAogfTsKIHRlbXBsYXRlPENhc2VDb252ZXJzaW9uTW9kZSBt
b2RlPgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3RhdGUqIHN0YXRl
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvIGNvbnZlcnRDYXNlID0gWyZdIChhdXRv
JiYuLi4gYXJncykgewpAQCAtMTYxNSwxOSArMTYxOSwxOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNl
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEzLjEuMiBTdHJpbmcucHJvdG90eXBlLnRv
TG9jYWxlTG93ZXJDYXNlIChbbG9jYWxlc10pCiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRp
b25hbC5vcmcvcHVibGljYXRpb25zL3N0YW5kYXJkcy9FY21hLTQwMi5odG0KLSAgICByZXR1cm4g
dG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXI+KHN0YXRlKTsKKyAgICByZXR1
cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXI+KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAxMy4x
LjMgU3RyaW5nLnByb3RvdHlwZS50b0xvY2FsZVVwcGVyQ2FzZSAoW2xvY2FsZXNdKQogICAgIC8v
IGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9zdGFuZGFyZHMvRWNt
YS00MDIuaHRtCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpbnRlcnByZXRzIGEgc3RyaW5nIHZhbHVl
IGFzIGEgc2VxdWVuY2Ugb2YgY29kZSBwb2ludHMsIGFzIGRlc2NyaWJlZCBpbiBFUzIwMTUsIDYu
MS40LiBUaGlzIGZ1bmN0aW9uIGJlaGF2ZXMgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgU3Ry
aW5nLnByb3RvdHlwZS50b0xvY2FsZUxvd2VyQ2FzZSwgZXhjZXB0IHRoYXQgY2hhcmFjdGVycyBh
cmUgbWFwcGVkIHRvIHRoZWlyIHVwcGVyY2FzZSBlcXVpdmFsZW50cyBhcyBzcGVjaWZpZWQgaW4g
dGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlLgotICAgIHJldHVybiB0b0xvY2FsZUNhc2U8
Q2FzZUNvbnZlcnNpb25Nb2RlOjpVcHBlcj4oc3RhdGUpOworICAgIHJldHVybiB0b0xvY2FsZUNh
c2U8Q2FzZUNvbnZlcnNpb25Nb2RlOjpVcHBlcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCkBAIC0xNjY0LDIyICsxNjY4LDIyIEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlz
VmFsdWUsIGludCB0cmltS2luCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmlu
Zyh2bSwgc3RyLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGxlZnQsIHJpZ2h0IC0gbGVmdCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VHJpbShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgVHJpbVN0YXJ0IHwgVHJpbUVuZCkpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIFRyaW1T
dGFydCB8IFRyaW1FbmQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNUcmltU3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltU3RhcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhleGVjLCB0aGlz
VmFsdWUsIFRyaW1TdGFydCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoY2FsbEZy
YW1lLCB0aGlzVmFsdWUsIFRyaW1TdGFydCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoZXhl
YywgdGhpc1ZhbHVlLCBUcmltRW5kKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhj
YWxsRnJhbWUsIHRoaXNWYWx1ZSwgVHJpbUVuZCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgbWlu
LCB1bnNpZ25lZCBtYXgpCkBAIC0xNjkxLDc2ICsxNjk1LDc2IEBAIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQoZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBt
aW4sIHVuCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1N0YXJ0c1dpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAg
IEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGJvb2wgaXNSZWd1bGFy
RXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBjYWxsRnJhbWUsIGEwKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhw
cmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJB
cmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhw
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJB
cmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhw
Iik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1Zh
bHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBwb3NpdGlv
bkFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwog
ICAgIGlmIChwb3NpdGlvbkFyZy5pc0ludDMyKCkpCiAgICAgICAgIHN0YXJ0ID0gc3RkOjptYXgo
MCwgcG9zaXRpb25BcmcuYXNJbnQzMigpKTsKICAgICBlbHNlIHsKICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gc3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKLSAgICAgICAgc3RhcnQgPSBjbGFt
cEFuZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoZXhlYyksIDAsIGxl
bmd0aCk7CisgICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRp
b25BcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSksIDAsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uaGFzSW5maXhTdGFy
dGluZ0F0KHNlYXJjaFN0cmluZywgc3RhcnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBTdHJpbmcg
c3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVz
c2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAo
dm0sIGNhbGxGcmFtZSwgYTApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5nIHNlYXJjaFN0
cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBh
MC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nVG9TZWFy
Y2hJbi5sZW5ndGgoKTsKIAotICAgIEpTVmFsdWUgZW5kUG9zaXRpb25BcmcgPSBleGVjLT5hcmd1
bWVudCgxKTsKKyAgICBKU1ZhbHVlIGVuZFBvc2l0aW9uQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKICAgICB1bnNpZ25lZCBlbmQgPSBsZW5ndGg7CiAgICAgaWYgKGVuZFBvc2l0aW9uQXJn
LmlzSW50MzIoKSkKICAgICAgICAgZW5kID0gc3RkOjptYXgoMCwgZW5kUG9zaXRpb25BcmcuYXNJ
bnQzMigpKTsKICAgICBlbHNlIGlmICghZW5kUG9zaXRpb25BcmcuaXNVbmRlZmluZWQoKSkgewot
ICAgICAgICBlbmQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChlbmRQb3NpdGlvbkFyZy50
b0ludGVnZXIoZXhlYyksIDAsIGxlbmd0aCk7CisgICAgICAgIGVuZCA9IGNsYW1wQW5kVHJ1bmNh
dGVUb1Vuc2lnbmVkKGVuZFBvc2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJhbWUpLCAwLCBsZW5n
dGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdU
b1NlYXJjaEluLmhhc0luZml4RW5kaW5nQXQoc2VhcmNoU3RyaW5nLCBzdGQ6Om1pbihlbmQsIGxl
bmd0aCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nIHN0cmluZ1RvU2Vh
cmNoSW4sIFN0cmluZyBzZWFyY2hTdHJpbmcsIEpTVmFsdWUgcG9zaXRpb25BcmcpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBF
eGVjU3RhdGUqIGNhbGxGcmFtZSwgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4sIFN0cmluZyBzZWFy
Y2hTdHJpbmcsIEpTVmFsdWUgcG9zaXRpb25BcmcpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKQEAgLTE3NjgsNzAg
KzE3NzIsNzAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nSW5j
bHVkZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLAogICAgICAgICBzdGFydCA9IHN0ZDo6
bWF4KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7Ci0gICAgICAgIHN0YXJ0ID0g
Y2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAw
LCBsZW5ndGgpOworICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKHBv
c2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJhbWUpLCAwLCBsZW5ndGgpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmZpbmQoc2Vh
cmNoU3RyaW5nLCBzdGFydCkgIT0gbm90Rm91bmQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmlu
ZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0
cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4
cCh2bSwgY2FsbEZyYW1lLCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnBy
b3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9
IGEwLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+
YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1w
bCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBj
YWxsRnJhbWUsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1
aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKTsKIAotICAgIFN0cmluZyBz
dHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmlu
ZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBK
U1ZhbHVlIGEwID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOworICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0s
IGV4ZWMsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgY2FsbEZy
YW1lLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0
Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
KyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+
anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
c3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpj
cmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPnN0cmluZ0l0ZXJhdG9yU3RydWN0dXJlKCks
IHN0cmluZykpOwogfQogCiBlbnVtIGNsYXNzIE5vcm1hbGl6YXRpb25Gb3JtIHsgTkZDLCBORkQs
IE5GS0MsIE5GS0QgfTsKQEAgLTE5MTUsMjEgKzE5MTksMjEgQEAgc3RhdGljIEpTVmFsdWUgbm9y
bWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZywgTm9ybWFsaXphdGlvbkZv
cm0gZm8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKHZtLCBXVEZNb3Zl
KHJlc3VsdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICBhdXRvIGZvcm0gPSBOb3JtYWxpemF0aW9uRm9ybTo6TkZDOwotICAgIEpTVmFsdWUgZm9y
bVZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmb3JtVmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghZm9ybVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgU3RyaW5nIGZvcm1TdHJpbmcgPSBmb3JtVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CisgICAgICAgIFN0cmluZyBmb3JtU3RyaW5nID0gZm9ybVZhbHVlLnRvV1RGU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAg
ICAgaWYgKGZvcm1TdHJpbmcgPT0gIk5GQyIpCkBAIC0xOTQxLDEwICsxOTQ1LDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAg
ICAgICBmb3JtID0gTm9ybWFsaXphdGlvbkZvcm06Ok5GS0Q7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgImFyZ3VtZW50IGRv
ZXMgbm90IG1hdGNoIGFueSBub3JtYWxpemF0aW9uIGZvcm0iX3MpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5v
dCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3JtIl9zKTsKICAgICB9CiAKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoZXhlYywgc3RyaW5n
LCBmb3JtKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG5vcm1hbGl6ZShjYWxsRnJhbWUsIHN0cmluZywgZm9ybSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oCmluZGV4IDdkNTUwZDdkMTY0ZjFjZWQ2NWM0NjNlYWEzNzRmZmQ3OGE0ZDIwOTIuLjVjMjY4
YWMxYTFkOWQ5YjZkOWY1NWEwNmEwMDRlYzFhMTdlZTkwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCkBAIC02MSwxMCArNjEsMTAgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdF
eHBTdHJpbmcoCiAKIHZvaWQgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKFN0cmluZ0J1aWxkZXIm
IHJlc3VsdCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNv
bnN0IGludCogb3ZlY3RvciwgUmVnRXhwKik7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJh
Y3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3Ry
SW50ZXJuYWwoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0
aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZWQ5ZmE4MGRjN2ZmNTU2MTY2NzRlOTE1MjQzMGYxMzY3NDY2
NWNiYi4uZjM3OTA3NzJmMjBhMmU5ZDhmNDYyMjQyNGI5NjIwNmIxMTFhMjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApA
QCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENv
bnN0cnVjdG9yRm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTU2LDcgKzU2LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIFN5bWJvbENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sICZzeW1ib2wKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxTeW1ib2woRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFN5bWJv
bENvbnN0cnVjdG9yOjpTeW1ib2xDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsU3ltYm9sLCBu
dWxscHRyKQpAQCAtNzcsNDMgKzc3LDQzIEBAIHZvaWQgU3ltYm9sQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2wo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBk
ZXNjcmlwdGlvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGRlc2NyaXB0aW9u
LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpj
cmVhdGUodm0pKTsKIAotICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gZGVzY3JpcHRpb24udG9XVEZTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGVXaXRoRGVzY3JpcHRpb24odm0sIHN0cmlu
ZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9y
Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9s
Q29uc3RydWN0b3JGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNTdHJpbmcqIHN0cmluZ0tleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUoZXhl
Yyk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+dm0o
KS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHJpbmcpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1i
b2xGb3JLZXkoc3RyaW5nKSkpOwogfQogCiBjb25zdCBBU0NJSUxpdGVyYWwgU3ltYm9sS2V5Rm9y
VHlwZUVycm9yIHsgIlN5bWJvbC5rZXlGb3IgcmVxdWlyZXMgdGhhdCB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYSBzeW1ib2wiX3MgfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1i
b2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBleGVjLT5h
cmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHN5bWJvbFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXN5bWJvbFZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbEtleUZvclR5
cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOwogCiAgICAgUHJpdmF0
ZU5hbWUgcHJpdmF0ZU5hbWUgPSBhc1N5bWJvbChzeW1ib2xWYWx1ZSktPnByaXZhdGVOYW1lKCk7
CiAgICAgU3ltYm9sSW1wbCYgdWlkID0gcHJpdmF0ZU5hbWUudWlkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAppbmRleCA0MmEwN2M2
YTQzYTQ3Y2Q2NDI5MjM5ZTlhYmVhOTk2YmFkODAxN2Y2Li4yMzRlYjE4OTE5YjlhOTk0OTMxNGY0
NDYwNjFlOGM5Y2YwMGQ2YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvR2V0
dGVyRGVzY3JpcHRpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRl
ckRlc2NyaXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3ltYm9sUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9
CiAKQEAgLTg4LDM4ICs4OCwzOCBAQCBpbmxpbmUgU3ltYm9sKiB0cnlFeHRyYWN0U3ltYm9sKFZN
JiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIGFzU3ltYm9sKGpzQ2FzdDxTeW1i
b2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJE
ZXNjcmlwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3ltYm9sKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xEZXNj
cmlwdGlvblR5cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGNvbnN0IGF1dG8g
ZGVzY3JpcHRpb24gPSBzeW1ib2wtPmRlc2NyaXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkZXNjcmlwdGlvbi5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2
bSwgZGVzY3JpcHRpb24pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1i
b2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0cmFjdFN5
bWJvbCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0
cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xUb1N0
cmluZ1R5cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN5bWJvbC0+
ZGVzY3JpcHRpdmVTdHJpbmcoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJh
Y3RTeW1ib2wodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRy
eUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3lt
Ym9sKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9s
VmFsdWVPZlR5cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3ltYm9sKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgKaW5kZXggNTUzNTVkNjk2MWVkOGM0NDI0YjBl
YjdkZTg1YmM1OTBkNjJlZWE2Yi4uYmM3OGIzYTMxMjZiZTcyZTcyZTM5YjQzYTZhY2VmODlmY2Jj
NzQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29w
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaApAQCAt
MjksOCArMjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiAKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmgK
aW5kZXggNjRkM2Y1NTA0ZTU1MDE5MDlkYmE2ZmQxMGFlZDk4OWMxOTg4NzdlOC4uYzIxYWNhZTIx
OGM3MjZhMGFlN2VlMWVlNTg4OGFhNDFlYTFhYmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oCkBAIC0zMCw5ICszMCwx
MCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgRXhlY1N0
YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNBcnJheUJ1ZmZlcjsKIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBUeXBlZEFy
cmF5Q29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFR5cGVkQXJyYXlDb250cm9sbGVyPiB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzOWJlYTVkZWM3MDQ5
NDJmYzI1ZGI5YjdjOWU4N2ViZWI4MTZmZmVkLi4wNzAwZmNhNWY2NjY3YTYwNzY3ZjI0ODFjNmEw
YjQwZTRiYjA3MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwMiwxMyAr
MTAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiBj
bGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Q29kZUJsb2NrOwogY2xhc3MgQ29kZUNhY2hlOwogY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiBj
bGFzcyBDb21wYWN0VmFyaWFibGVNYXA7CiBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXI7CiBjbGFz
cyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBFeGNl
cHRpb247CiBjbGFzcyBFeGNlcHRpb25TY29wZTsKIGNsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCi10eXBlZGVmIEV4ZWNTdGF0
ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIHN0cnVjdCBMb2Nh
bFRpbWVPZmZzZXRDYWNoZSB7CiAgICAgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCmluZGV4IGMxNmQzYTJlMGU2NTk0NDk3ZDk0NzJk
MGFjYzVkYTgwNmU2Nzk3NzEuLjBlZmI2MGMzNzRlZjFhMTc5MDNmNWMzM2UwYTdhY2UzZmE4MjNh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmgKQEAgLTM2LDggKzM2
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxG
cmFtZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBW
TVRyYXBzIHsKICAgICB0eXBlZGVmIHVpbnQ4X3QgQml0RmllbGQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAppbmRleCBkMzU2M2FmODNlN2I2ZmU5NzdhMDQ0MzU3MWFl
YjJmMWExNzFhZWQ2Li5kMmFlMDUzNmMyMDFjMTVjYWZkOTgyZWRlZTA0MzBmYmMzNGY3YjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKQEAgLTMzLDggKzMzLDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIFZNOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBXYXRj
aGRvZyA6IHB1YmxpYyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkPFdhdGNoZG9nPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCAzOWEyMDc2MGEwMTk5MGU2MGI3
YWRhMmNhYmQ2NjlkYjcwNWVhZjhlLi5lNGVhOTU5NDI3NmQ2ODk4N2YxM2UzMTdkMjQ3NTI2YzNl
YjI5NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDU0ICs0NSw1MyBAQCB2b2lkIFdlYWtNYXBDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrTWFwUHJvdG90eXBlKiBwcm90b3R5cGUp
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWFrTWFwKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
TWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtNYXBDb25zdHJ1Y3Rvcjo6
V2Vha01hcENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrTWFwLCBjb25zdHJ1Y3RXZWFrTWFwKQogewogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01h
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha01hcCIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIldlYWtNYXAiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVy
ZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53
ZWFrTWFwU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha01hcCogd2Vha01hcCA9IEpTV2Vha01hcDo6Y3JlYXRl
KHZtLCB3ZWFrTWFwU3RydWN0dXJlKTsKLSAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3
ZWFrTWFwLT5KU09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CisgICAg
SlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUs
IHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFk
ZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKIAogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CisgICAgZm9yRWFjaElu
SXRlcmFibGUoY2FsbEZyYW1lLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBjYWxs
RnJhbWUsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApKTsKKyAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0SXRlbS5nZXQoY2Fs
bEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0SXRl
bS5nZXQoZXhlYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IG5leHRJdGVtLmdldChjYWxsRnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtMTAwLDcgKzk5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICBBU1NFUlQo
IWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIGNhbGwoZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBh
ZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtNYXAsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwo
Y2FsbEZyYW1lLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCmluZGV4IGM3M2ZkM2VjNzAyNTkxMTJkZDVk
MTVjMmEwNjVlMTkyMTBjZGFlZjcuLmNkNGM1OWFiOTJiZmRlNjQ2MWQ2NWIxNmQyZTViYTA2Zjlm
N2NjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQ
cm90b3R5cGUuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBXZWFrTWFwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWFrTWFwIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWFrTWFwUHJv
dG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1
bmNXZWFrTWFwRGVsZXRlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
V2Vha01hcERlbGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jV2Vha01hcEhhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFdlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTUxLDkgKzUx
LDkgQEAgdm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIldl
YWtNYXAiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrTWFwKiBnZXRXZWFr
TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNXZWFrTWFwKiBnZXRXZWFrTWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF2
YWx1ZS5pc09iamVjdCgpKSkgewpAQCAtNjksMTggKzY5LDE4IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8qIG1h
cCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBh
dXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oa2V5LmlzT2JqZWN0
KCkgJiYgbWFwLT5yZW1vdmUoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8q
IG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CkBAIC04OSwyMSArODksMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrTWFwR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobWFwLT5nZXQoYXNPYmplY3Qoa2V5KSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
YXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXku
aXNPYmplY3QoKSAmJiBtYXAtPmhhcyhhc09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRv
KiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09ICFtYXApOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDQ2ZjJlN2U4ODlk
NDg0N2U1NjllYjIwZmE2Yzg3ODg5NjUyNGY1MS4uZThiMjUzODBjZGJkMWM2MGRmYTI3ZjkwNDJk
NGNjY2YxYmJkMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCkBAIC00NSwzMyArNDUsMzIgQEAg
dm9pZCBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2Vh
a09iamVjdFJlZlByb3RvdHlwZSogcHIKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtSZWYoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtSZWYo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yOjpXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2Fs
bFdlYWtSZWYsIGNvbnN0cnVjdFdlYWtSZWYpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJXZWFrUmVmIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2Vh
a1JlZiIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2Vha1JlZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJGaXJzdCBhcmd1bWVu
dCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgIGlmICghY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUg
YW4gb2JqZWN0Il9zKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0p
OwotICAgIFN0cnVjdHVyZSogV2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9i
YWxPYmplY3QtPndlYWtPYmplY3RSZWZTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBXZWFr
T2JqZWN0UmVmU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndl
YWtPYmplY3RSZWZTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNXZWFrT2JqZWN0UmVmOjpjcmVhdGUodm0sIFdlYWtPYmplY3RSZWZTdHJ1Y3R1
cmUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2Vha09iamVjdFJlZjo6Y3Jl
YXRlKHZtLCBXZWFrT2JqZWN0UmVmU3RydWN0dXJlLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLmdldE9iamVjdCgpKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCmluZGV4IDUyZjll
YWNkYTAxMzFkMzUxMTEwMjRlYWYxMzc1ZjRjMDNlM2FkOTUuLjg5OWNkM2E4NWExZTI2NTM1N2I5
MmYwNjI0OWVlZmQyMjJhOWU5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vha09iamVjdFJlZlByb3RvdHlw
ZTo6c19pbmZvID0geyAiV2Vha1JlZiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSkgfTsKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRlcmVmKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a1JlZkRlcmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHZvaWQgV2Vha09iamVj
dFJlZlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewpAQCAtNDcsOSArNDcsOSBAQCB2b2lkIFdlYWtPYmplY3RSZWZQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0
cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJXZWFrUmVmIiksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJlZiogZ2V0V2Vha1JlZihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJl
ZiogZ2V0V2Vha1JlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3Qo
KSkpIHsKQEAgLTY1LDEwICs2NSwxMCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtPYmpl
Y3RSZWYqIGdldFdlYWtSZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdgogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVu
Y1dlYWtSZWZEZXJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRlcmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0o
KTsKLSAgICBhdXRvKiByZWYgPSBnZXRXZWFrUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8qIHJl
ZiA9IGdldFdlYWtSZWYoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghcmVmKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCA2NTI0OWQ1YmMwYTE1NGE2Y2QxM2IyZWQzZTQ3
NWY1ZGZiYjFlOGI4Li4xN2RlYjg4NTU3YzJhMzZlODU5Y2RlNGUwODNhNTBjN2U5ZGMyMGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTQ1LDQ4ICs0NSw0NyBAQCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrU2V0UHJvdG90eXBlKiBwcm90b3R5cGUpCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxXZWFrU2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6V2Vha1NldENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUsIGNhbGxXZWFrU2V0LCBjb25zdHJ1Y3RXZWFrU2V0KQogewogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIldlYWtTZXQiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwg
Z2xvYmFsT2JqZWN0LT53ZWFrU2V0U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogd2Vha1Nl
dFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrU2V0U3Ry
dWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIEpTV2Vha1NldCogd2Vha1NldCA9IEpTV2Vha1NldDo6Y3JlYXRlKHZtLCB3ZWFr
U2V0U3RydWN0dXJlKTsKLSAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUod2Vha1NldCk7CiAKLSAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3ZWFrU2V0LT5K
U09iamVjdDo6Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CisgICAgSlNWYWx1ZSBh
ZGRlckZ1bmN0aW9uID0gd2Vha1NldC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUsIHZtLnByb3Bl
cnR5TmFtZXMtPmFkZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rp
b24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNh
bGxGcmFtZSwgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IG5leHRWYWx1ZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobmV4dFZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgY2FsbChleGVjLCBhZGRlckZ1bmN0aW9u
LCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha1NldCwg
YXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFkZGVyRnVuY3Rpb24sIGFkZGVy
RnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrU2V0LCBhcmd1bWVu
dHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3ZWFrU2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAK
aW5kZXggZjVlMDc4MDFmYzgwMTEyODBmYmU3N2VlZDJhOTdhNmVlZGZjNzgxMy4uMGY3MzVkYjBm
ZDYxNzNmNDI3ZGFjNWNhYzA1YzJiMjAxYWJiMjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrU2V0UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJXZWFrU2V0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWFrU2V0UHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEhhcyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtTZXRBZGQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNDksOSArNDksOSBAQCB2b2lkIFdlYWtTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiV2Vha1NldCIpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdl
dFdlYWtTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7
CkBAIC02NywzMCArNjcsMzAgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRX
ZWFrU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtT
ZXREZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHNldCA9IGdldFdlYWtT
ZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBzZXQtPnJlbW92ZShh
c09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtTZXRIYXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHNldCA9IGdldFdl
YWtTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghc2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihrZXkuaXNPYmplY3QoKSAmJiBzZXQtPmhhcyhh
c09iamVjdChrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogc2V0ID0gZ2V0V2Vha1Nl
dChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFzZXQpOwogICAgIGlmICgh
c2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDM1NTkyYTQwMGI3
OTE2YzBjYTQ5MzA0NTI1YzE3ODkyZjc3YTMwN2QuLjE1MzNiMGI5NDFmZTA3ODc4N2VlZDA1OGQ3
YzU4NTFlZjhmYjkyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKQEAgLTg4NSwxMSArODg1LDExIEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBw
dWJsaWMgRE9NSklUTm9kZSB7CiBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCopOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHsK
ICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01K
SVRHZXR0ZXJDb21wbGV4Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWND
YXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgICAgIGlmIChvYmplY3QpCiAgICAgICAgICAgICBvYmplY3QtPm1fZW5hYmxlRXhjZXB0aW9u
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTk0OSwxNiArOTQ5LDE2IEBAIGNsYXNzIERPTUpJVEZ1bmN0aW9uT2JqZWN0IDogcHVibGlj
IERPTUpJVE5vZGUgewogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAotICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVDaGVjayhFeGVj
U3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25XaXRoVHlwZUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVE5vZGUq
Pih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBET01KSVROb2RlKiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMDI4LDE1ICsxMDI4LDE1
IEBAIGNsYXNzIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QgOiBwdWJsaWMgRE9NSklUTm9kZSB7
CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCi0gICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykK
KyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldpdGhUeXBl
Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVRDaGVja1N1YkNsYXNz
T2JqZWN0Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogICAgIH0KIApAQCAt
MTI5NCw4ICsxMjk0LDggQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFJv
b3QqIHJvb3QpCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckFkZEJ5dGVzKEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25X
YXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogY2xhc3MgV2FzbVN0cmVhbWluZ1BhcnNlciA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMzYwLDI2ICsxMzYwLDI2IEBAIGNs
YXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
CiBjb25zdCBDbGFzc0luZm8gV2FzbVN0cmVhbWluZ1BhcnNlcjo6c19pbmZvID0geyAiV2FzbVN0
cmVhbWluZ1BhcnNlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2FzbVN0cmVhbWluZ1BhcnNlcikgfTsKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWlu
Z1BhcnNlckFkZEJ5dGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKIAotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKSk7CiAKLSAgICBhdXRvIGRhdGEgPSBnZXRX
YXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIGRh
dGEgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4odGhpc09iamVjdC0+c3RyZWFtaW5nUGFyc2VyKCkuYWRkQnl0
ZXMoYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmZpcnN0KSwgZGF0YS5zZWNvbmQp
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJl
YW1pbmdQYXJzZXJGaW5hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFsaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2VyKj4odm0s
IGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVhbWluZ1BhcnNlcio+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0aGlzT2JqZWN0
LT5zdHJlYW1pbmdQYXJzZXIoKS5maW5hbGl6ZSgpKSkpOwpAQCAtMTM5NSw3ICsxMzk1LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTRG9sbGFyVk06OnNfaW5mbyA9IHsgIkRvbGxhclZNIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHAKIAogLy8gVHJpZ2dlcnMgYSBjcmFzaCBpbW1lZGlhdGVs
eS4KIC8vIFVzYWdlOiAkdm0uY3Jhc2goKQotc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEV4ZWNTdGF0ZSopCitz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3Jhc2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgQ1JBU0goKTsKQEAgLTE0MDMsMTQgKzE0
MDMsMTQgQEAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEV4ZWNTdGEKIAogLy8gRXhlY3V0ZXMgYSBicmVha3Bv
aW50IGluc3RydWN0aW9uIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0cnV0aHkgb3IgaXMgdW5z
ZXQuCiAvLyBVc2FnZTogJHZtLmJyZWFrcG9pbnQoPGNvbmRpdGlvbj4pCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJyZWFrcG9pbnQoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CcmVha3BvaW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgLy8gTm90aGluZyBzaG91
bGQgdGhyb3cgaGVyZSBidXQgd2UgbWlnaHQgYXMgd2VsbCBkb3VibGUgY2hlY2suLi4KLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNjb3BlKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSB8fCBleGVjLT5hcmd1bWVu
dCgwKS50b0Jvb2xlYW4oZXhlYykpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSB8fCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihjYWxsRnJhbWUpKQogICAgICAg
ICBXVEZCcmVha3BvaW50VHJhcCgpOwogCiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgp
OwpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25CcmVha3BvaW50KEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgREZHIGZyYW1lLgogLy8gVXNhZ2U6IGlzREZHID0g
JHZtLmRmZ1RydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25ERkdUcnVlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRGR1RydWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKQEAgLTE0MjYsMTMgKzE0MjYsMTMgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25ERkdUcnVlKEV4ZWNTdGF0ZSopCiAKIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIEZUTCBmcmFtZS4KIC8vIFVz
YWdlOiBpc0ZUTCA9ICR2bS5mdGxUcnVlKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRlRMVHJ1ZShFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GVExUcnVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1TWZlbmNlKEV4ZWNTdGF0ZSopCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdU1mZW5jZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAgLTE0NDEsNyArMTQ0MSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1TWZlbmNlKEV4
ZWNTdGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVSZHRzYyhF
eGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cHVSZHRzYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAg
LTE0NTQsNyArMTQ1NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3B1UmR0c2MoRXhlY1N0YXRlKikKICNlbmRpZgogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEV4ZWNTdGF0ZSopCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNwdWlkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDcHVpZChFeGVj
U3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1UGF1c2UoRXhl
Y1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1
UGF1c2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCkBAIC0x
NDgxLDEzICsxNDgxLDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3B1UGF1c2UoRXhlY1N0YXRlKikKIC8vCiAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQg
aXMgbm90IGEgSlNBcnJheUJ1ZmZlciwgd2UgbG9hZCB0aGUgYnV0dGVyZmx5CiAvLyBhbmQgY2xm
bHVzaCBhdCB0aGUgYWRkcmVzcyBvZiB0aGUgYnV0dGVyZmx5Lgotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xmbHVzaChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIENQVShYODZfNjQpICYmICFPUyhX
SU5ET1dTKQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0ludDMyKCkpCisgICAg
aWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIGF1dG8gY2xmbHVzaCA9IFtd
ICh2b2lkKiBwdHIpIHsKQEAgLTE0OTgsMTEgKzE0OTgsMTEgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVDbGZsdXNoKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIFZlY3Rvcjx2b2lkKj4gdG9GbHVzaDsKIAotICAgIHVpbnQzMl90IG9mZnNldCA9IGV4ZWMt
PmFyZ3VtZW50KDEpLmFzVUludDMyKCk7CisgICAgdWludDMyX3Qgb2Zmc2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS5hc1VJbnQzMigpOwogCi0gICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCBleGVjLT5hcmd1bWVu
dCgwKSkpCisgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxK
U0FycmF5QnVmZmVyVmlldyo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkKICAgICAgICAg
dG9GbHVzaC5hcHBlbmQoYml0d2lzZV9jYXN0PGNoYXIqPih2aWV3LT52ZWN0b3IoKSkgKyBvZmZz
ZXQpOwotICAgIGVsc2UgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkgeworICAgIGVsc2UgaWYgKEpTT2JqZWN0KiBv
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKSB7CiAgICAgICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgICAg
ICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfQ09OVElH
VU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTE1MTksNyArMTUxOSw4IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q2xmbHVzaChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGNsZmx1c2gocHRyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogI2VuZGlmCiB9CkBAIC0x
NTY4LDI1ICsxNTY5LDI1IEBAIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGdldEV4ZWN1dGFi
bGVGb3JGdW5jdGlvbihKU1ZhbHVlIHRoZUZ1bmN0aW9uVmFsdWUpCiAKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIExMSW50IGZyYW1lLgogLy8gVXNhZ2U6IGlzTExJ
bnQgPSAkdm0ubGxpbnRUcnVlKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uTExpbnRUcnVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTExpbnRUcnVlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBpZiAoIWV4ZWMpCisgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQ2FsbGVyRnJhbWVKSVRUeXBlRnVuY3Rv
ciBmdW5jdG9yOwotICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5p
dGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZ1
bmN0b3Iuaml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspKTsKIH0KIAogLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGEgYmFzZWxpbmUgSklUIGZyYW1l
LgogLy8gVXNhZ2U6IGlzQmFzZWxpbmVKSVQgPSAkdm0uaml0VHJ1ZSgpCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpJVFRydWUoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KSVRUcnVlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICBpZiAoIWV4ZWMpCisgICAgaWYgKCFjYWxsRnJhbWUpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQ2FsbGVy
RnJhbWVKSVRUeXBlRnVuY3RvciBmdW5jdG9yOwotICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7
CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZ1bmN0b3Iuaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklU
KSk7CiB9CiAKQEAgLTE1OTQsMTMgKzE1OTUsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25KSVRUcnVlKEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVzYWdlOgog
Ly8gZnVuY3Rpb24gZigpIHsgfTsKIC8vICR2bS5ub0lubGluZShmKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9JbmxpbmUoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0lubGluZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisg
ICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKLSAgICBKU1ZhbHVlIHRoZUZ1bmN0
aW9uVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRoZUZ1
bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogCiAgICAgaWYg
KEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlv
bih0aGVGdW5jdGlvblZhbHVlKSkKICAgICAgICAgZXhlY3V0YWJsZS0+c2V0TmV2ZXJJbmxpbmUo
dHJ1ZSk7CkBAIC0xNjEwLDI4ICsxNjExLDI4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uTm9JbmxpbmUoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBSdW5zIGEg
ZnVsbCBHQyBzeW5jaHJvbm91c2x5LgogLy8gVXNhZ2U6ICR2bS5nYygpCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIFZNSW5zcGVjdG9yOjpnYyhleGVjKTsKKyAgICBWTUluc3BlY3Rvcjo6Z2Mo
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCiAvLyBSdW5zIHRoZSBlZGVuR0Mgc3luY2hyb25vdXNseS4KIC8vIFVzYWdlOiAkdm0uZWRl
bkdDKCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdD
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRWRlbkdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTUluc3BlY3Rvcjo6ZWRl
bkdDKGV4ZWMpOworICAgIFZNSW5zcGVjdG9yOjplZGVuR0MoY2FsbEZyYW1lKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiAvLyBEdW1wcyB0aGUgaGFz
aGVzIG9mIGFsbCBzdWJzcGFjZXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgVk0uCiAv
LyBVc2FnZTogJHZtLmR1bXBTdWJzcGFjZUhhc2hlcygpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyhFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdWJzcGFj
ZUhhc2hlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgVk1JbnNwZWN0b3I6OmR1
bXBTdWJzcGFjZUhhc2hlcygmdm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CkBAIC0xNjUwLDEyICsxNjUxLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKEV4ZWNTdGF0ZSogZXhl
YykKIC8vIE5vdGU6IHlvdSBjYW5ub3QgdG9TdHJpbmcoKSBhIGNvZGVCbG9jaywgdW5saW5rZWRD
b2RlQmxvY2ssIG9yIGV4ZWN1dGFibGUgYmVjYXVzZQogLy8gdGhlcmUgYXJlIGludGVybmFsIG9i
amVjdHMgYW5kIG5vdCBhIEpTIG9iamVjdC4gSGVuY2UsIHlvdSBjYW5ub3QgZG8gc3RyaW5nCiAv
LyBjb25jYXRlbmF0aW9uIHdpdGggdGhlbS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbEZyYW1lKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICAgICB1bnNpZ25lZCBmcmFtZU51bWJlciA9IDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMSkg
eworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1VJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTY2NSwxOCArMTY2NiwxOCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxGcmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGZyYW1lTnVtYmVyID0gdmFsdWUuYXNVSW50MzIoKSArIDE7
CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RvbGxhclZNQ2FsbEZyYW1l
OjpjcmVhdGUoZXhlYywgZnJhbWVOdW1iZXIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTRG9sbGFyVk1DYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUsIGZyYW1lTnVtYmVyKSk7CiB9
CiAKIC8vIEdldHMgYSB0b2tlbiBmb3IgdGhlIENvZGVCbG9jayBmb3IgYSBzcGVjaWZpZWQgZnJh
bWUgaW5kZXguCiAvLyBVc2FnZTogY29kZUJsb2NrVG9rZW4gPSAkdm0uY29kZUJsb2NrRm9yRnJh
bWUoMCkgLy8gZnJhbWUgMCBpcyB0aGUgdG9wIGZyYW1lLgogLy8gVXNhZ2U6IGNvZGVCbG9ja1Rv
a2VuID0gJHZtLmNvZGVCbG9ja0ZvckZyYW1lKCkgLy8gaW1wbGllcyBmcmFtZSAwIGkuZS4gY3Vy
cmVudCBmcmFtZS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q29kZUJsb2NrRm9yRnJhbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFtZShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7CiAgICAgdW5zaWduZWQgZnJhbWVOdW1iZXIgPSAxOwotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPj0gMSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEp
IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgICAgIGlmICghdmFsdWUuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTE2ODYsMjAgKzE2ODcsMjAgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tGb3JG
cmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZyYW1lTnVtYmVyID0gdmFsdWUuYXNVSW50
MzIoKSArIDE7CiAgICAgfQogCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBWTUluc3BlY3Rv
cjo6Y29kZUJsb2NrRm9yRnJhbWUoZXhlYywgZnJhbWVOdW1iZXIpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gVk1JbnNwZWN0b3I6OmNvZGVCbG9ja0ZvckZyYW1lKGNhbGxGcmFtZSwgZnJh
bWVOdW1iZXIpOwogICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29kZUJsb2NrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9tQXJnKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgaWYg
KHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUuYXNDZWxsKCkpOwpAQCAtMTcxMiw3ICsxNzEzLDcg
QEAgc3RhdGljIENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICBjYW5kaWRhdGVDb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPih2
YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0gICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiBW
TUluc3BlY3Rvcjo6aXNWYWxpZENvZGVCbG9jayhleGVjLCBjYW5kaWRhdGVDb2RlQmxvY2spKQor
ICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2sgJiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2RlQmxv
Y2soY2FsbEZyYW1lLCBjYW5kaWRhdGVDb2RlQmxvY2spKQogICAgICAgICByZXR1cm4gY2FuZGlk
YXRlQ29kZUJsb2NrOwogCiAgICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jaykKQEAgLTE3MjYsMjQg
KzE3MjcsMjQgQEAgc3RhdGljIENvZGVCbG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUq
IGV4ZWMpCiAvLyBVc2FnZTogJHZtLnByaW50KCJjb2RlYmxvY2sgPSAiLCAkdm0uY29kZUJsb2Nr
Rm9yKGNvZGVCbG9ja1Rva2VuKSkKIC8vIE5vdGU6IHlvdSBjYW5ub3QgdG9TdHJpbmcoKSBhIGNv
ZGVCbG9jayBiZWNhdXNlIGl0J3MgYW4gaW50ZXJuYWwgb2JqZWN0IGFuZCBub3QKIC8vIGEgSlMg
b2JqZWN0LiBIZW5jZSwgeW91IGNhbm5vdCBkbyBzdHJpbmcgY29uY2F0ZW5hdGlvbiB3aXRoIGl0
Lgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Db2RlQmxvY2tG
b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Db2RlQmxvY2tGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZXhlYyk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKTsKICAgICBXVEY6OlN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKICAgICBpZiAoY29k
ZUJsb2NrKSB7CiAgICAgICAgIHN0cmVhbS5wcmludCgqY29kZUJsb2NrKTsKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCBzdHJlYW0udG9TdHJpbmco
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2JhbE9iamVj
dC0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gVXNhZ2U6ICR2bS5kdW1wU291cmNlRm9y
KGZ1bmN0aW9uT2JqKQogLy8gVXNhZ2U6ICR2bS5kdW1wU291cmNlRm9yKGNvZGVCbG9ja1Rva2Vu
KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU291cmNl
Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFNvdXJjZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhleGVjKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpOwogICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgIGNvZGVCbG9jay0+ZHVtcFNv
dXJjZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NzUxLDIxICsxNzUyLDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHVtcFNvdXJjZUZvcihFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIFVzYWdlOiAkdm0uZHVt
cEJ5dGVjb2RlRm9yKGZ1bmN0aW9uT2JqKQogLy8gVXNhZ2U6ICR2bS5kdW1wQnl0ZWNvZGVGb3Io
Y29kZUJsb2NrKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
dW1wQnl0ZWNvZGVGb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQnl0ZWNvZGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21B
cmcoZXhlYyk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICBjb2Rl
QmxvY2stPmR1bXBCeXRlY29kZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50KEV4ZWNTdGF0ZSog
ZXhlYywgYm9vbCBhZGRMaW5lRmVlZCkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBkb1ByaW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBib29sIGFk
ZExpbmVGZWVkKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAg
IEpTVmFsdWUgYXJnID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAg
ICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSk7CiAgICAg
ICAgIGlmIChhcmcuaXNDZWxsKCkKICAgICAgICAgICAgICYmICFhcmcuaXNPYmplY3QoKQogICAg
ICAgICAgICAgJiYgIWFyZy5pc1N0cmluZygpCkBAIC0xNzczLDcgKzE3NzQsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgZG9QcmludChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgYWRkTGluZUZlZWQp
CiAgICAgICAgICAgICBkYXRhTG9nKGFyZyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQotICAgICAgICBTdHJpbmcgYXJnU3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSku
dG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIFN0cmluZyBhcmdTdHIgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkYXRhTG9n
KGFyZ1N0cik7CiAgICAgfQpAQCAtMTc4NCw0MSArMTc4NSw0MSBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgZG9QcmludChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgYWRkTGluZUZlZWQpCiAKIC8vIFBy
aW50cyBhIHNlcmllcyBvZiBjb21tYSBzZXBhcmF0ZSBzdHJpbmdzIHdpdGhvdXQgYXBwZW5kaW5n
IGEgbmV3bGluZS4KIC8vIFVzYWdlOiAkdm0uZGF0YUxvZyhzdHIxLCBzdHIyLCBzdHIzKQotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EYXRhTG9nKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGF0
YUxvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIGNvbnN0IGJvb2wg
YWRkTGluZUZlZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gZG9QcmludChleGVjLCBhZGRMaW5lRmVl
ZCk7CisgICAgcmV0dXJuIGRvUHJpbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFkZExpbmVG
ZWVkKTsKIH0KIAogLy8gUHJpbnRzIGEgc2VyaWVzIG9mIGNvbW1hIHNlcGFyYXRlIHN0cmluZ3Mg
YW5kIGFwcGVuZHMgYSBuZXdsaW5lLgogLy8gVXNhZ2U6ICR2bS5wcmludChzdHIxLCBzdHIyLCBz
dHIzKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgY29uc3Qg
Ym9vbCBhZGRMaW5lRmVlZCA9IHRydWU7Ci0gICAgcmV0dXJuIGRvUHJpbnQoZXhlYywgYWRkTGlu
ZUZlZWQpOworICAgIHJldHVybiBkb1ByaW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhZGRM
aW5lRmVlZCk7CiB9CiAKIC8vIER1bXBzIHRoZSBjdXJyZW50IENhbGxGcmFtZS4KIC8vIFVzYWdl
OiAkdm0uZHVtcENhbGxGcmFtZSgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkR1bXBDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2FsbEZyYW1lKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICAgICAvLyBXaGVuIHRoZSBjYWxsZXJzIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhl
eSBhcmUgZXhwZWN0aW5nIHRvIGR1bXAgdGhlaXIKICAgICAvLyBvd24gZnJhbWUuIFNvIHNraXAg
MSBmb3IgdGhpcyBmcmFtZS4KLSAgICBWTUluc3BlY3Rvcjo6ZHVtcENhbGxGcmFtZShleGVjLCAx
KTsKKyAgICBWTUluc3BlY3Rvcjo6ZHVtcENhbGxGcmFtZShjYWxsRnJhbWUsIDEpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIC8vIER1bXBzIHRoZSBK
UyBzdGFjay4KIC8vIFVzYWdlOiAkdm0ucHJpbnRTdGFjaygpCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdGFjayhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTdGFjayhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CiAgICAgLy8gV2hlbiB0aGUgY2FsbGVycyBjYWxsIHRoaXMgZnVuY3Rp
b24sIHRoZXkgYXJlIGV4cGVjdGluZyB0byBkdW1wIHRoZQogICAgIC8vIHN0YWNrIHN0YXJ0aW5n
IHRoZWlyIG93biBmcmFtZS4gU28gc2tpcCAxIGZvciB0aGlzIGZyYW1lLgotICAgIFZNSW5zcGVj
dG9yOjpkdW1wU3RhY2soZXhlYywgMSk7CisgICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFjayhjYWxs
RnJhbWUsIDEpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTE4MjcsMTIgKzE4MjgsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EdW1wU3RhY2soRXhlY1N0YXRlKiBleGVjKQogLy8gVXNhZ2U6ICR2bS5k
dW1wUmVnaXN0ZXJzKCkgLy8gZHVtcCB0aGUgcmVnaXN0ZXJzIG9mIHRoZSBjdXJyZW50IENhbGxG
cmFtZS4KIC8vIEZJWE1FOiBDdXJyZW50bHksIHRoaXMgZnVuY3Rpb24gZHVtcHMgdGhlIHBoeXNp
Y2FsIGZyYW1lLiBXZSBzaG91bGQgbWFrZQogLy8gaXQgZHVtcCB0aGUgbG9naWNhbCBmcmFtZSAo
aS5lLiBiZSBhYmxlIHRvIGR1bXAgaW5saW5lZCBmcmFtZXMgYXMgd2VsbCkuCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
UmVnaXN0ZXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICB1bnNpZ25lZCByZXF1ZXN0ZWRG
cmFtZUluZGV4ID0gMTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlm
IChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIXZhbHVl
LmlzVUludDMyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCkBAIC0xODQzLDcgKzE4NDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjKQogICAgIH0K
IAogICAgIHVuc2lnbmVkIGZyYW1lSW5kZXggPSAwOwotICAgIGV4ZWMtPml0ZXJhdGUoWyZdIChT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoWyZdIChTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IpIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICAgICAgICAgaWYgKGZyYW1lSW5kZXgrKyAhPSByZXF1ZXN0ZWRGcmFtZUluZGV4KQog
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CkBAIC0xODU2LDEwICsx
ODU3LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVt
cFJlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIER1bXBzIHRoZSBpbnRlcm5hbCBtZW1v
cnkgbGF5b3V0IG9mIGEgSlNDZWxsLgogLy8gVXNhZ2U6ICR2bS5kdW1wQ2VsbChjZWxsKQotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2VsbChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1
bXBDZWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVm
aW5lZCgpOwogICAgIApAQCAtMTg2OSwyMiArMTg3MCwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBDZWxsKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8g
R2V0cyB0aGUgZGF0YUxvZyBkdW1wIG9mIHRoZSBpbmRleGluZ01vZGUgb2YgdGhlIHBhc3NlZCB2
YWx1ZS4KIC8vIFVzYWdlOiAkdm0ucHJpbnQoImluZGV4aW5nTW9kZSA9ICIgKyAkdm0uaW5kZXhp
bmdNb2RlKGpzVmFsdWUpKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25JbmRleGluZ01vZGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmRleGluZ01vZGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisg
ICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIAogICAgIFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3Ry
ZWFtOwotICAgIHN0cmVhbS5wcmludChJbmRleGluZ1R5cGVEdW1wKGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLmdldE9iamVjdCgpLT5pbmRleGluZ01vZGUoKSkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKKyAg
ICBzdHJlYW0ucHJpbnQoSW5kZXhpbmdUeXBlRHVtcChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLmdldE9iamVjdCgpLT5pbmRleGluZ01vZGUoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJlYW0udG9TdHJpbmcoKSkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklubGlu
ZUNhcGFjaXR5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGlmIChhdXRvKiBvYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKSkKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5p
bmxpbmVDYXBhY2l0eSgpKSk7CiAKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBA
IC0xODkyLDIyICsxODkzLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBHZXRzIHRoZSBk
YXRhTG9nIGR1bXAgb2YgYSBnaXZlbiBKUyB2YWx1ZSBhcyBhIHN0cmluZy4KIC8vIFVzYWdlOiAk
dm0ucHJpbnQoInZhbHVlID0gIiArICR2bS52YWx1ZShqc1ZhbHVlKSkKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmFsdWUoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFdURjo6U3RyaW5nUHJpbnRTdHJlYW0gc3Ry
ZWFtOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7
ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgc3RyZWFtLnByaW50
KCIsICIpOwotICAgICAgICBzdHJlYW0ucHJpbnQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkp
OworICAgICAgICBzdHJlYW0ucHJpbnQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgfQogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+
dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKIH0KIAogLy8g
R2V0cyB0aGUgcGlkIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAvLyBVc2FnZTogJHZtLnByaW50
KCJwaWQgPSAiICsgJHZtLmdldHBpZCgpKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HZXRQSUQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UElEKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CkBAIC0xOTE1LDM0
MiArMTkxNiwzNDEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZXRQSUQoRXhlY1N0YXRlKikKIAogLy8gTWFrZSB0aGUgZ2xvYmFsT2JqZWN0IGhhdmUgYSBi
YWQgdGltZS4gRG9lcyBub3RoaW5nIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgSlNHbG9iYWxPYmpl
Y3QuCiAvLyBVc2FnZTogJHZtLmhhdmVBQmFkVGltZShnbG9iYWxPYmplY3QpCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhdmVBQmFkVGltZShFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhdmVB
QmFkVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1ZhbHVlIG9ialZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBvYmpWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCFvYmpWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpOwogCiAgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KG9ialZh
bHVlLmFzQ2VsbCgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZtLCBvYmopOwotICAgIGlmICghZ2xvYmFsT2JqZWN0
KQorICAgIEpTR2xvYmFsT2JqZWN0KiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4odm0sIG9iaik7CisgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIGdsb2JhbE9iamVjdC0+aGF2ZUFCYWRUaW1lKHZt
KTsKKyAgICB0YXJnZXQtPmhhdmVBQmFkVGltZSh2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogfQogCiAvLyBDaGVja3MgaWYgdGhlIG9iamVjdCAob3Ig
aXRzIGdsb2JhbCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIGdsb2JhbCkgaXMgaGF2aW5nIGEgYmFk
IHRpbWUuCiAvLyBVc2FnZTogJHZtLmlzSGF2aW5nQUJhZFRpbWUob2JqKQotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1lKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNI
YXZpbmdBQmFkVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1ZhbHVlIG9ialZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmpWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCFvYmpWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KG9i
alZhbHVlLmFzQ2VsbCgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZtLCBvYmopOwotICAgIGlmIChnbG9iYWxPYmpl
Y3QpCi0gICAgICAgIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5pc0hh
dmluZ0FCYWRUaW1lKCkpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogdGFyZ2V0ID0ganNEeW5hbWlj
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KHZtLCBvYmopOworICAgIGlmICh0YXJnZXQpCisgICAgICAg
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKTsK
IAotICAgIGdsb2JhbE9iamVjdCA9IG9iai0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgdGFyZ2V0PSBvYmotPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghdGFy
Z2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5pc0hhdmlu
Z0FCYWRUaW1lKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJn
ZXQtPmlzSGF2aW5nQUJhZFRpbWUoKSkpOwogfQogCiAvLyBDcmVhdGVzIGEgbmV3IGdsb2JhbCBv
YmplY3QuCiAvLyBVc2FnZTogJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0ds
b2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBqc051bGwoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEpT
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBKU09iamVjdCoganNUYXJnZXQgPSBhc09iamVjdCh0YXJnZXQu
YXNDZWxsKCkpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzVGFyZ2V0
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkq
IHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3h5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50
aW1lQXJyYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIFJ1bnRpbWVBcnJheSogYXJyYXkgPSBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVj
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjYWxsRnJhbWUpOworICAgIFJ1bnRpbWVBcnJheSog
YXJyYXkgPSBSdW50aW1lQXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJyYXkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZU51bGxSb3BlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlTnVsbFJvcGVTdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUm9wZVN0cmluZzo6Y3JlYXRlTnVsbEZv
clRlc3Rpbmcodm0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgSlNPYmplY3QqIGRlbGVnYXRl
ID0gbnVsbHB0cjsKICAgICBpZiAodGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAgICAgIGRlbGVnYXRl
ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2VsbCgpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEltcHVyZUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEltcHVyZUdldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICBJbXB1
cmVHZXR0ZXIqIHJlc3VsdCA9IEltcHVyZUdldHRlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGRl
bGVnYXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVy
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBDdXN0b21HZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDdXN0
b21HZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAg
ICAgQ3VzdG9tR2V0dGVyKiByZXN1bHQgPSBDdXN0b21HZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVj
dChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVE5vZGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2bSwgRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpKSk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVROb2RlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgRE9NSklUR2V0dGVyOjpjcmVhdGUodm0sIERPTUpJVEdldHRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKSkpOwogICAgIERPTUpJVE5vZGUqIHJl
c3VsdCA9IERPTUpJVE5vZGU6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXI6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgRE9NSklUR2V0dGVyKiByZXN1bHQg
PSBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJ
VEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklUR2V0dGVyQ29tcGxleCogcmVzdWx0ID0gRE9N
SklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJDb21w
bGV4OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAgIERP
TUpJVEdldHRlckNvbXBsZXgqIHJlc3VsdCA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEZ1bmN0aW9uT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRGdW5jdGlvbk9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsK
LSAgICBET01KSVRGdW5jdGlvbk9iamVjdCogcmVzdWx0ID0gRE9NSklURnVuY3Rpb25PYmplY3Q6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CisgICAgRE9NSklURnVuY3Rpb25PYmpl
Y3QqIHJlc3VsdCA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
Q2hlY2tTdWJDbGFzc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7
Ci0gICAgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCogcmVzdWx0ID0gRE9NSklUQ2hlY2tTdWJD
bGFzc09iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVj
dHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRDaGVja1N1YkNsYXNzT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAgIERP
TUpJVENoZWNrU3ViQ2xhc3NPYmplY3QqIHJlc3VsdCA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmpl
Y3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVE
T01KSVRHZXR0ZXJCYXNlSlNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJ
VEdldHRlckJhc2VKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJ
VEdldHRlckJhc2VKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpKTsKICAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QqIHJlc3VsdCA9IERPTUpJVEdl
dHRlckJhc2VKU09iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWlu
Z1BhcnNlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdQYXJzZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFdhc21TdHJlYW1pbmdQYXJzZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXYXNtU3RyZWFtaW5n
UGFyc2VyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogI2VuZGlmCiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNj
ZXNzb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RhdGljQ3VzdG9tQWNjZXNzb3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBTdGF0aWNDdXN0b21BY2Nlc3Nvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGpzTnVsbCgpKTsKICAgICBhdXRvKiByZXN1bHQgPSBTdGF0aWNDdXN0b21BY2Nlc3Nvcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJ
bXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgYmFzZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYmFzZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFiYXNlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgSlNWYWx1ZSBkZWxlZ2F0ZSA9
IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgZGVsZWdhdGUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwogICAgIGlmICghZGVsZWdhdGUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIGltcHVy
ZUdldHRlciA9IGpzRHluYW1pY0Nhc3Q8SW1wdXJlR2V0dGVyKj4odm0sIGFzT2JqZWN0KGJhc2Uu
YXNDZWxsKCkpKTsKICAgICBpZiAoVU5MSUtFTFkoIWltcHVyZUdldHRlcikpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYW4gSW1wdXJlR2V0
dGVyIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImFyZ3Vt
ZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKICAgICB9CiAgICAgaW1wdXJlR2V0dGVyLT5zZXREZWxlZ2F0ZSh2bSwgYXNPYmpl
Y3QoZGVsZWdhdGUuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGluKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzU3RyaW5nKCkpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSB8fCAhY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgU3RyaW5nIGZ1bmN0aW9uVGV4
dCA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IGZ1bmN0aW9uVGV4dCA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT52YWx1ZShj
YWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwg
eyB9KTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0KS0+bGluayh2bSwgbnVsbHB0ciwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgbnVsbHB0ciwgc291cmNlKSwgZ2xvYmFsT2JqZWN0
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZnVuYyk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UHJpdmF0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIgfHwgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkp
CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMiB8fCAhY2FsbEZyYW1lLT5h
cmd1bWVudCgxKS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVk
KCk7CiAKLSAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSktPnZhbHVlKGNhbGxGcmFtZSk7CiAKICAgICBTeW1ib2xJbXBsKiBzeW1ib2wgPSB2bS5wcm9w
ZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBz
dHIpKTsKICAgICBpZiAoIXN5bWJvbCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgIlVua25vd24gcHJpdmF0ZSBuYW1lLiIpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJVbmtub3duIHByaXZhdGUgbmFtZS4iKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmFyZ3VtZW50
KDApLmdldChleGVjLCBzeW1ib2wpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5nZXQoY2FsbEZyYW1lLCBzeW1i
b2wpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJv
b3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShSb290OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVFbGVtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2
bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJv
b3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVFcnJvcihleGVjLCAiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCByb290KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZy
YW1lLCAiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBy
b290KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0RWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUm9vdCogcm9vdCA9IGpz
RHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgUm9vdCogcm9v
dCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgRWxlbWVudCogcmVzdWx0ID0gcm9vdC0+ZWxlbWVudCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gcmVzdWx0IDoganNVbmRlZmluZWQoKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShT
aW1wbGVPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTaW1wbGVPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2V0SGlkZGVuVmFsdWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTaW1wbGVPYmplY3QqIHNp
bXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkludmFsaWQgdXNlIG9mIGdldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0
SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNpbXBsZU9iamVjdC0+
aGlkZGVuVmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRIaWRkZW5WYWx1ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTaW1wbGVPYmpl
Y3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgIkludmFsaWQgdXNlIG9mIHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ug
b2Ygc2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CiAgICAgICAgIHJldHVybiBlbmNv
ZGVkSlNWYWx1ZSgpOwogICAgIH0KLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgc2lt
cGxlT2JqZWN0LT5zZXRIaWRkZW5WYWx1ZSh2bSwgdmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1bmN0aW9uc09uU3RhY2soRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFk
b3dDaGlja2VuRnVuY3Rpb25zT25TdGFjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoYXV0byogc2hhZG93Q2hpY2tlbiA9IHZtLnNoYWRvd0NoaWNrZW4oKSkgewogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hhZG93Q2hp
Y2tlbi0+ZnVuY3Rpb25zT25TdGFjayhleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2hhZG93Q2hpY2tlbi0+ZnVuY3Rpb25zT25TdGFjayhjYWxsRnJhbWUpKTsKICAgICB9
CiAKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwor
ICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCAwKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQoZXhlYywgJnZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNp
dG9yOjpTdGF0dXMgeworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCAmdm0sIFsm
XSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CiAgICAg
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIGlmICh2aXNpdG9y
LT5pc0lubGluZWRGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CiAgICAgICAgIGlmICh2aXNpdG9yLT5pc1dhc21GcmFtZSgpKQogICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0gICAgICAgIHJlc3VsdC0+cHVzaChleGVj
LCBqc0Nhc3Q8SlNPYmplY3QqPih2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOworICAgICAg
ICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBqc0Nhc3Q8SlNPYmplY3QqPih2aXNpdG9yLT5jYWxs
ZWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24o
KTsgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBmcm9tIHRlc3RzLgogICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICB9KTsKQEAgLTIyNTgsODEgKzIyNTgs
ODEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFkb3dD
aGlja2VuRnVuY3Rpb25zT25TdGFjayhFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3coRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRHbG9i
YWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgdm0uc2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coZmFs
c2UpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHBy
ZXNzaW9uKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0udHlwZVByb2ZpbGVyKCkpOwog
ICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgImpzYyBUZXN0
aW5nIEFQSTogZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24iX3MpOwogCi0gICAgSlNWYWx1
ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlv
blZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5j
dGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXND
ZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCi0gICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0cmluZyA9
IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKKyAgICBTdHJpbmcgc3Vi
c3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgxKSktPnZhbHVlKGNhbGxGcmFt
ZSk7CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmll
dygpLnRvU3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnN0YXJ0T2Zmc2V0KCkpOwogICAgIAogICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0udHlwZVBy
b2ZpbGVyKCktPnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldChUeXBlUHJvZmls
ZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsLCBvZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJjZUlEKCks
IHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVjLCBqc29uU3Ry
aW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoY2FsbEZyYW1lLCBq
c29uU3RyaW5nKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUmV0dXJuVHlwZUZvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJldHVyblR5cGVGb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIo
KSk7CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNj
IFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5cGVGb3IiX3MpOwogCi0gICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlv
blZhbHVlLmlzRnVuY3Rpb24odm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxs
KCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCiAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KHZtKTsKICAgICBTdHJpbmcg
anNvblN0cmluZyA9IHZtLnR5cGVQcm9maWxlcigpLT50eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNz
aW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuLCBv
ZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTT05QYXJzZShleGVjLCBqc29uU3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU09OUGFyc2UoY2FsbEZyYW1lLCBqc29uU3RyaW5nKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FT
U0VSVCh2YWx1ZS5pc09iamVjdCgpICYmIHZhbHVlLmdldE9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+
aXNEaWN0aW9uYXJ5KCkpOwogICAgIHZhbHVlLmdldE9iamVjdCgpLT5mbGF0dGVuRGljdGlvbmFy
eU9iamVjdCh2bSk7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhl
Y3V0aW9uUmFuZ2VzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJv
ZmlsZXIoKSk7CiAgICAgdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5kdW1wRGF0YSgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKIAot
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlv
blZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAotICAgIFJF
TEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBz
dWJzdHJpbmcgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOworICAg
IFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CisgICAg
U3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1
ZShjYWxsRnJhbWUpOwogICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNv
dXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNvdXJjZUNvZGVU
ZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3VyY2VDb2RlVGV4
dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOwpA
QCAtMjM0MSwxOCArMjM0MSwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGhhc0V4ZWN1dGVkKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNv
dW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxl
cigpKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsK
IAotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAg
IFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4
ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmco
KSk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1
dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNv
dXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3Vy
Y2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9m
ZnNldCgpOwpAQCAtMjM2MSw3ICsyMzYxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRlKgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShleGVjdXRpb25Db3VudCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlv
bkZ1enooRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBPcHRpb25zOjp1c2VF
eGNlcHRpb25GdXp6KCkgPSB0cnVlOwpAQCAtMjQxMiwyMiArMjQxMiwyMiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjLCBP
cHRpb25TZXQ8Q29kZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxl
RGVidWdnZXJNb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxl
KGV4ZWMsIHsgQ29kZUdlbmVyYXRpb25Nb2RlOjpEZWJ1Z2dlciB9KTsKKyAgICByZXR1cm4gY2hh
bmdlRGVidWdnZXJNb2RlV2hlbklkbGUoY2FsbEZyYW1lLCB7IENvZGVHZW5lcmF0aW9uTW9kZTo6
RGVidWdnZXIgfSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9k
ZVdoZW5JZGxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICByZXR1cm4gY2hhbmdlRGVidWdn
ZXJNb2RlV2hlbklkbGUoZXhlYywgeyB9KTsKKyAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2Rl
V2hlbklkbGUoY2FsbEZyYW1lLCB7IH0pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRlbGV0ZUFsbENvZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbGV0ZUFsbENv
ZGVXaGVuSWRsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CisgICAgVk0qIHZtID0gJmdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS0+d2hlbklk
bGUoWz1dICgpIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAg
ICAgICAgdm0tPmRlbGV0ZUFsbENvZGUoUHJldmVudENvbGxlY3Rpb25BbmREZWxldGVBbGxDb2Rl
KTsKQEAgLTI0MzUsNDEgKzI0MzUsNDEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EZWxldGVBbGxDb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdENvdW50KEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2xv
YmFsT2JqZWN0Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+dm0oKS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxP
YmplY3RGb3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3Qo
KSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiByZXN1bHQgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPmds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEdldHRlclNldHRlcihFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdl
dEdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHByb3BlcnR5ID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CiAgICAgaWYgKCFwcm9wZXJ0eS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvSWRlbnRpZmllcihleGVjKTsKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFByb3BlcnR5U2xvdCBz
bG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsK
LSAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKQEAgLTI0ODEsMTUgKzI0ODEsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRH
ZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBqc0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZt
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBq
c0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWdldHRlclNldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRl
ciB0ZXN0IGZ1bmN0aW9uOiBhcmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9h
ZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIgdGVzdCBmdW5jdGlvbjogYXJndW1lbnQgaXMgbm90IGEg
R2V0dGVyU2V0dGVyIl9zKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
fQogCkBAIC0yNDk4LDIwICsyNDk4LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXR0ZXIpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCkpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyhF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZsaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogYSA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIEpTT2JqZWN0
KiBiID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgxKSk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBhID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBKU09i
amVjdCogYiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CiAgICAgaWYgKCFhIHx8ICFiKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKFBOYU4pKTsKIApAQCAtMjUyMywyMCArMjUyMiwyMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZsaWVzKEV4
ZWNTdGF0ZSogZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oZGVsdGEpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uVG90YWxHQ1RpbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ub3RhbEdDVGltZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2bS5o
ZWFwLnRvdGFsR0NUaW1lKCkuc2Vjb25kcygpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGFyc2VDb3VudChFeGVjU3RhdGUqKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QYXJzZUNvdW50KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2xvYmFsUGFyc2VDb3VudC5s
b2FkKCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Jc1dhc21TdXBwb3J0ZWQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSXNXYXNtU3VwcG9ydGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21FbWJlZGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmgK
aW5kZXggYTIzNzlmZDU4OWM4OWRmNjM1N2U2ZTQ0MWJlZDJhNTE4NzM5Y2EzZS4uOTdiYjEwYzk4
ZThjZjkzZWE3M2QxOTg1OWVhNzhhNjQ5ZDg2NjhjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUVtYmVkZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUVtYmVkZGVyLmgKQEAgLTM2LDcgKzM2LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogbmFtZXNwYWNlIFdhc20gewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IGQxYjM4YTE0OGEyYjQ5NDFmY2U2
OTI3MjcxOTNlYWNmMTdhMGZkMjEuLjM5NDY0YThhYzAzMzgxM2YyNzcyMDQxZTY4ZGE3ZDAwMzk3
NGMwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuY3BwCkBAIC02OSw5ICs2OSw5IEBAIEZPUl9FQUNIX1dFQkFTU0VNQkxZX0NPTlNUUlVDVE9S
X1RZUEUoREVGSU5FX0NBTExCQUNLX0ZPUl9DT05TVFJVQ1RPUikKIAogI3VuZGVmIERFRklORV9D
QUxMQkFDS19GT1JfQ09OU1RSVUNUT1IKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxp
ZGF0ZUZ1bmMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRl
RnVuYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfQogCkBAIC0xNTgsMjMgKzE1OCwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJB
c3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmNJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIEpTUHJv
bWlzZURlZgogICAgIH0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIAotICAgIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QpOworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJy
ZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHsKICAgICAgICAg
YXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNy
ZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkp
Ci0gICAgICAgICAgICByZWplY3QoZXhlYywgY2F0Y2hTY29wZSwgcHJvbWlzZSk7CisgICAgICAg
ICAgICByZWplY3QoY2FsbEZyYW1lLCBjYXRjaFNjb3BlLCBwcm9taXNlKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgd2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoZXhl
YywgcHJvbWlzZSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICAgICAgICAgIHdlYkFzc2VtYmx5TW9k
dWxlVmFsaWRhdGVBc3luY0ludGVybmFsKGNhbGxGcmFtZSwgcHJvbWlzZSwgV1RGTW92ZShzb3Vy
Y2UpKTsKIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2Uo
KSk7CiAgICAgfQpAQCAtMzA0LDQyICszMDMsNDEgQEAgdm9pZCBKU1dlYkFzc2VtYmx5Ojp3ZWJB
c3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXMK
ICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCB2b2lkKCkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlz
ZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVh
dGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gY2F0Y2hT
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgICAgIEpTVmFsdWUgaW1wb3J0
QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1
bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgICAgIEpTT2JqZWN0KiBpbXBvcnRP
YmplY3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5lZCgpICYmICFpbXBvcnRPYmplY3QpKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsCisgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoY2FsbEZyYW1lLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZy
YW1lLAogICAgICAgICAgICAgICAgICJzZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuaW5z
dGFudGlhdGUgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpOwogICAg
ICAgICAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgSlNWYWx1ZSBmaXJzdEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAg
ICAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
ICAgICAgICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1v
ZHVsZSo+KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2
bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdh
c206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2
bSwgY2FsbEZyYW1lLCBwcm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIFJlc29sdmU6OldpdGhJbnN0YW5j
ZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQs
IGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21KUyk7CisgICAgICAgICAgICAgICAgY29tcGlsZUFuZEluc3RhbnRpYXRl
KHZtLCBjYWxsRnJhbWUsIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJp
dmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6Oldp
dGhNb2R1bGVBbmRJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkp
OwogICAgIH0KIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBbYmFzZSwgYnl0ZVNpemVdID0g
Z2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0
byBbYmFzZSwgYnl0ZVNpemVdID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIEJCUVBsYW4gcGxhbigmdm0ud2FzbUNvbnRleHQsIEJCUVBs
YW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKTsKICAgICAvLyBGSVhNRTogV2Ug
bWlnaHQgd2FudCB0byB0aHJvdyBhbiBPT00gZXhjZXB0aW9uIGhlcmUgaWYgd2UgZGV0ZWN0IHRo
YXQgc29tZXRoaW5nIHdpbGwgT09NLgpAQCAtMzQ3LDIwICszNDUsMTkgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHBsYW4ucGFyc2VB
bmRWYWxpZGF0ZU1vZHVsZShiYXNlLCBieXRlU2l6ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVm
ZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAgIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShjYWxsRnJhbWUsIGds
b2JhbE9iamVjdCk7CiAKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsK
ICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3Qp
KTsKICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHBy
b21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKQotICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcoZ2xv
YmFsT2JqZWN0LCBleGVjLCBwcm9taXNlLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAgIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENvbXBpbGVTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRl
ZCBpbiBqc2MsIG9ubHkgaW4gYnJvd3NlciBlbnZpcm9ubWVudAogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTM3MSwyMSArMzY4LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1p
bmdJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0
cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgewogICAgICAgICBhdXRvIGNh
dGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1ZhbHVlIGlt
cG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgICAgIEpTVmFsdWUgaW1wb3J0
QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgICAgICBKU09iamVjdCogaW1w
b3J0T2JqZWN0ID0gaW1wb3J0QXJndW1lbnQuZ2V0T2JqZWN0KCk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWSghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSkgewot
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLAor
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGNhbGxGcmFtZSwgY3JlYXRlVHlwZUVycm9yKGNh
bGxGcmFtZSwKICAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5
Lmluc3RhbnRpYXRlU3RyZWFtaW5nIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJfcywg
ZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRBcmd1
bWVudCkpKTsKICAgICAgICAgICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNo
U2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpKTsKICAgICAgICAgfSBl
bHNlIHsKQEAgLTM5Niw3ICszOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqCiAgICAgICAg
ICAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBvcnRPYmpl
Y3QgYW5kIGl0IGNvbnRhaW5zIGEgTWVtb3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRoZSBtb2R1
bGUgd2l0aCB0aGUgcmlnaHQgbWVtb3J5IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29raW5nIGF0
IHRoZSBtZW1vcnkncyB0eXBlLgotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBl
eGVjLCBwcm9taXNlLCBleGVjLT5hcmd1bWVudCgwKSwgaW1wb3J0T2JqZWN0KTsKKyAgICAgICAg
ICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRp
YXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBwcm9taXNlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLyBJbnN0YW50aWF0ZVN0cmVhbWluZyBpcyBub3Qgc3VwcG9ydGVkIGluIGpz
Yywgb25seSBpbiBicm93c2VyIGVudmlyb25tZW50LgogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseS5oCmluZGV4IDAxNzFjMTRhYjQ3MzQ0MDA5MDIzYTNlNDFhYTRkNmNiYzBlNDYzYjUuLjcx
ZTQxZGM1ZDhmMDA2NjcyMzIxYjU5ODVlMTE5OTZjNTg3YTc4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgKQEAgLTUzLDggKzUzLDggQEAgY2xh
c3MgSlNXZWJBc3NlbWJseSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBK
U1dlYkFzc2VtYmx5KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3Ry
ZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFu
dGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cAppbmRleCA3ZjJkMTdkZjI3MmI5N2RiYzA2MzhmMWRmNzcwYzA5MGVhOWIyZWNiLi5jNzM2ODVj
ZGYzZTBhZTU1MDg2ZTNmYzk3YWE2YjYzN2UxMDVlOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGF1dG8qIHN0
cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMs
IGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVy
ZSgpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWJB
c3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywg
dm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoY2FsbEZy
YW1lLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24q
PihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRy
LCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPndlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVy
ZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggZGRlNDJj
NTZmN2U1NTVjZDc2MDQ0ZmExYzgzMTdlZjFiMjMwZmI5Ni4uYjFlNjQ5ZjdiYjY3M2Q4OGExNjlm
ZmE0MDk1MzYwNWFkODUwMTliYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTU4LDExICs1OCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5RnVuY3Rpb246OnNfaW5m
byA9IHsgIldlYkFzc2VtYmx5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5RnVuY3Rpb24pIH07CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxX
ZWJBc3NlbWJseUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2Vi
QXNzZW1ibHlGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIFdlYkFzc2VtYmx5RnVu
Y3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKTsKICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRl
eCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKICAgICBjb25zdCBXYXNtOjpTaWdu
YXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0
dXJlSW5kZXgpOwogCkBAIC03OCwxNCArNzgsMTQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAg
IFdhc206Okluc3RhbmNlKiB3YXNtSW5zdGFuY2UgPSAmaW5zdGFuY2UtPmluc3RhbmNlKCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpOyArK2FyZ0luZGV4KSB7Ci0gICAgICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+
YXJndW1lbnQoYXJnSW5kZXgpOworICAgICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoYXJnSW5kZXgpOwogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChhcmdJ
bmRleCkpIHsKICAgICAgICAgY2FzZSBXYXNtOjpJMzI6Ci0gICAgICAgICAgICBhcmcgPSBKU1Zh
bHVlOjpkZWNvZGUoYXJnLnRvSW50MzIoZXhlYykpOworICAgICAgICAgICAgYXJnID0gSlNWYWx1
ZTo6ZGVjb2RlKGFyZy50b0ludDMyKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2FzbTo6RnVuY3JlZjogewogICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2Vt
Ymx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxsKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihleGVjLCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBh
biBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IoY2FsbEZyYW1lLCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBl
eHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOgpAQCAtOTQsMTAgKzk0LDEwIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWUoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFdhc206OkYzMjoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6
OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFyZy50b0Zsb2F0KGV4ZWMpKSk7CisgICAg
ICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQzMl90Pihhcmcu
dG9GbG9hdChjYWxsRnJhbWUpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBX
YXNtOjpGNjQ6Ci0gICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0
PHVpbnQ2NF90PihhcmcudG9OdW1iZXIoZXhlYykpKTsKKyAgICAgICAgICAgIGFyZyA9IEpTVmFs
dWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGFyZy50b051bWJlcihjYWxsRnJhbWUp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAgICAg
ICBjYXNlIFdhc206OkZ1bmM6CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
KQogICAgIC8vIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBjYWxsaW5nIGludG8gdGhlIGxs
aW50IG1heSBzdGFjayBvdmVyZmxvdywgYW5kIHRoZSBzdGFjayBvdmVyZmxvdwogICAgIC8vIGhh
bmRsZXIgbWlnaHQgcmVhZCB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHRoZSBjYWxsZWUuCiAgICAg
UHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChu
dWxscHRyLCB3YXNtRnVuY3Rpb24sIGNvbnRleHQsIGFyZ0NvdW50LCBhcmdzKTsKKyAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIGdsb2JhbE9iamVjdCwgd2FzbUZ1bmN0aW9uLCBjb250
ZXh0LCBhcmdDb3VudCwgYXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGggdGhpcyBl
bnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0ZWQgYnkg
QjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYKICAgICBX
YXNtOjpJbnN0YW5jZSogcHJldldhc21JbnN0YW5jZSA9IHZtLndhc21Db250ZXh0LmxvYWQoKTsK
QEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGNvbnN0IGlu
dHB0cl90IGZyYW1lU2l6ZSA9IChib3hlZEFyZ3Muc2l6ZSgpICsgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMpICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgY29uc3QgaW50cHRy
X3Qgc3RhY2tTcGFjZVVzZWQgPSAyICogZnJhbWVTaXplOyAvLyBXZSdyZSBtYWtpbmcgdHdvIGNh
bGxzLiBPbmUgdG8gdGhlIHdyYXBwZXIsIGFuZCBvbmUgdG8gdGhlIGFjdHVhbCB3YXNtIGNvZGUu
CiAgICAgICAgIGlmIChVTkxJS0VMWSgoc3AgPCBzdGFja1NwYWNlVXNlZCkgfHwgKChzcCAtIHN0
YWNrU3BhY2VVc2VkKSA8IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odm0uc29mdFN0YWNrTGltaXQo
KSkpKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSkpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3Bl
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSkpOwogICAgIH0KICAgICB2bS53
YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5zdGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAg
IEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNjg0MmY5NThiZDk4YTgzYWQ1MzkxYmRiYWY4MjJjYTMyNTYxY2UxMy4u
MDhmNDRhOTc0MTRmNGIwNWNmOGYxMjg1MTBmZTc4NDRiMDdmNjg3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3IuY3BwCkBAIC01OCwzOCArNTgsMzggQEAgY29uc3QgQ2xhc3NJbmZvIFdl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c18KIAogdXNpbmcgV2FzbTo6UGxhbjsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyBJZiBtb2R1bGVPYmplY3QgaXMgbm90IGEgV2ViQXNzZW1ibHkuTW9kdWxlIGluc3Rh
bmNlLCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9k
dWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0
PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiZmlyc3QgYXJndW1lbnQgdG8g
V2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSJfcywgZGVm
YXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBleGVjLT5hcmd1bWVu
dCgwKSkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgImZpcnN0IGFyZ3Vt
ZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUi
X3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKSk7CiAKICAgICAvLyBJZiB0aGUgaW1wb3J0T2JqZWN0IHBhcmFt
ZXRlciBpcyBub3QgdW5kZWZpbmVkIGFuZCBUeXBlKGltcG9ydE9iamVjdCkgaXMgbm90IE9iamVj
dCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgotICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBl
eGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKICAgICBKU09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1l
bnQuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5lZCgpICYm
ICFpbXBvcnRPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAic2Vjb25kIGFyZ3VtZW50
IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCJf
cywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKHZtLCBpbXBvcnRB
cmd1bWVudCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgInNlY29uZCBh
cmd1bWVudCB0byBXZWJBc3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBP
YmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwg
aW1wb3J0QXJndW1lbnQpKSkpOwogICAgIAotICAgIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVj
LT5uZXdUYXJnZXQoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWJBc3NlbWJseUlu
c3RhbmNlU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3Jl
YXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVL
ZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6
TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwor
ICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVBy
aXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJl
LCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2Rl
OjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBp
bnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21w
aWxlU3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpj
cmVhdGVKU1RvV2FzbVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9i
amVjdCwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOworICAgIGluc3RhbmNlLT5maW5hbGl6
ZUNyZWF0aW9uKHZtLCBjYWxsRnJhbWUsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZt
Lndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBpbXBvcnRPYmplY3QsIFdhc206
OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUluc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxK
U1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5Lklu
c3RhbmNlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNz
ZW1ibHkuSW5zdGFuY2UiKSk7CiB9CiAKIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvciog
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKaW5kZXggZjgxYjJhMWQ2MTMxMWM0MWQ5ZWE2OWE2
ZDEyMGU1ODIxYmZhODVlYi4uY2E2Zjk0MjU1YTFmOTM0OWYxYjdiZjU1ZmMwZTYwMjI3MTA4MTlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5j
RXhwb3J0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1
dC5oIgpAQCAtNjEsMTIgKzYxLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogZ2V0SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVu
Y0V4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoZXhl
Yywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IGdldEluc3RhbmNlKGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOyAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA0NzNjMjYzZGRmZDNjZDhk
Y2I1MDg5MjllZWYxMTlmMDZiZGMwNTEwLi4zNDEwOGEwOWMzNDk1NzhjY2VkMjQ1MzBmNzdjZDhk
MzNiNDlkMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDQsMjEg
KzQ0LDIxIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzCiAgQGVuZAogICovCiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxG
dW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT53ZWJBc3NlbWJs
eUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwg
Z2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpj
cmVhdGUoZXhlYywgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVh
dGUoY2FsbEZyYW1lLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rp
b24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJBc3Nl
bWJseUxpbmtFcnJvclN0cnVjdHVyZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRy
LCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPndlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwg
bWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MjM3MTI2N2I1ZTM2ODdjYWIzY2JhZGY3MTcxYTI4ZDQ3NGQwOTZiNS4uYTdjMWM2MWNhMzc5YmQz
Y2Y4ZjZmZThkNTE1M2VmZjlhNzM4MTI2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTQ4LDMyICs0OCwzMiBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbgogIEBlbmQKICAqLwog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSAhPSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5
IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQiX3MpKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZy
YW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQiX3Mp
KSk7CiAKICAgICBKU09iamVjdCogbWVtb3J5RGVzY3JpcHRvcjsKICAgICB7Ci0gICAgICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgSlNWYWx1ZSBhcmd1
bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgICAgIGlmICghYXJndW1lbnQuaXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5N
ZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5N
ZW1vcnkgZXhwZWN0cyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOwog
ICAgICAgICBtZW1vcnlEZXNjcmlwdG9yID0ganNDYXN0PEpTT2JqZWN0Kj4oYXJndW1lbnQpOwog
ICAgIH0KIAogICAgIFdhc206OlBhZ2VDb3VudCBpbml0aWFsUGFnZUNvdW50OwogICAgIHsKICAg
ICAgICAgSWRlbnRpZmllciBpbml0aWFsID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlu
aXRpYWwiKTsKLSAgICAgICAgSlNWYWx1ZSBtaW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoZXhlYywgaW5pdGlhbCk7CisgICAgICAgIEpTVmFsdWUgbWluU2l6ZVZhbHVlID0gbWVt
b3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgaW5pdGlhbCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIHVpbnQz
Ml90IHNpemUgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIG1pblNpemVWYWx1ZSk7CisgICAg
ICAgIHVpbnQzMl90IHNpemUgPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgbWluU2l6
ZVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFXYXNtOjpQYWdlQ291bnQ6OmlzVmFsaWQoc2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSAn
aW5pdGlhbCcgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiX3MpKSk7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwn
IHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkpOwogICAgICAgICBpZiAoV2FzbTo6UGFnZUNv
dW50KHNpemUpLmJ5dGVzKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRP
Zk1lbW9yeUVycm9yKGNhbGxGcmFtZSkpKTsKICAgICAgICAgaW5pdGlhbFBhZ2VDb3VudCA9IFdh
c206OlBhZ2VDb3VudChzaXplKTsKICAgICB9CiAKQEAgLTgyLDIzICs4MiwyMyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5
KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0
aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVuZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1
bHQuCiAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1kaWN0
aW9uYXJpZXMKICAgICAgICAgSWRlbnRpZmllciBtYXhpbXVtID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW0iKTsKLSAgICAgICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1v
cnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgbWF4aW11bSk7CisgICAgICAgIEpTVmFsdWUgbWF4U2l6
ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgbWF4aW11bSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIGlmICghbWF4U2l6ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHVp
bnQzMl90IHNpemUgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIG1heFNpemVWYWx1ZSk7Cisg
ICAgICAgICAgICB1aW50MzJfdCBzaXplID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUs
IG1heFNpemVWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFXYXNtOjpQYWdlQ291bnQ6
OmlzVmFsaWQoc2l6ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJX
ZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldlYkFz
c2VtYmx5Lk1lbW9yeSAnbWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiX3MpKSk7CiAg
ICAgICAgICAgICBtYXhpbXVtUGFnZUNvdW50ID0gV2FzbTo6UGFnZUNvdW50KHNpemUpOwogCiAg
ICAgICAgICAgICBpZiAoaW5pdGlhbFBhZ2VDb3VudCA+IG1heGltdW1QYWdlQ291bnQpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
IidtYXhpbXVtJyBwYWdlIGNvdW50IG11c3QgYmUgdGhhbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gdGhlICdpbml0aWFsJyBwYWdlIGNvdW50Il9zKSkpOworICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLAor
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIidtYXhpbXVt
JyBwYWdlIGNvdW50IG11c3QgYmUgdGhhbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdp
bml0aWFsJyBwYWdlIGNvdW50Il9zKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVhdGUoZXhl
Yywgdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1
Y3R1cmUoKSk7CisgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVh
dGUoY2FsbEZyYW1lLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVy
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0
cnlDcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKQEAgLTEwNiwxOCAr
MTA2LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIFsmdm1dIChXYXNtOjpN
ZW1vcnk6OlN5bmNUcnlUb1JlY2xhaW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9u
U2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6
R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3Vu
dCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBh
Z2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CiAgICAgaWYgKCFtZW1vcnkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1v
cnlFcnJvcihjYWxsRnJhbWUpKSk7CiAKICAgICBqc01lbW9yeS0+YWRvcHQobWVtb3J5LnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNZW1vcnkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3Nl
bWJseU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1lbW9yeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgdGhyb3dT
Y29wZSwgIldlYkFzc2VtYmx5Lk1lbW9yeSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZy
YW1lLCB0aHJvd1Njb3BlLCAiV2ViQXNzZW1ibHkuTWVtb3J5IikpOwogfQogCiBXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUq
IHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKaW5kZXggMTQ0MWE5YjRmNWE0
MjI5YjY5YmU1YjY2NDBhOTcwNDQ3MGMyYzA4NC4uYzE0MjExNzU0MGVhNGY4MTM4Zjk0NDU1Mjkz
YTNmYTI3YzA0NWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcApAQCAtMzUsOCArMzUsOCBA
QAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90
b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dy
b3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5sdXQuaCIKQEAgLTY2LDMxICs2NiwzMSBAQCBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIGdldE1lbW9yeShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YQog
ICAgIHJldHVybiBtZW1vcnk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3Nl
bWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7IAorICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShjYWxsRnJh
bWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIAotICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgZGVsdGEg
PSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCi0gICAgV2FzbTo6
UGFnZUNvdW50IHJlc3VsdCA9IG1lbW9yeS0+Z3Jvdyh2bSwgZXhlYywgZGVsdGEpOworICAgIFdh
c206OlBhZ2VDb3VudCByZXN1bHQgPSBtZW1vcnktPmdyb3codm0sIGNhbGxGcmFtZSwgZGVsdGEp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZm
ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdl
dE1lbW9yeShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5
TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVt
b3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpKTsKIH0KIAogV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA2YmFiOTRlYzk5ZGMwZmYzMTc4MDZkOGM1ZDljZTI0
MzM3ZGYyYjk1Li5lYmZlN2E3NzI4MWIzOWFjZmE2NDQyNTIzOTZjMmJkNDJmMTEwNjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtNDYsOSArNDYsOSBAQAogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1
bGVJbXBvcnRzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVs
ZUV4cG9ydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmgiCkBAIC02NSwyMyArNjUsMjIgQEAgY29u
c3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW4KICBAZW5kCiAgKi8KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0
aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGNhbGxGcmFtZSkpKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNE
eW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zIGNhbGxlZCB3aXRoIG5vbiBX
ZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBl
RXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zIGNhbGxl
ZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CiAKLSAgICBjb25z
dCBTdHJpbmcgc2VjdGlvbk5hbWVTdHJpbmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS5n
ZXRTdHJpbmcoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIHNlY3Rpb25OYW1lU3RyaW5nID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKLSAgICBKU0FycmF5KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxw
dHIsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogCiAgICAgY29uc3QgYXV0byYgY3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVsZUlu
Zm9ybWF0aW9uKCkuY3VzdG9tU2VjdGlvbnM7CkBAIC04OSw5ICs4OCw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIGlmIChTdHJpbmc6OmZyb21VVEY4KHNlY3Rpb24ubmFtZSkgPT0g
c2VjdGlvbk5hbWVTdHJpbmcpIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShzZWN0aW9uLnBheWxvYWQuZGF0YSgpLCBzZWN0aW9uLnBheWxvYWQuc2l6
ZSgpKTsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlT3V0
T2ZNZW1vcnlFcnJvcihleGVjKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGNhbGxGcmFtZSkpKTsKIAotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMs
IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgV1RGTW92ZShidWZmZXIpKSk7
CisgICAgICAgICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBKU0FycmF5QnVmZmVyOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVyKSkpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtOTks
MTcgKzk4LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1
bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUg
PSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+YXJndW1lbnQo
MCkpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNX
ZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
IW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1vZHVs
ZS5pbXBvcnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3Mp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHku
TW9kdWxlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVu
dCJfcykpKTsKIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICBjb25zdCBhdXRvJiBpbXBv
cnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydHM7CkBAIC0xMTgsMTIgKzEx
NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1w
b3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIik7CiAgICAgICAgIElkZW50aWZpZXIga2luZCA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJraW5kIik7CiAgICAgICAgIGZvciAoY29uc3QgV2Fz
bTo6SW1wb3J0JiBpbXAgOiBpbXBvcnRzKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZt
LCBtb2R1bGUsIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KGltcC5tb2R1bGUpKSk7CiAg
ICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6
ZnJvbVVURjgoaW1wLmZpZWxkKSkpOwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtp
bmQsIGpzU3RyaW5nKHZtLCBTdHJpbmcobWFrZVN0cmluZyhpbXAua2luZCkpKSk7Ci0gICAgICAg
ICAgICByZXN1bHQtPnB1c2goZXhlYywgb2JqKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChj
YWxsRnJhbWUsIG9iaik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzEsMTcgKzEyOSwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhw
b3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlNb2R1bGUqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzIGNhbGxlZCB3aXRoIG5vbiBX
ZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBl
RXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGgg
bm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudCJfcykpKTsKIAotICAgIEpTQXJyYXkqIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVs
bHB0ciwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAKICAgICBjb25zdCBhdXRvJiBleHBvcnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1h
dGlvbigpLmV4cG9ydHM7CkBAIC0xNDksMTEgKzE0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIik7
CiAgICAgICAgIElkZW50aWZpZXIga2luZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJr
aW5kIik7CiAgICAgICAgIGZvciAoY29uc3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBvcnRzKSB7
Ci0gICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZy
YW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0cmluZyh2bSwgU3RyaW5n
Ojpmcm9tVVRGOChleHAuZmllbGQpKSk7CiAgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwg
a2luZCwganNTdHJpbmcodm0sIFN0cmluZyhtYWtlU3RyaW5nKGV4cC5raW5kKSkpKTsKLSAgICAg
ICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBvYmopOworICAgICAgICAgICAgcmVzdWx0LT5wdXNo
KGNhbGxGcmFtZSwgb2JqKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MSwyMiArMTU4LDIyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1
bGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0
ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAg
IFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0s
IGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShleGVj
LCBXVEZNb3ZlKHNvdXJjZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKGNh
bGxGcmFtZSwgV1RGTW92ZShzb3VyY2UpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1vZHVs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHkuTW9kdWxlIikpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuTW9kdWxlIikpOwogfQog
CiBKU1dlYkFzc2VtYmx5TW9kdWxlKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVh
dGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDhkZTlkMmRkMDgyODA2YTFj
YzhmMzI0NzIzODJiYmYyMjM4YWE2ZDUuLmEyZjQ4OWU0Zjc0MjE3ODgxOWVkMDNhYTg1ZWY5NzZm
ODYxMDNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00
NCwyMyArNDQsMjMgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2UKICBAZW5kCiAgKi8KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLmlz
VW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CisgICAg
SlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJpbmcgbWVz
c2FnZVN0cmluZyA9IG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50
b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT53
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpKTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVjdHVyZSwgV1RGTW92ZShtZXNzYWdlU3RyaW5n
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cjo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHN0cnVjdHVyZSwgV1RGTW92ZShtZXNzYWdlU3RyaW5n
KSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0
dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KGV4ZWMtPnZtKCkpLT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVy
cm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAg
ICBKU1ZhbHVlIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5UnVudGltZUVycm9y
U3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5v
dGhpbmcsIGZhbHNlKSk7CiB9CiAKIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iq
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogdGhpc1By
b3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ1YzhlYjExYzhhNjliODll
YjJmOWNkOGMxZWUzNWU0MGFjMjYyZDEuLjQ5ZmU1ZTJiNjZlZTJlODBmNTU1ODA3YjgzMjY5ZWYw
M2U3OGVhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtNDUsNzAgKzQ1LDcwIEBA
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5VGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBKU09iamVjdCogbWVtb3J5RGVzY3JpcHRvcjsKICAgICB7Ci0gICAgICAg
IEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgSlNWYWx1ZSBh
cmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgICAgIGlmICghYXJndW1lbnQu
aXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJs
eS5UYWJsZSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxG
cmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5
LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsK
ICAgICAgICAgbWVtb3J5RGVzY3JpcHRvciA9IGpzQ2FzdDxKU09iamVjdCo+KGFyZ3VtZW50KTsK
ICAgICB9CiAKICAgICBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlIHR5cGU7CiAgICAgewogICAgICAg
ICBJZGVudGlmaWVyIGVsZW1lbnRJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJl
bGVtZW50Iik7Ci0gICAgICAgIEpTVmFsdWUgZWxlbWVudFZhbHVlID0gbWVtb3J5RGVzY3JpcHRv
ci0+Z2V0KGV4ZWMsIGVsZW1lbnRJZGVudCk7CisgICAgICAgIEpTVmFsdWUgZWxlbWVudFZhbHVl
ID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgZWxlbWVudElkZW50KTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICAgICAgU3RyaW5nIGVsZW1lbnRTdHJpbmcgPSBlbGVtZW50VmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CisgICAgICAgIFN0cmluZyBlbGVtZW50U3RyaW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3Ry
aW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChlbGVtZW50U3RyaW5nID09ICJmdW5jcmVm
IiB8fCBlbGVtZW50U3RyaW5nID09ICJhbnlmdW5jIikKICAgICAgICAgICAgIHR5cGUgPSBXYXNt
OjpUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50U3Ry
aW5nID09ICJhbnlyZWYiKQogICAgICAgICAgICAgdHlwZSA9IFdhc206OlRhYmxlRWxlbWVudFR5
cGU6OkFueXJlZjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0
aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnYW55cmVmJyJfcykpKTsKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBj
cmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMg
J2VsZW1lbnQnIGZpZWxkIHRvIGJlIHRoZSBzdHJpbmcgJ2Z1bmNyZWYnIG9yICdhbnlyZWYnIl9z
KSkpOwogICAgIH0KIAogICAgIElkZW50aWZpZXIgaW5pdGlhbElkZW50ID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImluaXRpYWwiKTsKLSAgICBKU1ZhbHVlIGluaXRpYWxTaXplVmFsdWUg
PSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgaW5pdGlhbElkZW50KTsKKyAgICBKU1ZhbHVl
IGluaXRpYWxTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoY2FsbEZyYW1lLCBpbml0
aWFsSWRlbnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdWludDMyX3QgaW5pdGlhbCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhl
YywgaW5pdGlhbFNpemVWYWx1ZSk7CisgICAgdWludDMyX3QgaW5pdGlhbCA9IHRvTm9uV3JhcHBp
bmdVaW50MzIoY2FsbEZyYW1lLCBpbml0aWFsU2l6ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gSW4gV2ViSURM
LCAicHJlc2VudCIgbWVhbnMgdGhhdCBbW0dldF1dIHJlc3VsdCBpcyB1bmRlZmluZWQsIG5vdCBb
W0hhc1Byb3BlcnR5XV0gcmVzdWx0LgogICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2lkbC1kaWN0aW9uYXJpZXMKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsK
ICAgICBJZGVudGlmaWVyIG1heGltdW1JZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtIik7Ci0gICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoZXhlYywgbWF4aW11bUlkZW50KTsKKyAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1l
bW9yeURlc2NyaXB0b3ItPmdldChjYWxsRnJhbWUsIG1heGltdW1JZGVudCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoIW1h
eFNpemVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIG1heGltdW0gPSB0b05vbldyYXBw
aW5nVWludDMyKGV4ZWMsIG1heFNpemVWYWx1ZSk7CisgICAgICAgIG1heGltdW0gPSB0b05vbldy
YXBwaW5nVWludDMyKGNhbGxGcmFtZSwgbWF4U2l6ZVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAo
aW5pdGlhbCA+ICptYXhpbXVtKSB7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICAgICAgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiJ21heGltdW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlhbCcgcHJvcGVydHkiX3MpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29w
ZSwKKyAgICAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIidtYXhpbXVt
JyBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRpYWwn
IHByb3BlcnR5Il9zKSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVmUHRyPFdhc206OlRh
YmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKGluaXRpYWwsIG1heGltdW0s
IHR5cGUpOwogICAgIGlmICghd2FzbVRhYmxlKSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsCisgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgImNvdWxkbid0IGNy
ZWF0ZSBUYWJsZSJfcykpKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKGV4ZWMsIHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUo
KSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShj
YWxsRnJhbWUsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwg
d2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUiKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWJBc3NlbWJseS5UYWJsZSIpKTsKIH0KIAog
V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAppbmRleCBlMWMxZmJh
YzE1Njg0YmE0MTllODZiNTRhMGM5YTc0YzM5MjkwMDFjLi4wOTljNDBmOTUwYjdlOWZmMWE2MTk4
NTA4YzhjNTJhOWEwNTk5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcApAQCAtMzQsMTAgKzM0
LDEwIEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVBy
b3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dl
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5sdXQuaCIKQEAgLTY3LDcyICs2Nyw3MiBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1dlYkFzc2VtYmx5VGFibGUqIGdldFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBK
U1ZhbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVBy
b3RvRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBn
ZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgpKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNH
cm93KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9
IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJs
eVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKLSAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1Vp
bnQzMihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB1aW50MzJfdCBv
bGRMZW5ndGggPSB0YWJsZS0+bGVuZ3RoKCk7CiAKICAgICBpZiAoIXRhYmxlLT5ncm93KGRlbHRh
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90
b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUgdGFibGUiX3MpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5n
cm93IGNvdWxkIG5vdCBncm93IHRoZSB0YWJsZSJfcykpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIob2xkTGVuZ3RoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBn
ZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgdWlu
dDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90
eXBlLmdldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRh
YmxlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJB
c3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4g
dGhlIGxlbmd0aCBvZiB0aGUgdGFibGUiX3MpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRhYmxlLT5nZXQoaW5kZXgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxl
KGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHZh
bHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMSk7CiAKLSAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
aW5kZXggPj0gdGFibGUtPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
IldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3Mg
dGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBl
Y3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKSkpOwog
CiAgICAgaWYgKHRhYmxlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpKSB7CiAgICAgICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKICAgICAgICAgV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb247CiAgICAgICAgIGlmICghdmFsdWUuaXNO
dWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlLCB3YXNtRnVuY3Rp
b24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFy
Z3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24i
X3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFz
c2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
IGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iX3MpKSk7CiAK
ICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgdGFibGUtPmNsZWFyKGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAppbmRleCBjZGU0ZjNjZjI2MDRhZGQ3NmNjMDRm
YjIyNGY5YTUyYmQyZGEwMzc2Li5iMWQyZTRlZWExNWNjMWUzZWNjMDM4ZDE5OGVmNTU5ZGMzYjRh
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6
c19pbmZvID0geyAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNPYmpl
Y3QqIGZ1bmN0aW9uID0gd2FzbUZ1bmN0aW9uLT5mdW5jdGlvbigpOwogICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9u
ZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBBcmdMaXN0
KGV4ZWMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5l
ZCgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CiB9CiAKIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0
YWJsZUZ1bmN0aW9uIGltcG9ydGFibGVGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJFcnJvckNvZGUuaAppbmRleCAzZjA2YTZiZmYxMTY4YTI1NzY5ZGRhNmNjNmJiM2Y3
MmM0MmIzYTllLi40NGI2OGIyZjJjY2I2MjM2ZDY5ZGVjZDRiOThiYTRhNjQ5ZjAwODI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oCkBAIC0yNyw4ICsyNyw5
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBKU09iamVjdDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFt
ZXNwYWNlIFlhcnIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb24uaAppbmRleCBiNjhhZDkwOTc1YjhmOWQxZjI1ZDAyYjZiYWZjNGVkN2Vk
NjI2OGU0Li4zYTkyNTA3Y2ZlN2ViMzdmMjMzY2EwNjYyZjgxZDQ5NzM0YTgxZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKQEAg
LTM2LDggKzM2LDkgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVy
Y2hhbnRTZXNzaW9uLmgKaW5kZXggMGM0ZmEyNDcwOWUyYjcwMzJlZDQ4ZjQyM2I4MDFjMWFiMGYy
NTE4MC4uYjQzMGQ2MzY1MzEwYTg5YTdmOTU0NDNlMGU2ODI0Njk3Y2VlZjQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmgKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogT0JKQ19DTEFT
UyBQS1BheW1lbnRNZXJjaGFudFNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDVjODNhMzdhMWI4MzdjZTMxNzVmNzQ5YzBlMTc1M2I1
OTRiNTJkMjYuLjIwNmMxZDU5ZjNiN2VkZmZhZmY0MThhYjZlMGE2NWE4YmI5YzdiZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zNiw4ICsz
Niw5IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IGE0NDcxMzI0MDNi
NTdlZWIyODZkNGQyZmFhNDFiZTBiOWMwNGM2NGQuLjRlMjA1MzVjNTZhZjJlN2RhZGFjMDA5ZTc2
YWYwMmMzOTBhMWMzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmgKQEAgLTM0LDggKzM0LDkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaAppbmRleCA1NTNhNDI5NzE1MDI4MWZmMDdmMzQ0YThmZmJmNzQ1MDc2MGQ2
ZmM2Li44ODFlZjY0NDlhYzMzZmIxMzBjZWRkMTlmZjBkNWI0NTQ1ZjQ1NTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTMyLDcgKzMyLDggQEAK
ICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0
YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuaAppbmRleCA3N2FhMzcxZmVlMzc4YTEyMTI2NWU0YjJhNGE1MDYyNjAw
ZWI2YjBkLi5hNDllYjQxYWRhZjBhYTQ1NTE5NGI5NjA5ZDkzZmRkOGRmZWY2NDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTMzLDgg
KzMzLDkgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggMjlm
OTU5MWYzZGUzYzg0OWZjNjRkZDY1YTE2MjJjMGIzOThjNzAyMC4uNjFhOTUwZTE0ZWMzM2YzMTg4
ZGFmYmMzMzMxOTFlZGVmYzVjOWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBTbG90VmlzaXRvcjsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaAppbmRleCBlMWExYWFhMjVmYTVkN2ZhM2Ez
MjkxMDZiNDA2ZGVkM2Q0YzIzYmNmLi42YTJhYTI0MWVmMTg0NGQzYmRlNzRkMjMyN2VjMTNkYmZi
NzM4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuaApAQCAtMzIsOCArMzIs
OSBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IGYwNjdjYjBhODM4
ZmU0MTBhNWVmMzMxNGQyYjBkOTQ0YjZlNTA1NWYuLjJmYmEzMjY5NGVjOTU5MDgzNTMxOTQ5ZjU3
YWQyOGUwNTE0N2ViMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmgKQEAgLTMyLDkgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oCmluZGV4IGViZGI4YTkw
MGQxNzVjNjgwM2QxYmFhZTliOWMzNjFmYjMyZDEzNTEuLjdmMmZlMTdjZjA5Y2I1NGVmZDE4OGM1
MzA0YzNjMTc5MmNkM2ViZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZ1NlY3VyaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nU2VjdXJpdHkuaApAQCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0
aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGlu
Q29uc3RydWN0b3IuaAppbmRleCA0Y2I1YmYwYTBkYjNjODM5NTRiODIzZDYzOTllNmIzNDM5ODBi
ZGM2Li5lNGViNDczMjMwOTRmOTNjZjY2ZWVlMmQ5ZThiNDhhZmVhZDA0MDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01C
dWlsdGluQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01CdWlsdGluQ28KIAogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpT
Qzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25z
dHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbENvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYpOwogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUg
Y2FsbENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCopOwpAQCAtMTEx
LDExICsxMTEsMTEgQEAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SlNET01PYmplY3RJbnNwZWN0
b3I8SlNDbGFzcz46OmlzQ29tcGxleFdyYXBwZXIsIEpTQzo6SlMKICAgICByZXR1cm4gY29udGV4
dCA/IGNyZWF0ZVdyYXBwZXI8dHlwZW5hbWUgSlNDbGFzczo6RE9NV3JhcHBlZD4oY29uc3RydWN0
b3IuZ2xvYmFsT2JqZWN0KCksIEpTQ2xhc3M6OkRPTVdyYXBwZWQ6OmNyZWF0ZSgqY29udGV4dCkp
IDogbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0Ns
YXNzPjo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01C
dWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBKU0M6OmpzQ2FzdDxKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcio+
KHN0YXRlLT5qc0NhbGxlZSgpKTsKLSAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y2FsbENvbnN0cnVj
dG9yKCpzdGF0ZSwgY3JlYXRlSlNPYmplY3QoKmNhc3RlZFRoaXMpKTsKKyAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0gSlNDOjpqc0Nhc3Q8SlNET01CdWlsdGlu
Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIHJldHVybiBjYXN0ZWRU
aGlzLT5jYWxsQ29uc3RydWN0b3IoKmNhbGxGcmFtZSwgY3JlYXRlSlNPYmplY3QoKmNhc3RlZFRo
aXMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q29uc3Ry
dWN0VHlwZSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAppbmRleCAwMTc2N2E5
NDBiMGM1YTFkOWVhYjEwNTcxMjQyY2RiNGY2NWM4MzYyLi45NjU2MzZhZDk0NjFjNzBjMDgzNzRi
Y2FkNDkyMzAwZjUwZDhmNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3Rvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3M+IGNsYXNzIEpTRE9NQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvckJhc2UK
ICAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCiAg
ICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KSB7IH0KICAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xh
c3MuCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3QoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNvbnN0cnVj
dG9yPEpTQ2xhc3M+KiBKU0RPTUNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0
cnVjdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yQmFzZS5jcHAKaW5kZXggOTZiYWQyNDU2NzFkZDkwMmVmZTRjM2UyYmZkYzEzNDBkYWY1Y2E0
NC4uMjYzNDIyMThjZTY4OGFhMjY0ZmNkMDBiNTVkZGRlNjM0Nzk4NTI3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcApAQCAt
MjksMTEgKzI5LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShKU0RPTUNvbnN0cnVjdG9yQmFzZSk7CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3Bl
cmF0b3IiX3MpOworICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDb25zdHJ1
Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciJfcyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oCmluZGV4IGYwYjEw
M2YwYzU5YTVhMWQ4NGIxYmZhNzE3NzRiYzVhYTk5MzdiZDAuLmI5MDExZGVkMjlhNjA2NDg0NmVm
ZGY5OGRmMTY4NzBjZmE0ZmMzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaApAQCAtNDYs
MTEgKzQ2LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlIDogcHVibGljIEpTRE9NCiAgICAgLy8gVXN1YWxseSBkZWZp
bmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgogICAgIHZvaWQgaW5pdGlhbGl6ZVBy
b3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CiAKLSAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSogZXhlYykKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgewotICAgICAgICBKU0M6OlZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAg
IEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbGxlZ2FsIGNvbnN0cnVjdG9yIl9z
KTsKKyAgICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSWxsZWdh
bCBjb25zdHJ1Y3RvciJfcyk7CiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShK
U0M6OmpzTnVsbCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4MDMwZDM1NDBmNWIxNDY0OTRjNTA2YmJiY2Zi
OGUyNDMyYWYxN2ViLi5mOTcwMTc0OTFlY2I0ZDhjM2FmMjY3NGU2ZWMzYjc2YmNlMGI3MzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CkBAIC01NCw5ICs1NCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9y
QnVpbHRpbnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VH
ZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEV4ZWNTdGF0ZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5z
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVh
bUFQSUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJET01HbG9iYWxPYmplY3QiLCAmSlNH
bG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0RPTUdsb2JhbE9iamVjdCkgfTsKIApAQCAtNzUsMzkgKzc1LDM5IEBAIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oY2VsbCktPkpTRE9NR2xvYmFsT2JqZWN0Ojp+SlNET01HbG9iYWxPYmpl
Y3QoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJv
ckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSogZXhlY1N0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChleGVjU3RhdGUp
OwotICAgIEFTU0VSVChleGVjU3RhdGUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYg
dm0gPSBleGVjU3RhdGUtPnZtKCk7CisgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJU
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAK
LSAgICBhdXRvIGludGVyZmFjZU5hbWUgPSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmdldFN0cmluZyhleGVjU3RhdGUpOworICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBhdXRvIGZ1bmN0aW9uTmFtZSA9IGV4ZWNTdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgYXV0byBmdW5j
dGlvbk5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldFN0cmluZyhjYWxs
RnJhbWUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjcmVhdGVUeXBlRXJyb3IoZXhlY1N0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1l
c3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4KCkuZGF0YSgpLCBmdW5jdGlvbk5hbWUudXRmOCgpLmRh
dGEoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVR5cGVFcnJvcihjYWxs
RnJhbWUsIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLnV0ZjgoKS5kYXRh
KCksIGZ1bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUqIGV4
ZWNTdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUdldHRlclR5cGVFcnJv
ckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEFTU0VSVChleGVjU3RhdGUpOwotICAgIEFTU0VSVChleGVjU3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYgdm0gPSBleGVjU3RhdGUtPnZtKCk7Cisg
ICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID09IDIpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGludGVyZmFjZU5hbWUg
PSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldFN0cmluZyhleGVjU3RhdGUpOwor
ICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
Z2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAg
ICBhdXRvIGF0dHJpYnV0ZU5hbWUgPSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdl
dFN0cmluZyhleGVjU3RhdGUpOworICAgIGF1dG8gYXR0cmlidXRlTmFtZSA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKIAotICAgIGF1dG8gZXJyb3IgPSBzdGF0aWNfY2FzdDxFcnJvcklu
c3RhbmNlKj4oY3JlYXRlVHlwZUVycm9yKGV4ZWNTdGF0ZSwgbWFrZUdldHRlclR5cGVFcnJvck1l
c3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4KCkuZGF0YSgpLCBhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5k
YXRhKCkpKSk7CisgICAgYXV0byBlcnJvciA9IHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihj
cmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2FnZShpbnRl
cmZhY2VOYW1lLnV0ZjgoKS5kYXRhKCksIGF0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpKTsK
ICAgICBlcnJvci0+c2V0TmF0aXZlR2V0dGVyVHlwZUVycm9yKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShlcnJvcik7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChFeGVj
U3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVh
bUFQSUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkucmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZCgpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggMjcwOWIxZmI5ODBmMTcwMzhk
Y2I5YzdhODQ3NTY3OTljZTJhNGViZC4uYWQ5ZmE4NTE3NDdiMzZiZjI5NGE0MmIwZTY0NmQ5OTVm
ZjFiZmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApA
QCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0
ZXJhdG9yVHJhaXRzPiBjbGFzcyBKU0RPTUl0ZXJhdG9yUHJvdG90eQogICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBuZXh0KEpT
Qzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBuZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiBwcml2
YXRlOgogICAgIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIDogQmFzZSh2bSwgc3RydWN0dXJlKSB7IH0KQEAgLTI0NiwxNiArMjQ2
LDE2IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFp
dHM+OjpuZXh0KEpTQzo6RXhlY1N0YXRlJiBzdGF0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
V3JhcHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNET01JdGVyYXRvclByb3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJh
aXRzPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNET01JdGVyYXRvclByb3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJh
aXRzPjo6bmV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBK
U0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWND
YXN0PEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPih2bSwgc3RhdGUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpT
RE9NSXRlcmF0b3I8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkNhbm5vdCBjYWxsIG5l
eHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qg
Y2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Igb2JqZWN0Il9zKSk7CiAKLSAgICByZXR1cm4g
SlNDOjpKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3ItPm5leHQoKnN0YXRlKSk7CisgICAgcmV0dXJu
IEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yLT5uZXh0KCpjYWxsRnJhbWUpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyLCB0eXBlbmFtZSBJdGVyYXRvclRyYWl0cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgK
aW5kZXggMjY1ZTZkM2UzNGNjMDQxMzBhMjBlNjYwYTdiNWNjNWU4MTdkYTA1NC4uZDNjODdhYjY4
ZWMxMWMyNDIyNmE2MjM1M2RjNDEyMTU2ODU2N2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01OYW1lZENvbnN0cnVjdG9yIDog
cHVibGljIEpTRE9NQ29uc3RydWN0b3IKICAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2gg
c3BlY2lhbGl6YXRpb24gY2xhc3MuCiAgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7IH0KICAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9y
IGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3M+IGlubGluZSBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NTmFtZWRDb25z
dHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXggMjI2YmVmOThhMzQ0MmE2ZDBmNDM3
MTgyNzlkMmM5MDU3ZjUwMGM4Yi4uZTFlZTZlNzMzOTUxYjVlZjRiNzViMDk5MmU4MTk2Zjk0NzY0
OTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgRE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQoSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iCiAgICAgYXV0byYgc3RhdGUg
PSAqZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRvKiBoYW5kbGVyID0gSlNDOjpK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nIHsg
fSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChFeGVjU3RhdGUqKSBtdXRhYmxlIHsK
KyAgICBhdXRvKiBoYW5kbGVyID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nIHsgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopIG11dGFibGUgewogICAgICAgICBjYWxs
YmFjaygpOwogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc1VuZGVm
aW5lZCgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCBjZDFlZGJhMDlhN2YyN2JkMmQ0ZmY1YjhkMWJkYmJmN2Qw
YWVlNDdlLi5lM2NjMmY5YzQxMTEwY2RhZThhNTQ3MDExNDUzNTRmMWQwNGY2NDE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02
NCw4ICs2NCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlv
blNob3dNb2RhbERpYWxvZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEV4ZWNTdGF0ZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25T
aG93TW9kYWxEaWFsb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtNjMxLDkgKzYz
MSw5IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJRExPcGVyYXRpb248SlNET01X
aW5kb3c+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIHRvSlNET01XaW5kb3co
c3RhdGUudm0oKSwgc3RhdGUudGhpc1ZhbHVlKCkudG9UaGlzKCZzdGF0ZSwgTm90U3RyaWN0TW9k
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbk9wZW5EYXRhYmFzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FsbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVu
RGF0YWJhc2VCb2R5Pigqc3RhdGUsICJvcGVuRGF0YWJhc2UiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FsbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVu
RGF0YWJhc2VCb2R5PigqY2FsbEZyYW1lLCAib3BlbkRhdGFiYXNlIik7CiB9CiAKIEpTVmFsdWUg
SlNET01XaW5kb3c6Om9wZW5EYXRhYmFzZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0YjljZTBhMzUwY2Q1N2NlZjg4OTBlNjg2Y2Ri
ZWJlYTg4M2Y1MGJiLi4zNDYyODE0MjJmMzcwYjc3ZDVlYTdjYjQxZjFkMWZiMGUwNzQwNzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGNv
bnN0cnVjdEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCitK
U0M6OkVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggN2EyOWJhMjVlYzY1NGExN2JlZTQ4
NWQ4NjhkOWFkYzgwZGVjMTc3NS4uNDBiYjJjMjZiMjVkMjlhMTE5YjQwYTliMmVmMWE5Y2M2OGNk
Mjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTSFRNTEVsZW1lbnQoRXhlY1N0YXRlJiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEV4ZWNTdGF0ZSYgZXhlYykKIHsKLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNET01Db25zdHJ1
Y3RvckJhc2UqPihleGVjLmpzQ2FsbGVlKCkpOwpAQCAtNTYsOCArNTYsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTSFRNTEVsZW1lbnQoRXhlY1N0YXRlJiBleGVj
KQogCiAgICAgSlNWYWx1ZSBuZXdUYXJnZXRWYWx1ZSA9IGV4ZWMudGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogbmV3VGFyZ2V0ID0gbmV3VGFyZ2V0VmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obmV3VGFyZ2V0LT5nbG9i
YWxPYmplY3Qodm0pKTsKLSAgICBKU1ZhbHVlIGh0bWxFbGVtZW50Q29uc3RydWN0b3JWYWx1ZSA9
IEpTSFRNTEVsZW1lbnQ6OmdldENvbnN0cnVjdG9yKHZtLCBnbG9iYWxPYmplY3QpOworICAgIGF1
dG8qIG5ld1RhcmdldEdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG5l
d1RhcmdldC0+Z2xvYmFsT2JqZWN0KHZtKSk7CisgICAgSlNWYWx1ZSBodG1sRWxlbWVudENvbnN0
cnVjdG9yVmFsdWUgPSBKU0hUTUxFbGVtZW50OjpnZXRDb25zdHJ1Y3Rvcih2bSwgbmV3VGFyZ2V0
R2xvYmFsT2JqZWN0KTsKICAgICBpZiAobmV3VGFyZ2V0VmFsdWUgPT0gaHRtbEVsZW1lbnRDb25z
dHJ1Y3RvclZhbHVlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2Nv
cGUsICJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9y
Il9zKTsKIApAQCAtNzYsMTQgKzc2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUmIGV4ZWMpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgIm5ldy50YXJnZXQgZG9lcyBub3QgZGVmaW5l
IGEgY3VzdG9tIGVsZW1lbnQiX3MpOwogCiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1Vw
Z3JhZGluZ0VsZW1lbnQoKSkgewotICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBn
ZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0sICpnbG9iYWxPYmplY3QpOworICAgICAg
ICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVu
dD4odm0sICpuZXdUYXJnZXRHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvKiBuZXdFbGVtZW50
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoJmV4
ZWMsIG5ld1RhcmdldFZhbHVlLCBiYXNlU3RydWN0dXJlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgUmVmPEhUTUxFbGVt
ZW50PiBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50SW50ZXJmYWNlLT5uYW1l
KCksIGRvY3VtZW50KTsKICAgICAgICAgZWxlbWVudC0+c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVu
dCgqZWxlbWVudEludGVyZmFjZSk7Ci0gICAgICAgIGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVs
ZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICBjYWNoZVdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBlbGVt
ZW50LnB0cigpLCBqc0VsZW1lbnQpOworICAgICAgICBhdXRvKiBqc0VsZW1lbnQgPSBKU0hUTUxF
bGVtZW50OjpjcmVhdGUobmV3RWxlbWVudFN0cnVjdHVyZSwgbmV3VGFyZ2V0R2xvYmFsT2JqZWN0
LCBlbGVtZW50LmdldCgpKTsKKyAgICAgICAgY2FjaGVXcmFwcGVyKG5ld1RhcmdldEdsb2JhbE9i
amVjdC0+d29ybGQoKSwgZWxlbWVudC5wdHIoKSwganNFbGVtZW50KTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKaW5kZXgg
MTBkNmY5NDIzZmRmNTVhNDc1MmUzZGJmOWRjNjljNjgzMGFkOTFhZC4uNDI5NTg5ZTg4ZDA3MjFk
MGZlMjllNjcyODE1N2U0NWVkNGMzNzJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCkBAIC0xMzksMjYgKzEz
OSwyNiBAQCBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxlbWVudCogZWxlbWVu
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUGx1Z2luKEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQbHVnaW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oZXhlYy0+anND
YWxsZWUoKSk7CisgICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hUTUxFbGVt
ZW50Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIC8vIEdldCB0aGUgcGx1Zy1pbiBz
Y3JpcHQgb2JqZWN0LgotICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRP
YmplY3QoZXhlYywgZWxlbWVudCk7CisgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdp
blNjcmlwdE9iamVjdChjYWxsRnJhbWUsIGVsZW1lbnQpOwogICAgIEFTU0VSVChzY3JpcHRPYmpl
Y3QpOwogCi0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7
CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudExpc3Q7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCi0gICAgICAgIGFyZ3VtZW50TGlzdC5hcHBl
bmQoZXhlYy0+YXJndW1lbnQoaSkpOworICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKGNhbGxG
cmFtZS0+YXJndW1lbnQoaSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRMaXN0Lmhhc092ZXJmbG93
ZWQoKSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGV4ZWMtPnZtKCksIHNjcmlwdE9iamVjdCwgY2FsbERhdGEpOworICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBzY3JpcHRP
YmplY3QsIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3Qp
OwogCiAgICAgLy8gQ2FsbCB0aGUgb2JqZWN0LgotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChl
eGVjLCBzY3JpcHRPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZXhlYy0+dGhpc1ZhbHVlKCks
IGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgc2Ny
aXB0T2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGFy
Z3VtZW50TGlzdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkFuaW1hdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkFuaW1hdGlvbkN1c3RvbS5j
cHAKaW5kZXggOGU5Y2I5ZWI5NDYzOTRmNTg5MzgzYmI0NTY4YzJlZGE5NWI5MzMxNi4uMmNkMDJh
ODVkYmIyYWIyOGJiNmQ3YTZiZTdmYTMwY2Y5MmNlZTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcApAQCAtNTIsOSArNTIs
OSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgV2ViQW5pbWF0aW9uJiB2YQogICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9i
YWxPYmplY3QsIHZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFuaW1hdGlvbihFeGVjU3RhdGUmIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFuaW1hdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRE9NQ29uc3RydWN0b3JCYXNlKj4oc3Rh
dGUuanNDYWxsZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDllZDEwZWU4N2ExODI0M2M4MTllMDdmYzU2Y2M1MjlhOGQxZjUy
ZDEuLjUzNjRkNGZiZWFmYWY2ZjQ3Yjc2N2EyMGM4NThiYmNkYWJkYmY4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yODAsMTgg
KzI4MCwxOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogCiAgICAgUmVmUHRyPExvYWRhYmxl
TW9kdWxlU2NyaXB0PiBtb2R1bGVTY3JpcHQoJm1vZHVsZVNjcmlwdFJlZik7CiAKLSAgICBhdXRv
JiBmdWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0o
KSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShFeGVjU3RhdGUq
IGV4ZWMpIC0+IEpTQzo6RW5jb2RlZEpTVmFsdWUgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246OmNy
ZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVTY3Jp
cHRdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSAt
PiBKU0M6OkVuY29kZWRKU1ZhbHVlIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
ICAgIElkZW50aWZpZXIgbW9kdWxlS2V5ID0ganNWYWx1ZVRvTW9kdWxlS2V5KGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBqc1ZhbHVlVG9N
b2R1bGVLZXkoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgbW9kdWxlU2NyaXB0LT5ub3Rp
ZnlMb2FkQ29tcGxldGVkKCptb2R1bGVLZXkuaW1wbCgpKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKIAotICAgIGF1dG8mIHJlamVjdEhh
bmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5Lndp
bmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oRXhlY1N0YXRlKiBleGVjKSB7Ci0g
ICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIEpTVmFsdWUgZXJyb3JWYWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGF1dG8mIHJlamVjdEhhbmRsZXIgPSAqSlNOYXRpdmVT
dGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5LndpbmRvdygpLCAxLCBTdHJpbmco
KSwgW21vZHVsZVNjcmlwdF0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
ICAgICBKU1ZhbHVlIGVycm9yVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAg
ICBpZiAoZXJyb3JWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBvYmplY3Qg
PSBKU0M6OmFzT2JqZWN0KGVycm9yVmFsdWUpOwogICAgICAgICAgICAgaWYgKEpTVmFsdWUgZmFp
bHVyZUtpbmRWYWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSY+KCp2bS5jbGllbnREYXRhKS5idWlsdGluTmFtZXMoKS5mYWlsdXJlS2luZFByaXZh
dGVOYW1lKCkpKSB7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpz
ZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3IK
ICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZSB7CiAgICAgICAgICAg
ICAgICAgTWVzc2FnZVNvdXJjZTo6SlMsCiAgICAgICAgICAgICAgICAgTWVzc2FnZUxldmVsOjpF
cnJvciwKLSAgICAgICAgICAgICAgICByZXRyaWV2ZUVycm9yTWVzc2FnZSgqZXhlYywgdm0sIGVy
cm9yVmFsdWUsIHNjb3BlKSwKKyAgICAgICAgICAgICAgICByZXRyaWV2ZUVycm9yTWVzc2FnZSgq
Y2FsbEZyYW1lLCB2bSwgZXJyb3JWYWx1ZSwgc2NvcGUpLAogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAxNmJl
N2M4MjUyMGIyZjc4Yjk4ZjBlODVmMDAwMjJjODM0ZWZkZGZjLi5kZDEzYzdkMzMxMTIyOTczY2Fi
ZGQzNWIzNjJlNWUzYmE3MTBiYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCkBAIC00MCwxMCArNDAsMTEgQEAgT0JKQ19DTEFTUyBXZWJTY3Jp
cHRPYmplY3Q7CiBzdHJ1Y3QgTlBPYmplY3Q7CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBK
U0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2UgQmluZGluZ3MgewogY2xhc3MgSW5zdGFuY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4
IGE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjguLjI3OWY2MmZjOWYxOTgz
MWEyYTYxMjUwNzdkNjkyZjU4MTBkZmM4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0zNCwxMSArMzQsMTIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU01vZHVsZUxv
YWRlcjsKIGNsYXNzIFNvdXJjZU9yaWdpbjsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCAxNTM4
NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyLi43Y2E1Zjg4ZmJmYWM5NTA3NjM0
Mzc0ZDM1ZjUxNWFjNzk3YzRhMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKQEAgLTMyLDcgKzMyLDggQEAKICNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgSlND
IHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKaW5kZXggM2EzOGFjNWVjNmEyMzAxMWJk
YjExMWVhMDE2MTI4YTViM2JmZTU3My4uYTZkYTYzOTNmMDA3MmYzYmQzM2NmNjJhYWY4Zjk4YjBm
YjViYzk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJl
ZENsb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xv
bmUuY3BwCkBAIC0zOSwxNSArMzksMTMgQEAgZW51bSBjbGFzcyBDbG9uZU1vZGUgewogICAgIFBh
cnRpYWwsCiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZm
ZXJJbXBsKEV4ZWNTdGF0ZSosIENsb25lTW9kZSk7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2xvbmVBcnJheUJ1ZmZlckltcGwoRXhlY1N0YXRlKiBzdGF0ZSwgQ2xvbmVNb2RlIG1v
ZGUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2xvbmVBcnJheUJ1ZmZlckltcGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgQ2xvbmVNb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKHN0YXRlKTsKICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7
Ci0gICAgQVNTRVJUKHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEFTU0VSVChz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdCk7CiAKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byogYnVmZmVyID0gdG9VbnNoYXJlZEFycmF5QnVmZmVyKHZtLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTU4LDYwICs1Niw2MCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXJJbXBsKEV4ZWNTdGF0ZSogc3RhdGUsIENs
b25lTW9kZSBtbwogICAgICAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA9PSAzKTsK
ICAgICAgICAgaW50IHNyY0J5dGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b051bWJlcihzdGF0ZSkpOwogICAgICAgICBpbnQgc3JjTGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9OdW1iZXIo
c3RhdGUpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpj
cmVhdGUoc3RhdGUtPnZtKCksIHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVm
ZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBidWZmZXItPnNs
aWNlKHNyY0J5dGVPZmZzZXQsIHNyY0J5dGVPZmZzZXQgKyBzcmNMZW5ndGgpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgp
LCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01v
ZGU6OkRlZmF1bHQpLCBidWZmZXItPnNsaWNlKHNyY0J5dGVPZmZzZXQsIHNyY0J5dGVPZmZzZXQg
KyBzcmNMZW5ndGgpKSk7CiAgICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwg
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5QnVmZmVyOjpjcmVhdGUo
c3RhdGUtPnZtKCksIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY2xvbmVBcnJheUJ1
ZmZlckltcGwoc3RhdGUsIENsb25lTW9kZTo6UGFydGlhbCk7CisgICAgcmV0dXJuIGNsb25lQXJy
YXlCdWZmZXJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBDbG9uZU1vZGU6OlBhcnRpYWwp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5
QnVmZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChz
dGF0ZSwgQ2xvbmVNb2RlOjpGdWxsKTsKKyAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIENsb25lTW9kZTo6RnVsbCk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAgIEFTU0VSVChzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICBBU1NFUlQoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byogYnVmZmVyVmlldyA9IGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdmFsdWUpOwogICAgIEFTU0VSVChidWZmZXJWaWV3KTsK
IAogICAgIGF1dG8qIGJ1ZmZlciA9IGJ1ZmZlclZpZXctPnVuc2hhcmVkQnVmZmVyKCk7CiAgICAg
aWYgKCFidWZmZXIpIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICB0aHJvd0RhdGFDbG9uZUVycm9yKCpzdGF0ZSwgc2NvcGUpOworICAgICAg
ICB0aHJvd0RhdGFDbG9uZUVycm9yKCpjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgYXV0byBidWZmZXJDbG9uZSA9IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJ1ZmZlclZpZXctPnN0cnVjdHVyZSh2bSk7CiAKICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU0ludDhBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNJbnQ4QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1
ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgo
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50OEFycmF5OjpjcmVhdGUo
Y2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNJbnQxNkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0ludDE2QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZBcnJheTo6Y3JlYXRlKGNh
bGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTSW50MzJBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNJbnQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJD
bG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShjYWxs
RnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1VpbnQ4QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVWludDhBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OEFycmF5OjpjcmVhdGUoY2FsbEZy
YW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zm
c2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNV
aW50OENsYW1wZWRBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwg
YnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVWludDE2QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJl
LCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJW
aWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2
QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSks
IGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVy
ZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVy
Vmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQz
MkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUp
LCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNGbG9hdDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVj
dHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVm
ZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zs
b2F0MzJBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNs
b25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwog
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0NjRBcnJheTo6Y3JlYXRlKHN0YXRlLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCks
IGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZm
ZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkp
KTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RhdGFWaWV3OjpjcmVhdGUoc3RhdGUsIHN0cnVj
dHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVm
ZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Rh
dGFWaWV3OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUp
LCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0
dXJlZENsb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUu
aAppbmRleCBhNmU0ZjgzMDYzM2VhYzgzNmYwMjg5MTY3OWE4YjViM2RhMGJmNzE1Li4yNDY2Yjlm
NzVlN2YwNmJkMzVhYTQ3MzY5YjZjN2NkMDAwMGEwN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuaApAQCAtMjUsMTQgKzI1LDE2IEBACiAgKi8KIAog
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IHVzaW5nIEVuY29kZWRKU1ZhbHVlID0gaW50NjRfdDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2xvbmVBcnJheUJ1ZmZlcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggY2MwMjhj
MjUxM2FiMThjZTUwNTc2Y2Y2ODc5ZjZmNzc0MTg5Nzc3ZS4uMDg3NjE3OTk2MWE1NTcyYjg0MWI2
ODc3MzFiNDI3OTk2YjM1MTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlv
bmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdG
cm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0cmlidXRlKSA6IHVuZGVmOwogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdl
dEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtmdW5jdGlvbk5hbWV9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtMzAyOCw3ICszMDI4LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAKICAgICBpZiAoSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIi8vIEN1c3RvbSBjb25zdHJ1Y3Rvclxu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0JHtjbGFzc05hbWV9KEpTQzo6RXhlY1N0YXRlJik7XG5cbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lJik7
XG5cbiIpOwogICAgIH0KIAogICAgIGlmIChOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MoJGludGVy
ZmFjZSkpIHsKQEAgLTM5NzAsNyArMzk3MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1
dGUgPyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1
dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFt
ZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rp
b25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7XG4iKTsKICAgICAgICAgICAg
IGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7CiAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5oIn0gPSAxOwogICAgICAgICAg
ICAgICAgIG15ICRuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgPSAkY29kZUdlbmVyYXRv
ci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICJXaXRob3V0VHlwZUNoZWNrIjsKQEAgLTUx
ODYsOCArNTE4Niw5IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0aW9u
CiAgICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMsICJQcm9taXNlRXhlY3V0
aW9uU2NvcGU6OiR7ZXhwb3N1cmVTY29wZX0iKSBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGUgJiYg
ISRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JldHVybnNPd25Qcm9taXNlfTsKICAg
ICBwdXNoKEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cywgIkNhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQiKSBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJp
dmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UHVibGljSWRlbnRpZmllcn0pOwogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIp
OworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtmdW5jdGlvbk5hbWV9KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICR7aWRsT3BlcmF0aW9uVHlwZX08JHtjbGFz
c05hbWV9Pjo6JHtjYWxsRnVuY3Rpb25OYW1lfTwiIC4gam9pbigiLCAiLCBAY2FsbEZ1bmN0aW9u
VGVtcGxhdGVBcmd1bWVudHMpIC4gIj4oKnN0YXRlLCBcIiIgLiAkb3BlcmF0aW9uLT5uYW1lIC4g
IlwiKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CkBAIC01NDc0
LDggKzU0NzUsOSBAQCBzdWIgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbgogICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlMke2ludGVyZmFjZU5h
bWV9OjpzZXJpYWxpemUoKnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlKSk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25O
YW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTJHtpbnRlcmZhY2VOYW1lfT46OmNhbGw8JHtzZXJp
YWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfUJvZHk+KCpzdGF0ZSwgXCIke3NlcmlhbGl6ZXJGdW5j
dGlvbk5hbWV9XCIpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIik7CkBAIC01NTIyLDEzICs1NTI0LDEzIEBAIHN1YiBHZW5l
cmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zCiAKICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rp
b25QcmVmaXggPSAiY2FsbCR7Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRnVuY3Rpb25QcmVm
aXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRnVuY3Rpb25QcmVmaXh9KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpO1xuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNo
ZXIoJGxlZ2FjeUNhbGxlcnNbMF0sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4
LCAiIiwgInN0YXRlIik7CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKCRsZWdh
Y3lDYWxsZXJzWzBdLCAkaW50ZXJmYWNlLCAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCwgIiIsICJn
bG9iYWxPYmplY3QsIHN0YXRlIik7CiAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxu
XG4iKTsKICAgICB9IGVsc2UgewpAQCAtNTU0OSwxMyArNTU1MSwxMyBAQCBzdWIgR2VuZXJhdGVM
ZWdhY3lDYWxsZXJEZWZpbml0aW9uCiAKICAgICBteSAkaXNPdmVybG9hZGVkID0gJG9wZXJhdGlv
bi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogICAgIGlm
ICgkaXNPdmVybG9hZGVkKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRp
b24tPntvdmVybG9hZEluZGV4fShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKVxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShF
eGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFtZX0oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgIH0KIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xu
Iik7CiAKQEAgLTY0MjMsOCArNjQyNSw5IEBAIEVORAogICAgICAgICB9CiAKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjwke2NsYXNzTmFtZX0+Ojpj
YWxsPCR7ZnVuY3Rpb25OYW1lfUNhbGxlcj4oKnN0YXRlLCAiJHtwcm9wZXJ0eU5hbWV9Iik7CiB9
CiAKQEAgLTcxODYsMTMgKzcxODksMTMgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9ucwogCiAgICAgICAgICAgICBteSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJjb25zdHJ1
Y3Qke2NsYXNzTmFtZX0iOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xh
c3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7XG4iKTsKIAotICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIoQHsk
aW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9WzBdLCAkaW50ZXJmYWNlLCAkb3ZlcmxvYWRGdW5jdGlv
blByZWZpeCwgIiIsICJzdGF0ZSIpOworICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZERpc3Bh
dGNoZXIoQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9WzBdLCAkaW50ZXJmYWNlLCAkb3Zlcmxv
YWRGdW5jdGlvblByZWZpeCwgIiIsICJnbG9iYWxPYmplY3QsIHN0YXRlIik7CiAKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNpZiAoQGNvbnN0
cnVjdG9ycyA9PSAxKSB7CkBAIC03MjE2LDIxICs3MjE5LDIyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkg
ewogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ29u
c3RydWN0b3J9KSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBBU1NFUlQoZXhlYyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gY29uc3RydWN0JHtjbGFzc05hbWV9KCpleGVjKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChzdGF0ZSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBj
b25zdHJ1Y3Qke2NsYXNzTmFtZX0oZ2xvYmFsT2JqZWN0LCAqc3RhdGUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICAgfSBlbHNpZiAoIUhh
c0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpICYmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yKSkgewogICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVy
bG9hZHN9ICYmIEB7JG9wZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlm
ICgkaXNPdmVybG9hZGVkKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0
aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0JHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25z
dHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihzdGF0ZS0+anNDYWxsZWUoKSk7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggOWRhMGRlZGQ0
ZTM4OWFiOGFiOGY1ZGFjYzMzZGY2NWVlYmQyOTRkYS4uOWMzODk5NTIxNGZjMDUyYWVmMzE4YjQ4
ZDJiZjUwZWMyOTY0NzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTQ1LDE1ICs0NSwxNSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25IYXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbktleXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25DbGVhcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25HZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25BZGQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25DbGVhcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkRlbGV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0yMjIsOCArMjIyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keShKU0M6OkV4ZWNTdGEKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkR2V0VG9NYXBMaWtl
KCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldEJvZHk+
KCpzdGF0ZSwgImdldCIpOwogfQogCkBAIC0yMzgsOCArMjM5LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keShKU0M6
OkV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJk
SGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhh
cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkhhc0JvZHk+KCpzdGF0ZSwgImhhcyIpOwogfQogCkBAIC0yNTAsOCArMjUyLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
RW50cmllc0JvZHkoSlNDOjpFeGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
RW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keT4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCkBAIC0y
NjIsOCArMjY1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkoSlNDOjpFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uS2V5cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQm9keT4oKnN0YXRlLCAia2V5cyIpOwogfQogCkBA
IC0yNzQsOCArMjc4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpzdGF0ZSwg
KmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46
OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5Pigqc3RhdGUsICJ2YWx1
ZXMiKTsKIH0KIApAQCAtMjkwLDggKzI5NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5KEpTQzo6RXhlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JF
YWNoKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2hCb2R5Pigqc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKQEAgLTMwNiw4
ICszMTIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25BZGRCb2R5KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRBZGRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+Ojpj
YWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkQm9keT4oKnN0YXRlLCAiYWRkIik7CiB9
CiAKQEAgLTMxOSw4ICszMjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhckJvZHkoSlNDOjpFeGVjUwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhcihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkNsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJCb2R5
Pigqc3RhdGUsICJjbGVhciIpOwogfQogCkBAIC0zMzUsOCArMzQzLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9k
eShKU0M6OkV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkRGVsZXRlVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkRlbGV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCpzdGF0ZSwgImRlbGV0ZSIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25s
eU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcAppbmRleCA3NDc4OTU5MzEyMjYxMjZlYjMxMTgxNzliNTg4NmQ2
OTQwMzUyZGE4Li5jZmEyODEwMTNjMWJhMWUwNmFmN2ZiMDlhMmJlMjNhNDYwYTg0M2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25s
eU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uSGFzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIxNiw4ICsyMTYsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkdldEJvZHkoSlNDOgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFk
T25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRC
b2R5Pigqc3RhdGUsICJnZXQiKTsKIH0KIApAQCAtMjMyLDggKzIzMyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
SGFzQm9keShKU0M6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkhhcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46
OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0JvZHk+KCpzdGF0ZSwg
ImhhcyIpOwogfQogCkBAIC0yNDQsOCArMjQ2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keSgK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmllc1Rv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRyaWVzIik7
CiB9CiAKQEAgLTI1Niw4ICsyNTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5KEpTQwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpz
dGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uS2V5c0JvZHk+KCpzdGF0ZSwgImtleXMiKTsKIH0KIApAQCAtMjY4LDggKzI3Miw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25s
eU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNC
b2R5Pigqc3RhdGUsICJ2YWx1ZXMiKTsKIH0KIApAQCAtMjg0LDggKzI4OSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaEJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
Zm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxs
YmFjaykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2giKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAppbmRleCA3ZTM5ZjBkMmI3OTU5MWE2OTQxMDNkNDA4NGQzNTU2Mzlm
NmQ2NjhmLi5hMTQ3N2UxMmVmZGI2ZjRmYmM5MjMxOTZmMzZhYzU1NDMzNTVhYjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNDYsOCArNDYsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3Rp
dmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC0yMjcsOCArMjI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmcKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEFj
dGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0aW9uQm9keT4oKnN0YXRlLCAiZXhjaXRpbmdGdW5jdGlvbiIpOwogfQog
CkBAIC0yNDUsOCArMjQ2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3MKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3Nh
Z2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNz
YWdlQm9keT4oKnN0YXRlLCAicG9zdE1lc3NhZ2UiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
cy5jcHAKaW5kZXggOTRiYWFmNGZiZjk1ZjA5MDk4ZDY2ZjdlMDE4ZWJkZDcyNmQyZGVmYi4uMzBl
NGQ4ZDVhODBiNWU3MGU0ZjNkY2JkMzA3NTgwMWQ3ZTliZWUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1
bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFj
dGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlv
bnNOb3ROZWVkZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8v
IEF0dHJpYnV0ZXMKIApAQCAtNDE2LDggKzQxNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENF
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENFUmVhY3Rpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q0VSZWFjdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENF
UmVhY3Rpb25zIik7CiB9CiAKQEAgLTQzMSw4ICs0MzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhbGw8anNU
ZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5l
ZWRlZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKaW5kZXggOGIx
OTk1ZmI2OWVlZjY1YThkMTM4ZDZjMzI5NzAyMmY0ZTc1NjEwYy4uMzhkNDFmMzVlMWJlNjM4M2Mx
Mjg0ZDA3OWY4MWNmOWI2MTI1YTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjU2LDggKzI1
Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25UCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmlu
ZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggNzU5ZTkwYmI1MjdkNjVkMjEy
YzEzZTllMzRkNDg2NjRmZDM0OTVmYS4uNmMwM2Y0NzYyNzMwOTViMzQ1M2I0YmM5MDA1OWViMzIz
NGFhN2M5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbkludGVyZmFjZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25T
cGVjaWZpZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEFy
Z3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVs
bGFibGVBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25X
aXRoVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25TcGVjaWZpZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3Vt
ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50
QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERl
ZmF1bHRWYXJpYW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzUzLDggKzM1Myw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0
T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25JbnRlcmZhY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2VCb2R5Pigqc3RhdGUsICJ0ZXN0
T3BlcmF0aW9uSW50ZXJmYWNlIik7CiB9CiAKQEAgLTM2OSw4ICszNzAsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
VGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keT4oKnN0YXRlLCAi
dGVzdE9wZXJhdGlvblNwZWNpZmllZCIpOwogfQogCkBAIC0zOTMsOCArMzk1LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5
cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50
c0JvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzIik7CiB9CiAKQEAgLTQx
Myw4ICs0MTYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxs
YWJsZUFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVs
bGFibGVBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9keT4oKnN0YXRlLCAi
dGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Iik7CiB9CiAKQEAgLTQzMyw4ICs0Mzcs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1l
bnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1l
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlv
bldpdGhWYXJpYW50QXJndW1lbnQiKTsKIH0KIApAQCAtNDUzLDggKzQ1OCw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJn
dW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ0
ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKQEAgLTQ3MSw4
ICs0NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25h
bFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0
aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3Vt
ZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dCIpOwogfQogCkBAIC00ODksOCArNDk2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RP
cGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+Ojpj
YWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVm
YXVsdFZhcmlhbnRBcmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVs
dFZhcmlhbnRBcmd1bWVudCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDVhZWZkNjlhNTRk
MWUzMGFlYWRhMDUwNDc0ZDhhZThjZTVjZDhiNjIuLjYxMjdkOGUxNDdlN2E0Yjk3ODk0NDk1ODdi
MGU4NTg0NjhhN2ZjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC01NCwxNSArNTQsMTUgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayhK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8
SURMRE9NU3RyaW5nPik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVt
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbVdpdGhv
dXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpT
QXJndW1lbnRUeXBlPElETFVuc2lnbmVkU2hvcnQ+LCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBl
PElETFVuc2lnbmVkU2hvcnQ+KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayhKU0M6OkV4ZWNTdGF0ZSos
IEpTVGVzdERPTUpJVCopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4pOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5h
bWVXaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklU
OjpJRExKU0FyZ3VtZW50VHlwZTxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pik7
CiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTExMjUsOCArMTEyNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZUJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklU
Pjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUJvZHk+KCpz
dGF0ZSwgImdldEF0dHJpYnV0ZSIpOwogfQogCkBAIC0xMTU3LDggKzExNTgsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25J
dGVtQm9keShKU0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVtIik7CiB9CiAKQEAgLTEx
ODUsOCArMTE4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHkoCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6
Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHk+KCpzdGF0
ZSwgImhhc0F0dHJpYnV0ZSIpOwogfQogCkBAIC0xMjEzLDggKzEyMTYsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRF
bGVtZW50QnlJZEJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZh
Y2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdl
dEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlk
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVs
ZW1lbnRCeUlkIik7CiB9CiAKQEAgLTEyNDMsOCArMTI0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRz
QnlOYW1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2Rl
TGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1l
bnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQm9keT4oKnN0YXRl
LCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCmluZGV4IDg5ZGI2NDQ1OGM3OWE5MmI4NDc4NDBiNTk1MmNlMDE4YThlMWYyZDEuLjU5
NTdiNjNlNDAxMzEzZDgwZWNjYzQxODE3MDQ0YzlhODEzMjUxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC0yOTcsOCArMjk3
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhbGw8anNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgImVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb24iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IGI2ZDhkNWMyMTE2MjQ0NWMxZDFmMWMxOTY1YzI3YTU4OGIxNjY4NTUuLjU1NGVj
OGEwZDNiN2NlNzk0MTAyOTdmZjcwYzZhNmUxYTRjZGUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBjbGFzcyBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAKIHVz
aW5nIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdChF
eGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDQxMmU2NWYyOGJkNDg3MWJhMGQ3YzY3NGU3Mjc0MmNmODk2NmZkOTQuLmJj
NjA1ZjcwMWI4MTBhOTc1MzZkY2E2MTdlOWUzMjI5NzBmMzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBG
dW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkl0ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMjQ2LDggKzI0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RXZlbnRUYXJn
ZXQ+OjpjYWxsPGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQm9keT4oKnN0
YXRlLCAiaXRlbSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJmYjVm
NjBkMDQzYjU2ODUyYmJmOTFhYWJmMDA0MTg3YTAyZjM4NGYuLmQ3ODEyODVkNmVkNDBlYjQ4MWRl
YTYwN2YwZWFmNzMzNzg0ZDZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0x
MjAsMjMgKzEyMCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blJlZ3VsYXJPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVh
dHVyZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJs
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6
RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVh
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0dHJpYnV0
ZXMKQEAgLTI1MDgsOCArMjUwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9w
ZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9w
ZXJhdGlvbkJvZHk+KCpzdGF0ZSwgInJlZ3VsYXJPcGVyYXRpb24iKTsKIH0KIApAQCAtMjU2Myw4
ICsyNTY0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW4KICAgICByZXR1cm4gYXJnc0NvdW50
IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
T3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7
CiB9CiAKQEAgLTI1ODMsOCArMjU4NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbFN0YXRp
Yzxqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0
aWMiKTsKIH0KIApAQCAtMjYwMyw4ICsyNjA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGUK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQm9keT4oKnN0YXRlLCAiZW5hYmxlZElu
U3BlY2lmaWNXb3JsZCIpOwogfQogCkBAIC0yNjIxLDggKzI2MjUsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRp
bWVGZWF0dXJlRW5hYmxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZCIpOwogfQogCkBAIC0yNjM5LDggKzI2NDQsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRJblNwZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZChF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0Vu
YWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlc0VuYWJsZWQiKTsKIH0KIApAQCAtMjY1NCw4ICsyNjYwLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0
UHJpdmF0ZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0
UHJpdmF0ZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQm9keSwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKnN0YXRlLCAidGVzdFByaXZhdGVGdW5jdGlvbiIpOwogfQogCkBAIC0y
NjcwLDggKzI2NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1By
b21pc2U8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
OjpXaW5kb3dPbmx5Pigqc3RhdGUsICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKTsKIH0KIApAQCAt
MjY4Myw4ICsyNjkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb28KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0
U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgImdldFNlY3JldEJvb2xl
YW4iKTsKIH0KIApAQCAtMjY5Nyw4ICsyNzA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUcK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9v
bGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAidGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggZjFjZTllZTQ2OTc2OTQxNTJjYjMzNjYzODVi
ZDU1M2MwNTFlNWZlZC4uZjVmODY3YzQ0ZjVhOWQ5NmJmMDZkZGMzZjFhNGM0YzE3YzlhNTVhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25z
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjc2
LDggKzI3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4
ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCpz
dGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBj
MDNkNzhiNmI2ZTViY2NlYmNlYzBiZGU1MWZiNjQ0YzVjZDBhYzUxLi5kNDVhZDA2ZmVkMjU2ZDkw
ZjA0YmU3ZGRkNzgxMWE4N2UxNWI5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNjgs
MzEgKzY4LDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVt
ZW50c01ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2Qx
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2QzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kNChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
NChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5v
ZGVzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFs
TWV0aG9kNChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0
dHJpYnV0ZXMKQEAgLTI0NCw5ICsyNDQsOSBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBwbGVtZW50
YWw6OlNVUFBMRU1FTlRBTENPTlNUQU5UMSA9PSAxLCAiU1VQUExFTUVOVEFMQ09OU1RBTgogc3Rh
dGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBMID09IDIsICJDT05TVF9JTVBM
IGluIFRlc3RTdXBwbGVtZW50YWwgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKICNl
bmRpZgogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBA
IC04NzMsOCArODczLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGgKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2Fs
bDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxQm9keT4o
KnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKIH0KIApAQCAtODk4LDggKzg5OSw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwuaW1wbGVtZW50c01ldGhvZDIoKmNvbnRleHQsIFdURk1vdmUoc3Ry
QXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMkJvZHk+KCpzdGF0ZSwgImlt
cGxlbWVudHNNZXRob2QyIik7CiB9CiAKQEAgLTkxMyw4ICs5MTUsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVt
ZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDNCb2R5Pigqc3RhdGUs
ICJpbXBsZW1lbnRzTWV0aG9kMyIpOwogfQogCkBAIC05MjksOCArOTMyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25JbXBsZW1lbnRzTWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGxTdGF0aWM8anNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keT4oKnN0YXRlLCAiaW1wbGVt
ZW50c01ldGhvZDQiKTsKIH0KIApAQCAtOTQ2LDggKzk1MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rl
c0JvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETElu
dGVyZmFjZTxOb2RlPj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZN
b3ZlKGltcGxSZXN1bHQubm9kZXMpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5Pigqc3RhdGUsICJ0YWtlTm9kZXMiKTsKIH0KIApA
QCAtOTYzLDggKzk2OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+
OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
MUJvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKIH0KIApAQCAtOTg4LDggKzk5
NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDIoaW1wbCwgKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBw
bGVtZW50YWxNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMkJvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1l
dGhvZDIiKTsKIH0KIApAQCAtMTAwMyw4ICsxMDEwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFs
TWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbE1l
dGhvZDMoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDNCb2R5Pigqc3RhdGUs
ICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiB9CiAKQEAgLTEwMTksOCArMTAyNyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1
bmN0aW9uU3VwcGxlbWVudGFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1
bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0YXRpYzxqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNEJvZHk+KCpzdGF0
ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDQiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXgg
NzRmODQ3NWM5MmRkMmU2YjdmNWE1NWIxNzA0N2E0NjdjMzBhZWZjMi4uODdhODgxZDQ1NDhlOTI0
YzMzNjE0ZGM3YWU0MDE3NjM3NGUwYjU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC00Miwx
MSArNDIsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0
aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZh
bHVlcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJv
dG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTk4LDggKzE5OCw5IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxs
ZXIoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxUZXN0
SXRlcmFibGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3Rv
dHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJp
ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNhbGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNDYWxsZXI+KCpzdGF0ZSwgImVudHJpZXMiKTsKIH0KIApAQCAtMjA4LDggKzIw
OSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvbktleXNDYWxsZXIoRXhlY1N0YXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShpdGVyYXRvckNyZWF0ZTxUZXN0SXRlcmFibGVJdGVyYXRvcj4oKnRoaXNPYmplY3QsIEl0ZXJh
dGlvbktpbmQ6OktleSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90
eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyPigqc3RhdGUsICJrZXlzIik7CiB9CiAKQEAgLTIx
OCw4ICsyMjAsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoRXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdEl0ZXJhYmxlSXRlcmF0b3I+KCp0aGlzT2JqZWN0
LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRl
cmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbDxq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyPigqc3RhdGUsICJ2YWx1
ZXMiKTsKIH0KIApAQCAtMjI4LDggKzIzMSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXIoRXhlY1N0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckZvckVhY2g8VGVzdEl0ZXJhYmxlSXRl
cmF0b3I+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEl0ZXJhYmxlPjo6Y2FsbDxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENh
bGxlcj4oKnN0YXRlLCAiZm9yRWFjaCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcAppbmRleCA1N2Q0MGZlZWExZDdjMTQ0ZDMwNDFjN2M1YTNhMTQzMWFh
MDEwOWUzLi5iMzY1N2VkOGFmOWJkMTNiOTJiZGY0ZWQ0OTU0MTcxOTJjZjI2MWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0
aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5j
dGlvblRlc3RDdXN0b21GdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yMjYsOCArMjI2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
RnVuY3Rpb25UZXMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RD
dXN0b21GdW5jdGlvbigqc3RhdGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1
bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FsbDxqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdEN1
c3RvbUZ1bmN0aW9uIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcAppbmRleCBjOTIwNjVkYzk1ZjczMjJjZDA4YmMyN2Y2MWRkYTdlY2VmMDFmYWM4
Li45M2MxZjRiOWRhYjM4YTI3ZmRlZTIzNTk3MDQ5ODljMmU0NTBiYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVz
CiAKQEAgLTE4NCw4ICsxODQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcj46OmNhbGw8anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kQm9keT4oKnN0YXRlLCAibWV0aG9kIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCmluZGV4IDczNTQ3YWI5NzY4ZGIyYmM5ZThlY2E1YzBlNGNhMzE4ODE1ZWI4YWEuLjQ4
YjdjY2FmYmIxN2RmNTQ0YTYzZjI2NzQ0MzA2MDM4NjgxMjhlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMK
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0
dGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlv
bk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTM0Niw4
ICszNDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90bwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlv
bk5hbWVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+Ojpj
YWxsPGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlckJvZHk+KCpzdGF0ZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKQEAgLTM2
Niw4ICszNjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90bwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCpzdGF0ZSwgImluZGV4ZWRTZXR0ZXIiKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDZlOThmNzYwNjc0
ZTBiYTAzMzYyZWQ4ZDkwMjQwMjg2N2QwYzg1ZTEuLjViMjMxZGI2OTBjOTc0NWU3ZTg4ZjE0ZGJj
ZTQ5YTZmYjIzMDM4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTg4LDkgKzg4LDkgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLAogCiB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07
CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0
ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGE0ZjZkODIzM2IwZGEwMDNlYzJmMjg4
NzAyNWM2MTQyYzQ3ZGJkNzMuLjgzZDdmOTkzYWFlZWI0ZDA1NmQzM2ExZGIyNDI4ZjRiY2MyZjVh
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlv
bnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXIoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI1Nyw4
ICsyNTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVs
ZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlckJvZHk+KCpzdGF0ZSwgIm5h
bWVkRGVsZXRlciIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKaW5kZXggYzM5MWYyZjhiOTVhOGEyODQwYmQ3NDRhMWFlNWUyN2NmNzcw
MWVlZS4uM2E0ODllMWI0YjA4MWFmOTI1YjMwOWQ2NWI2NjE0ZjRhZmJiN2I4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIzMiw4ICsyMzIsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25HZXR0ZXJOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lQm9k
eT4oKnN0YXRlLCAiZ2V0dGVyTmFtZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggNTdhZTRhZTNkOTU2ZjJlNGIxMDY3ZjJh
NjgyOTA3YjA5MDc3M2YxYi4uOGU0MjI0Y2EyYzI4YmYxNmUwYTgwNzVmNWE5NWYzMTg3YTI1OTUw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMK
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjk4LDggKzI5OCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJuYW1lZFNldHRlciIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ci5jcHAKaW5kZXggNTc1Nzg1NzdmZTc0ZjRmYzE0NmEzNDZiNjc0YWQ4OTFhZTE0ZjQzMS4uOGU0
MzRiOTA4Zjg4NmZlZTFkNmZiY2ZmNmZkOTQ0ZWY2NWM0Y2UzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtNDQsOCArNDQs
OCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQ
cm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMzIzLDggKzMyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj46OmNhbGw8anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0
ZXJCb2R5Pigqc3RhdGUsICJuYW1lZFNldHRlciIpOwogfQogCkBAIC0zNDAsOCArMzQxLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVkU2V0
dGVyIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCAzNTJjODY1NDQzNDFjYzMyMTQ4
N2NkMmY3NWE1OWY1OGQ4Y2E0MWE3Li4zMTk3M2ZkNGM0ZDMzZTI5OTU5ODM5ZjZkNWU1YTAxOWVm
MTU2ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zNDYsOCArMzQ2LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlckJvZHk+KCpzdGF0ZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKQEAgLTM5MCw4ICszOTEsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlclBybwogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVy
T3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDEyNzNmZDZmMWJhYzhlZTJlOTFhYTkxNTg5NTU3ZWMxNGU5YjgxNDAu
LmY2YmYyNjNlNmY1ODZmODE0ODVmOTc1ZWVhZWZmMmJkMzYxMjRkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
LmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlv
bnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0
aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMzM2LDggKzMzNiw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0luc3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9w
ZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpjYWxsPGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlT3BlcmF0aW9uQm9keT4oKnN0YXRlLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApp
bmRleCA5ODNiZjM0ZjBiMWMwMWE0NzM1M2Y3YTBlN2U5YjZmYzFkMzZjOWRiLi44ZDQyN2ZkZjcz
NTAyMWY3MmRkN2Y4MDZiODhjYWVjMWM5Nzg3OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNl
RnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMsOCArMzIzLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OmNh
bGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKnN0YXRlLCAi
dW5mb3JnZWFibGVPcGVyYXRpb24iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDg3MDZlZTU4ZDZl
N2EzZTEwOWUwM2MzMjI0OWYxZDEwZGJiNWNmMWUuLmEyYTE4MDE3MmI3MzM1YjQxMmY1ZmIxZTMy
MDdjZTQ3ZGEzMDkzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTQ4LDE4ICs0OCwxOCBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3Jr
ZXJQcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNh
bGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBl
RnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
U3ltYm9sSXRlcmF0b3IoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
VG9KU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRy
aWJ1dGVzCiAKQEAgLTk1LDkgKzk1LDkgQEAgY2xhc3MgSlNUZXN0Tm9kZVByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogCiB1c2luZyBKU1Rlc3ROb2RlQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihzdGF0ZS0+
anNDYWxsZWUoKSk7CkBAIC0zMDAsOCArMzAwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQm8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3Jr
ZXJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclBy
b21pc2VCb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUs
ICJ0ZXN0V29ya2VyUHJvbWlzZSIpOwogfQogCkBAIC0zMTQsOCArMzE1LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1
bGF0ZVNlY3JldFJlc3UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVT
ZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHRCb2R5LCBQcm9taXNlRXhlY3V0aW9uU2Nv
cGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKTsKIH0K
IApAQCAtMzI3LDggKzMyOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9kCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29s
ZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29s
ZWFuQm9keT4oKnN0YXRlLCAiZ2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC0zNDEsOCArMzQ0
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgInRlc3RGZWF0dXJl
R2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC0zNjgsOCArMzcyLDkgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVy
KEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRl
c3ROb2RlSXRlcmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOwogfQog
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXI+
KCpzdGF0ZSwgImVudHJpZXMiKTsKIH0KIApAQCAtMzc4LDggKzM4Myw5IEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihF
eGVjU3RhdGUqLCBKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxU
ZXN0Tm9kZUl0ZXJhdG9yPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6S2V5KSk7CiB9CiAK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9k
ZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcj4oKnN0YXRlLCAi
a2V5cyIpOwogfQogCkBAIC0zODgsOCArMzk0LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoRXhlY1N0YXRlKiwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPFRlc3ROb2RlSXRlcmF0
b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOwogfQogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVz
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2Fs
bDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVl
cyIpOwogfQogCkBAIC0zOTgsOCArNDA1LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEV4ZWNTdGF0ZSoKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yRm9yRWFjaDxUZXN0Tm9kZUl0ZXJhdG9y
Pigqc3RhdGUsICp0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oKnN0YXRlLCAiZm9yRWFj
aCIpOwogfQogCkBAIC00MjAsOCArNDI4LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEV4ZWNTdGF0ZSogc3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OnNlcmlhbGl6ZSgqc3RhdGUsICp0
aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCBkODA5NjllMDQwOTM4NjViYTk0ZTRhYWM3OTdlMmI3NjVkYjUyZDk4Li4yMDkz
MmViMzcxOTg4N2MwMjE4MmJiMTM4ZDZlNzQwYjgyYjE3ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTQy
MCwxNzggKzE0MjAsMTc4IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9u
YXJ5QyBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDb25kaXRpb25hCiAvLyBGdW5jdGlvbnMK
IAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29y
bGRTcGVjaWZpY01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVz
dWx0KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNN
ZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxh
dGVTZWNyZXRSZXN1bHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRTZWNyZXRCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFy
Z3MoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9iak1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ1N0YXRpY01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdT
cGVjaWFsTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TZXJpYWxpemVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNv
cmQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DdXN0b21NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdp
dGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRF
dmVudExpc3RlbmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZv
aWRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZShK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVPYmpFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERv
Y3VtZW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFy
Z3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmlu
ZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4oSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4oSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFueShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29s
dmVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2UoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01l
dGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U3RyaW5nU3BlY2lhbE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxs
YWJsZVVTVlN0cmluZ0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJp
bmdBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXpl
ZFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmpl
Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRo
b2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRo
b2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblBy
aXZhdGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Q
dWJsaWNBbmRQcml2YXRlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmooSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVP
YmpFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0
ZVdpdGhTcGFjZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoRG9jdW1lbnRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXJnQW5kRGVmYXVsdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRUd29PcHRpb25hbEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9t
U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1
bHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZ0lzTnVsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0Vt
cHR5U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEZsb2F0SXNOYU4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5z
aWduZWRMb25nTG9uZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFNlcXVlbmNlSXNFbXB0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFueShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2UoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rp
b25BbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxNZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBh
cmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5n
dWlzaGluZ1VuaW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJE
aXN0aW5ndWlzaGluZ1VuaW9ucyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZFdpdGhOdWxsYWJsZVVuaW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRp
b25hbFVuaW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRp
c3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9k
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5n
VW5pb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hp
bmdVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkV2l0aE51bGxhYmxlVW5pb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGlu
Z1BhcmFtZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
Q2xhc3NNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFt
cChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9t
U3RyaW5nTGlzdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0
aW9uYWxVbmlvblBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJ
ZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQxKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3JhbmdlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aEZsb2F0QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9t
aXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5j
dGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNl
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VG
dW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNl
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFBy
b21pc2VQcm94eUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhD
bGFtcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wT25PcHRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0
aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoVW5zaWduZWRMb25nU2VxdWVuY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJh
bWV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9yYW5nZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RmxvYXRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFy
Z3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VPdmVybG9hZGVkRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRo
RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlz
ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKENPTkRJVElPTjEpIHx8IEVOQUJM
RShDT05ESVRJT04yKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZChKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxPdmVybG9hZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9u
V2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVm
ZmVyU291cmNlUGFyYW1ldGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1l
ZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Fu
ZFdvcmtlckZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25h
bE92ZXJsb2FkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1
ZU9wdGltaXphdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2Vy
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC0xOTQwLDkgKzE5NDAsOSBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVF
XzE0ID09IDB4MWFiYywgIkNPTlNUX1ZBTFVFXzE0IGluIFRlc3RPYmogZG9lcwogc3RhdGljX2Fz
c2VydChUZXN0T2JqOjpDT05TVF9JTVBMID09IDE1LCAiQ09OU1RfSU1QTCBpbiBUZXN0T2JqIGRv
ZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OnJl
YWRvbmx5ID09IDAsICJyZWFkb25seSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZy
b20gSURMIik7CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewot
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTI1MDQsOSArMjUw
NCw5IEBAIHZvaWQgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5CiAgICAgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoRXhlY1N0YXRlKiBzdGF0ZSkK
K3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUt
PmpzQ2FsbGVlKCkpOwpAQCAtMjUxOCw5ICsyNTE4LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjYWxsSlNUZXN0T2JqMShFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY2FsbEpTVGVzdE9iajIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAt
MjUzMSw5ICsyNTMxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0
T2JqMihFeGVjU3RhdGUqIHN0YXRlKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExMb25nPihpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncyhXVEZNb3ZlKHBh
cmFtKSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2Jq
MyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNU
ZXN0T2JqMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
ewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0yNTQzLDIwICsyNTQzLDIwIEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajMoRXhlY1N0YXRlKiBz
dGF0ZSkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1Rlc3RPYmooRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTVGVzdE9iaihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7Ci0gICAgICAg
IHJldHVybiBjYWxsSlNUZXN0T2JqMyhzdGF0ZSk7CisgICAgICAgIHJldHVybiBjYWxsSlNUZXN0
T2JqMyhnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICB9CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAx
KSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc051bWJlcigpKQot
ICAgICAgICAgICAgcmV0dXJuIGNhbGxKU1Rlc3RPYmoxKHN0YXRlKTsKLSAgICAgICAgcmV0dXJu
IGNhbGxKU1Rlc3RPYmoyKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2Jq
MShnbG9iYWxPYmplY3QsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNhbGxKU1Rlc3RPYmoyKGds
b2JhbE9iamVjdCwgc3RhdGUpOwogICAgIH0KICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CkBAIC01NTQ1LDggKzU1NDUsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRS
dW50aW1lT3BlcgogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25P
dmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsK
IH0KIApAQCAtNTU2NSw4ICs1NTY2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3AKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uU3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uU3RhdGljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljQm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvblN0YXRpYyIpOwogfQogCkBAIC01NTg1LDggKzU1ODcsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpOwogfQogCkBAIC01
NjAzLDggKzU2MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kQgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RCb2R5Pigqc3RhdGUsICJ3b3JsZFNwZWNp
ZmljTWV0aG9kIik7CiB9CiAKQEAgLTU2MTcsOCArNTYyMSw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNh
bGN1bGF0ZVNlY3JldFJlc3VsdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3Vs
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1
cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
YWxjdWxhdGVTZWNyZXRSZXN1bHRCb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09y
V29ya2VyPigqc3RhdGUsICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKTsKIH0KIApAQCAtNTYzMCw4
ICs1NjM1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0
ZSwgImdldFNlY3JldEJvb2xlYW4iKTsKIH0KIApAQCAtNTY0NCw4ICs1NjUwLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dEZlYXR1cmVHZXRTZWNyZXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9v
bGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuQm9keT4oKnN0YXRlLCAidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFu
Iik7CiB9CiAKQEAgLTU2NjAsOCArNTY2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RCb2R5KEpTQzo6CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVm9pZE1ldGhvZEJvZHk+KCpzdGF0ZSwgInZvaWRNZXRob2QiKTsKIH0KIApAQCAt
NTY4Miw4ICs1NjkwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzQm8KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAidm9pZE1ldGhvZFdp
dGhBcmdzIik7CiB9CiAKQEAgLTU2OTUsOCArNTcwNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RCb2R5KEpT
Qzo6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1l
dGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RCb2R5Pigqc3RhdGUs
ICJieXRlTWV0aG9kIik7CiB9CiAKQEAgLTU3MTYsOCArNTcyNiw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RX
aXRoQXJnc0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwu
Ynl0ZU1ldGhvZFdpdGhBcmdzKFdURk1vdmUoYnl0ZUFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9i
akFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2RXaXRoQXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC01
NzI5LDggKzU3NDAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkoSlNDOgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oaW1wbC5vY3RldE1ldGhvZCgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3Rl
dE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RCb2R5Pigqc3RhdGUsICJvY3RldE1ldGhvZCIp
OwogfQogCkBAIC01NzUwLDggKzU3NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzQgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oaW1wbC5vY3RldE1ldGhvZFdp
dGhBcmdzKFdURk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJn
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3NCb2R5Pigqc3RhdGUsICJvY3RldE1ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAgLTU3NjMsOCAr
NTc3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RCb2R5KEpTQzo6CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2RCb2R5Pigqc3RhdGUsICJsb25nTWV0aG9kIik7CiB9CiAKQEAgLTU3
ODQsOCArNTc5OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0JvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdURk1vdmUo
bG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRo
QXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImxv
bmdNZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC01Nzk3LDggKzU4MTIsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRo
b2RCb2R5KEpTQzo6RQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZh
Y2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9i
ak1ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RCb2R5Pigqc3RhdGUs
ICJvYmpNZXRob2QiKTsKIH0KIApAQCAtNTgxOCw4ICs1ODM0LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0
aEFyZ3NCb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRl
c3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRo
b2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3NC
b2R5Pigqc3RhdGUsICJvYmpNZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC01ODMxLDggKzU4NDgs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9keQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVN
ZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInVuZm9y
Z2VhYmxlTWV0aG9kIik7CiB9CiAKQEAgLTU4NDksOCArNTg2Nyw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhB
cmdUcmVhdGluCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7
CiB9CiAKQEAgLTU4NjcsOCArNTg4Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0
aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jl
c29sdmVyUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlckJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhY
UGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiKTsKIH0KIApAQCAtNTg4MCw4ICs1OTAwLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdNZXRob2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nTWV0aG9k
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVT
dHJpbmdNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ01ldGhvZEJvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7CiB9CiAK
QEAgLTU4OTIsOCArNTkxMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwg
VGVzdE9iajo6bnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0
cmluZ1N0YXRpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxh
YmxlU3RyaW5nU3RhdGljTWV0aG9kQm9keT4oKnN0YXRlLCAibnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QiKTsKIH0KIApAQCAtNTkwOSw4ICs1OTMxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVj
aWEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGlu
ZGV4KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZEJvZHk+KCpzdGF0ZSwgIm51bGxh
YmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOwogfQogCkBAIC01OTI3LDggKzU5NTAsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRW51bUFyZ0JvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
bnVtQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVu
dW1BcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRW51bUFyZyIpOwogfQogCkBAIC01OTQ1LDgg
KzU5NjksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmciKTsKIH0KIApAQCAtNTk2MSw4ICs1
OTg2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQm9keT4oKnN0YXRlLCAi
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOwogfQogCkBAIC01OTc3LDggKzYwMDMsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxFbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKQEAgLTU5OTYsOCArNjAyMyw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFRoYXRSZXF1aXJlc0FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVy
ZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUsIGltcGwubWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhXVEZNb3ZlKHN0
ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3NCb2R5Pigqc3RhdGUsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzIik7CiB9CiAKQEAgLTYwMTQsOCArNjA0Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdB
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKIH0KIApAQCAtNjAzMiw4
ICs2MDYxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5n
QXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnIik7CiB9CiAK
QEAgLTYwNTAsOCArNjA4MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVT
VlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nIik7CiB9CiAKQEAgLTYwNjgsOCArNjA5OSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhC
eXRlU3RyaW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVT
dHJpbmdBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnIik7CiB9
CiAKQEAgLTYwODYsOCArNjExOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJs
ZUJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3Ry
aW5nQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51
bGxhYmxlQnl0ZVN0cmluZ0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVT
dHJpbmdBcmciKTsKIH0KIApAQCAtNjEwNCw4ICs2MTM3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVT
dHJpbmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5dGVT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiB9CiAKQEAgLTYxMjIsOCArNjE1
Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZUJvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNl
cmlhbGl6ZWRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlh
bGl6ZWRWYWx1ZUJvZHk+KCpzdGF0ZSwgInNlcmlhbGl6ZWRWYWx1ZSIpOwogfQogCkBAIC02MTQw
LDggKzYxNzUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkQm9keQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoUmVjb3JkIik7CiB9
CiAKQEAgLTYxNTQsOCArNjE5MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25CCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhFeGNlcHRpb24iKTsKIH0KIApAQCAtNjE2Nyw4ICs2MjA0LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEV4Y2VwdGlvblIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25n
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZ0JvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nIik7CiB9CiAKQEAgLTYxODAs
OCArNjIxOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvblJldHVy
bmluZ09iamVjdCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5p
bmdPYmplY3RCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0
Iik7CiB9CiAKQEAgLTYxOTIsOCArNjIzMSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZEJvZHkoSlNDCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRob2QoKnN0YXRl
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DdXN0b21NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RCb2R5Pigqc3RhdGUs
ICJjdXN0b21NZXRob2QiKTsKIH0KIApAQCAtNjIwNCw4ICs2MjQ0LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kV2l0aEFyZ3MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3Rv
bU1ldGhvZFdpdGhBcmdzKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAiY3VzdG9tTWV0
aG9kV2l0aEFyZ3MiKTsKIH0KIApAQCAtNjIyMSw4ICs2MjYyLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhv
ZEJvZHkoSlMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZh
dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZEJvZHksIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwgInByaXZhdGVNZXRob2QiKTsKIH0KIApAQCAtNjIzOCw4
ICs2MjgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGgKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwucHVibGljQW5kUHJpdmF0ZU1l
dGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZEJvZHk+KCpzdGF0ZSwgInB1
YmxpY0FuZFByaXZhdGVNZXRob2QiKTsKIH0KIApAQCAtNjI2MCw4ICs2MzAzLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRk
RXZlbnRMaXN0ZW5lckJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVu
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
Qm9keT4oKnN0YXRlLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogfQogCkBAIC02MjgyLDggKzYzMjYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UmVtb3ZlRXZlbnRMaXN0ZW5lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blJlbW92ZUV2ZW50TGlzdGVuZXJCb2R5Pigqc3RhdGUsICJyZW1vdmVFdmVudExpc3RlbmVyIik7
CiB9CiAKQEAgLTYyOTYsOCArNjM0MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkQm9kCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVW
b2lkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEJvZHk+KCpzdGF0ZSwgIndpdGhF
eGVjU3RhdGVWb2lkIik7CiB9CiAKQEAgLTYzMDksOCArNjM1NSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3Rh
dGVPYmpCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aEV4
ZWNTdGF0ZU9iaigqc3RhdGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iaihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhFeGVjU3RhdGVPYmpCb2R5Pigqc3RhdGUsICJ3aXRoRXhlY1N0YXRlT2JqIik7CiB9CiAK
QEAgLTYzMjMsOCArNjM3MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlv
bkJvZHk+KCpzdGF0ZSwgIndpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uIik7CiB9CiAKQEAgLTYz
MzYsOCArNjM4NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aEV4ZWNTdGF0ZU9iakV4Y2Vw
dGlvbigqc3RhdGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJ3aXRo
RXhlY1N0YXRlT2JqRXhjZXB0aW9uIik7CiB9CiAKQEAgLTYzNTMsOCArNjQwMiw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25DCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEJvZHk+KCpzdGF0ZSwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0Iik7CiB9CiAKQEAgLTYzNzAsOCArNjQyMCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25DCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZUJvZHk+KCpzdGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
Iik7CiB9CiAKQEAgLTYzODYsOCArNjQzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25DCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oKnN0YXRlLCAqY29u
dGV4dCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVPYmpFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHk+KCpz
dGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9u
Iik7CiB9CiAKQEAgLTY0MDIsOCArNjQ1NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25DCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNCb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMiKTsKIH0KIApAQCAtNjQyMSw4ICs2
NDc0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAid2l0aERvY3VtZW50QXJn
dW1lbnQiKTsKIH0KIApAQCAtNjQzOCw4ICs2NDkyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50
QXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENh
bGxlckRvY3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRB
cmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJE
b2N1bWVudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQi
KTsKIH0KIApAQCAtNjQ1Miw4ICs2NTA3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3UKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldp
bmRvd0FyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3Vt
ZW50Qm9keT4oKnN0YXRlLCAid2l0aENhbGxlcldpbmRvd0FyZ3VtZW50Iik7CiB9CiAKQEAgLTY0
NjgsOCArNjUyNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbEFyZyIpOwogfQogCkBAIC02NDg0LDggKzY1NDEsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWVC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKIH0K
IApAQCAtNjUwNCw4ICs2NTYyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmEKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAibWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKIH0KIApAQCAtNjUyNiw4ICs2
NTg1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdv
T3B0aW9uYWxBcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiB9CiAKQEAgLTY1NDIsOCAr
NjYwMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogfQogCkBAIC02NTU4LDggKzY2MTksOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxVUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsKIH0KIApAQCAtNjU3NCw4ICs2NjM2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsQXRvbVN0cmluZyIpOwogfQogCkBAIC02NTkwLDggKzY2NTMsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdB
bmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmRE
ZWZhdWx0VmFsdWUiKTsKIH0KIApAQCAtNjYwNiw4ICs2NjcwLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
QW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmlu
Z0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCkBAIC02NjIyLDggKzY2ODcsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiKTsKIH0KIApAQCAtNjYzOCw4ICs2NzA0LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5k
ZWZpbmVkQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQi
KTsKIH0KIApAQCAtNjY1NCw4ICs2NzIxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXQKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21TdHJpbmdJc051bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbCIpOwogfQogCkBAIC02NjcwLDggKzY3MzgsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
RW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5
U3RyaW5nIik7CiB9CiAKQEAgLTY2ODYsOCArNjc1NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmlu
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmci
KTsKIH0KIApAQCAtNjcwMiw4ICs2NzcyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXQKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmciKTsK
IH0KIApAQCAtNjcxOCw4ICs2Nzg5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG8KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsRG91YmxlSXNOYU4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJ
c05hTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbERvdWJsZUlzTmFOQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU4iKTsKIH0KIApAQCAtNjczNCw4ICs2ODA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRmxvYXRJc05hTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZs
b2F0SXNOYU4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxGbG9hdElzTmFOQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJ
c05hTiIpOwogfQogCkBAIC02NzUwLDggKzY4MjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxM
bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG9uZ0xvbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyIp
OwogfQogCkBAIC02NzY2LDggKzY4NDAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMbwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nSXNaZXJvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm9Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZ0lzWmVybyIpOwogfQogCkBAIC02NzgyLDggKzY4NTcsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxVbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nIik7CiB9CiAKQEAgLTY3
OTgsOCArNjg3NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVk
TG9uZ0xvbmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25l
ZExvbmdMb25nSXNaZXJvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKIH0KIApAQCAtNjgxNCw4ICs2
ODkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UiKTsKIH0KIApAQCAtNjgzMCw4ICs2OTA4LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0Vt
cHR5Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Iik7CiB9
CiAKQEAgLTY4NDYsOCArNjkyNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVh
bkJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4iKTsKIH0KIApAQCAtNjg2
Miw4ICs2OTQyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm8KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJv
b2xlYW5Jc0ZhbHNlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFs
c2UiKTsKIH0KIApAQCAtNjg3OCw4ICs2OTU5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW4K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQW55KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iik7CiB9CiAKQEAgLTY4OTQsOCArNjk3
Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdEJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdCIpOwogfQogCkBAIC02OTEwLDggKzY5OTMsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxOdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiKTsKIH0KIApAQCAtNjky
Niw4ICs3MDEwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIik7CiB9CiAKQEAgLTY5NDIsOCArNzAyNyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNv
bHZlckJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlciIpOwog
fQogCkBAIC02OTU4LDggKzcwNDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxSZWNvcmQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQiKTsKIH0KIApAQCAtNjk3NCw4
ICs3MDYxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHIKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZSIpOwogfQogCkBAIC02OTkyLDggKzcwODAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tB
cmciKTsKIH0KIApAQCAtNzAxMiw4ICs3MTAxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWMK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKIH0KIApAQCAt
NzAyOCw4ICs3MTE4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW4KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmciKTsKIH0KIApAQCAtNzA0Niw4ICs3MTM3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmciKTsKIH0KIApAQCAtNzA2Niw4ICs3MTU4LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbkNhbGxi
YWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogfQogCkBAIC03MDgyLDggKzcxNzUsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTcwOTcsOCArNzE5MSw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
U3RhdGljTWV0aG9kV2l0aENhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgInN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTcxMTQsOCArNzIwOSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3Rh
dGljTWV0aG9kV2l0aENhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25T
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwg
InN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogfQogCkBAIC03MTI4LDggKzcyMjQsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbE1ldGhvZDFCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxQm9k
eT4oKnN0YXRlLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiB9CiAKQEAgLTcxNDUsOCArNzI0Miw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMkJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMkJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMiIpOwogfQog
CkBAIC03MTYyLDggKzcyNjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNCbwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNCb2R5Pigqc3RhdGUsICJjb25kaXRp
b25hbE1ldGhvZDMiKTsKIH0KIApAQCAtNzM2Myw4ICs3NDYyLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZE92ZXIKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RPdmVy
bG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKIH0KIApAQCAtNzQy
MCw4ICs3NTIwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJnc0Nv
dW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvbmFsUGFyYW1ldGVyIik7CiB9CiAKQEAgLTc0NjcsOCArNzU2OCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbk92ZXJsb2FkRGlzcGF0
Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uIik7
CiB9CiAKQEAgLTc1MTYsOCArNzYxOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoCiAgICAg
cmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5n
VW5pb25zKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hp
bmdVbmlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uc092ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRl
LCAib3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMiKTsKIH0KIApAQCAt
NzU2NCw4ICs3NjY3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICByZXR1cm4gYXJn
c0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24iKTsKIH0KIApAQCAtNzYxMyw4
ICs3NzE3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGUKICAgICByZXR1cm4gYXJnc0NvdW50
IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE51bGxhYmxlVW5pb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVy
bG9hZFdpdGhOdWxsYWJsZVVuaW9uIik7CiB9CiAKQEAgLTc2NjMsOCArNzc2OCw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE9wdGlvbmFsCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3Rh
dGUsICJvdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uIik7CiB9CiAKQEAgLTc3MTIsOCArNzgxOCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDIgPyB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25E
aXN0aW5ndWlzaGluZ1BhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3Zlcmxv
YWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlciIpOwogfQogCkBAIC03NzI1
LDggKzc4MzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kQm9keShKUwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25DbGFzc01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uQ2xhc3NNZXRob2RCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZCIpOwogfQogCkBAIC03
NzM5LDggKzc4NDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExMb25nPihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25h
bChXVEZNb3ZlKGFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWxCb2R5Pigqc3Rh
dGUsICJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpOwogfQogCkBAIC03NzUxLDggKzc4NjAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkNsYXNzTWV0aG9kMkJvZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T2JqOjpjbGFzc01ldGhvZDIoKnN0YXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDJCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZDIiKTsK
IH0KIApAQCAtNzgwNCw4ICs3OTE0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMU8KICAgICBy
ZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJv
dmVybG9hZGVkTWV0aG9kMSIpOwogfQogCkBAIC03ODI2LDggKzc5MzcsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhDbGFtcAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0
aENsYW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoQ2xhbXBCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIpOwogfQogCkBAIC03
ODQyLDggKzc5NTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0
aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9u
T3B0aW9uYWxCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwiKTsK
IH0KIApAQCAtNzg2Miw4ICs3OTc1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3IKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRo
RW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5m
b3JjZVJhbmdlQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIik7CiB9
CiAKQEAgLTc4NzgsOCArNzk5Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVu
Zm9yY2VSYW5nZU9uT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZv
cmNlUmFuZ2VPbk9wdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbEJvZHk+KCpzdGF0ZSwgImNsYXNz
TWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwiKTsKIH0KIApAQCAtNzg5Niw4ICs4MDEx
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiB9CiAKQEAgLTc5
MTMsOCArODAyOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25CCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rp
b24oV1RGTW92ZSh2YWx1ZXMpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAic3RyaW5nQXJyYXlGdW5j
dGlvbiIpOwogfQogCkBAIC03OTMwLDggKzgwNDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rp
bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RE9NU3RyaW5n
TGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBp
bXBsLmRvbVN0cmluZ0xpc3RGdW5jdGlvbigqdmFsdWVzKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uQm9keT4oKnN0
YXRlLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7CiB9CiAKQEAgLTc5NDYsOCArODA2NCw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9wZXJhdGlvbldpdGhPcHRpb25hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBh
cmFtZXRlckJvZHk+KCpzdGF0ZSwgIm9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVy
Iik7CiB9CiAKQEAgLTc5NjYsOCArODA4NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhB
bmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRX
aXRob3V0TnVsbGFibGVTZXF1ZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZUJvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIpOwogfQogCkBAIC03OTgzLDggKzgx
MDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJvZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1l
bnRJZCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRC
eUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRC
b2R5Pigqc3RhdGUsICJnZXRFbGVtZW50QnlJZCIpOwogfQogCkBAIC03OTk2LDggKzgxMTcsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25HZXRTVkdEb2N1bWVudEJvZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8U1ZHRG9jdW1lbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgQmluZGluZ1NlY3VyaXR5OjpjaGVja1NlY3VyaXR5Rm9yTm9k
ZSgqc3RhdGUsIGltcGwuZ2V0U1ZHRG9jdW1lbnQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudEJvZHk+KCpzdGF0ZSwgImdldFNWR0RvY3VtZW50Iik7
CiB9CiAKQEAgLTgwMTQsOCArODEzNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keShKU0M6OkV4CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0MUJvZHk+KCpzdGF0ZSwgImNvbnZlcnQxIik7CiB9CiAKQEAgLTgwMzIsOCArODE1
NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyQm9keShKU0M6OkV4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MkJvZHk+KCpzdGF0
ZSwgImNvbnZlcnQyIik7CiB9CiAKQEAgLTgwNTAsOCArODE3NCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9k
eShKU0M6OkV4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbnZlcnQzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0M0JvZHk+KCpzdGF0ZSwgImNvbnZlcnQzIik7CiB9CiAK
QEAgLTgwNjgsOCArODE5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keShKU0M6OkV4CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252
ZXJ0NEJvZHk+KCpzdGF0ZSwgImNvbnZlcnQ0Iik7CiB9CiAKQEAgLTgwODEsOCArODIwNyw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk11dGFibGVQb2ludEZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbkJvZHk+KCpzdGF0ZSwg
Im11dGFibGVQb2ludEZ1bmN0aW9uIik7CiB9CiAKQEAgLTgwOTUsOCArODIyMiw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9y
YW5nZUJvZHkoSlNDOjpFeGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9yYW5nZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZUJvZHk+KCpzdGF0ZSwgIm9yYW5nZSIpOwogfQog
CkBAIC04MTE1LDggKzgyNDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhv
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2RCb2R5Pigqc3RhdGUsICJ2
YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogfQogCkBAIC04MTM1LDggKzgyNjQsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY0RvdWJsZU1ldGhvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91
YmxlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNE
b3VibGVNZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogfQogCkBA
IC04MTU1LDggKzgyODUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RCbwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJpYWRpY05v
ZGVNZXRob2QiKTsKIH0KIApAQCAtODE3NSw4ICs4MzA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1l
dGhvZEIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNVbmlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kQm9k
eT4oKnN0YXRlLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOwogfQogCkBAIC04MTk1LDggKzgzMjcs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25BbnlCb2R5KEpTQzo6RXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlCb2R5Pigqc3RhdGUsICJhbnkiKTsKIH0KIApA
QCAtODIwOSw4ICs4MzQyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbkIKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbkJvZHks
IFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RQcm9t
aXNlRnVuY3Rpb24iKTsKIH0KIApAQCAtODIyNyw4ICs4MzYxLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvblcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxv
YXRBcmd1bWVudEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpz
dGF0ZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwogfQogCkBAIC04
MjQxLDggKzgzNzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
OjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24iKTsKIH0KIApAQCAtODI1Nyw4ICs4MzkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblcK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
T3B0aW9uYWxJbnRBcmd1bWVudEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JX
b3JrZXI+KCpzdGF0ZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dCIpOwogfQogCkBAIC04MzAyLDggKzg0MzksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZQog
ICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uT3ZlcmxvYWREaXNwYXRjaGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6
OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIp
OwogfQogCkBAIC04MzE1LDggKzg0NTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQ
cm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbiIp
OwogfQogCkBAIC04MzI4LDggKzg0NjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQ
cm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxT
dGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rp
b25XaXRoRXhjZXB0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtl
cj4oKnN0YXRlLCAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKIH0K
IApAQCAtODM0MCw4ICs4NDgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW4KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24o
KnN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlz
ZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0
YXRlLCAidGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbiIpOwogfQogCkBAIC04MzUyLDggKzg0OTMs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21QcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0T2JqOjp0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwgV1RGTW92
ZShwcm9taXNlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2lu
ZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24iKTsK
IH0KIApAQCAtODM2NCw4ICs4NTA2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd24KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21SZXR1cm5zT3duUHJv
bWlzZUZ1bmN0aW9uKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVu
Y3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1
cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxSZXR1cm5pbmdPd25Qcm9taXNlPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb25Cb2R5
Pigqc3RhdGUsICJ0ZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbiIpOwogfQogCkBA
IC04Mzc3LDggKzg1MjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pcwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFZvaWQ+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC50ZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNl
UHJveHlGdW5jdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJv
eHlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFByb21p
c2VQcm94eUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFJldHVybmluZ093blBy
b21pc2U8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQ
cm9taXNlUHJveHlGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RSZXR1cm5zT3duUHJvbWlzZUFu
ZFByb21pc2VQcm94eUZ1bmN0aW9uIik7CiB9CiAKQEAgLTg0MzIsOCArODU3Niw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsT3ZlcmxvYWRPCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
T3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZE92ZXJsb2FkRGlz
cGF0Y2hlcj4oKnN0YXRlLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwogfQogCkBAIC04NDgyLDgg
Kzg2MjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZQogICAgIHJldHVybiBhcmdzQ291bnQg
PCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29u
ZGl0aW9uYWxPdmVybG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNp
bmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWRPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgInNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKIH0KIApAQCAtODUwMCw4ICs4NjQ2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdEJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jv
b3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290
Qm9keT4oKnN0YXRlLCAiYXR0YWNoU2hhZG93Um9vdCIpOwogfQogCkBAIC04NTE4LDggKzg2NjUs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1l
dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFt
ZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhF
eHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJvcGVyYXRpb25XaXRoRXh0
ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyIik7CiB9CiAKQEAgLTg1MzYsOCArODY4NCw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ1ZmZlclNvdXJjZVBhcmFtZXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZl
clNvdXJjZVBhcmFtZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1
ZmZlclNvdXJjZVBhcmFtZXRlckJvZHk+KCpzdGF0ZSwgImJ1ZmZlclNvdXJjZVBhcmFtZXRlciIp
OwogfQogCkBAIC04NTU0LDggKzg3MDMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJvZAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJO
YW1lZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNhbGxlck5hbWVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRCb2R5Pigqc3RhdGUsICJsZWdh
Y3lDYWxsZXJOYW1lZCIpOwogfQogCkBAIC04NTc1LDggKzg3MjUsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJu
VmFsdWVPcHRpbQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmV0dXJuVmFsdWUpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZh
bHVlT3B0aW1pemF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFJldHVyblZhbHVlT3B0aW1pemF0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJldHVyblZhbHVlT3B0
aW1pemF0aW9uIik7CiB9CiAKQEAgLTg1OTYsOCArODc0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1
ZU9wdGltCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXR1cm5WYWx1ZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRp
b25Cb2R5Pigqc3RhdGUsICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9u
Iik7CiB9CiAKQEAgLTg2MTAsOCArODc2Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlF
eHBvc2VkVG9XaW5kb3dGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpOwogfQogCkBAIC04NjI0LDggKzg3
NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3Nl
ZFRvV29ya2VyRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29y
a2VyRnVuY3Rpb24iKTsKIH0KIApAQCAtODYzOCw4ICs4NzkyLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxs
eUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dp
bmRvd0FuZFdvcmtlckZ1bmN0aW9uQm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uIik7CiB9CiAKQEAgLTg2NTEsOCArODgwNiw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nQm9keShKU0M6OkV4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVTVlN0cmluZz4oKnN0YXRlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKQEAg
LTg2ODUsOCArODg0MSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEV4ZWNTdGF0ZSogc3RhCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvSlNPTkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTYxOTc2MDI4OGE5MGNlODAzYWU1YTQx
MDg4ZWI2ZTNiMjE3ZjU2MC4uMzI2NjM3NGY4NzQwOWM2ZmE0OTAzYTlkMjYxN2UyN2MzMjI2ZTU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
NzUsOSArNzUsOSBAQCBjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAKIHVzaW5nIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz47CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVl
KCkpOwpAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogcwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGTW92ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpOwpAQCAtMTAxLDkgKzEwMSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0YXRlKiBzCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRl
KQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+
anNDYWxsZWUoKSk7CkBAIC0xMTQsOSArMTE0LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHMK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNl
PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0
YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTEyNyw5ICsxMjcsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0
ZSogcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZDxJRExJbnRl
cmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoRXhlY1N0
YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMTQwLDI2ICsxNDAsMjYgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShF
eGVjU3RhdGUqIHMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi10ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3ND
b3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAg
aWYgKGFyZ3NDb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzNShzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICB9CiAg
ICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdB
cmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlz
aGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJp
dHM8SlNBcnJheUJ1ZmZlcj4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShnbG9iYWxPYmplY3QsIHN0YXRlKTsK
ICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlz
dGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKQotICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKHN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMihnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJn
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0Js
b2I+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMyhzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczMoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgICAgIGlmIChk
aXN0aW5ndWlzaGluZ0FyZy5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KHN0YXRlKTsKKyAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShnbG9iYWxPYmpl
Y3QsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM0KGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgIH0KICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggMzc1
ODkwMTdjY2E0NDJjY2ZlZWI3MzdlOWRiZTRmOTliYjU3YTlhZS4uMmEyOWE0OGM0OTRmZWNkNWY3
MWVlZGMzNWZmMmQ3NWU1NzkyNTdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtNzQsOSArNzQsOSBA
QCBjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbAogCiB1c2luZyBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+OwogCi1zdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UxKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
QEAgLTg3LDkgKzg3LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMSgKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKEV4
ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTEw
MCwyMiArMTAwLDIyIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVf
dCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkp
OwogICAgIGlmIChhcmdzQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOworICAgICAgICBy
ZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEo
Z2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewog
ICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlMShzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAg
ICAgICAgIGlmIChoYXNJdGVyYXRvck1ldGhvZCgqc3RhdGUsIGRpc3Rpbmd1aXNoaW5nQXJnKSkK
LSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlMShzdGF0ZSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMihzdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoZ2xv
YmFsT2JqZWN0LCBzdGF0ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMihnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAgICB9
CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IDQ0ZWZjNzA4NTJlMTRiMDM1ZWM5
YmQ5MTJjMWJjNDcyYzA2MzFjZGQuLmYzMWM5YzIxOThjN2E4ZGQwZjAxNzZlZTU1OThkNzQyMGU3
NzA4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZEl0ZW0oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0
ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMjM1LDggKzIzNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlv
bk5hbWVkSXRlbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKnN0YXRlLCAibmFtZWRJdGVtIik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKaW5kZXggNWQ2
NWFkYWNhZWE0YjhmZGU4M2IyMDdiN2E0ZTA5M2Q4YjJjNmM1MS4uYmQ2YzQ5MmY2YzVmYmVlYWVh
MGVmM2IyNjBmZjk1MTNiYmQxNWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5jcHAKQEAgLTE1NCw5ICsxNTQsOSBAQCBjbGFzcyBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIAog
dXNpbmcgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD47CiAKLXRlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6
OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0Nh
bGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCA1YzBkNzgyYmIzMjlm
MTE3OTk5YjM3Y2QyY2IyNGQyMWQ4NzAyZjE2Li5mODhhNmUxMTcwNzc2YmZjZDgyNWUzN2IxZGE1
YmFjYTllOGE5ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTY2
NSw4ICs2NjUsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbjo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5j
dGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRp
b24+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+
KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0LmNwcAppbmRleCA3ZWIxNTI2MDllY2U5NzRmZTg1YTViNmFlMjBlZDcyOWFkZDcxZDQw
Li5iZTFmMzc4OGIxNGY5OTdmMDRmY2U2NDFlZTQ4Y2E3ZTQyY2U5ZmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0y
MjAsOCArMjIwLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm8KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjpzZXJpYWxpemUoKnN0YXRlLCAq
dGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAK
aW5kZXggY2YyNzFlMmFjYjhkYWYxNWZjNzQxOTZjMTYzN2NkMmNlNmQ3MzQ5Yi4uZGNjM2NlZWM2
Y2U3OTE0NWQ5MmU4Zjk3YzlhNDgxNTI2NGY1YWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlv
blRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSlNP
TihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0yNTUsOCArMjU1LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0oKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw6OnNlcmlh
bGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rp
b25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA1OWI1ZWY2
YjUxODczMTgzNmVkZjJmN2Y1NDQ1NjJmNzdhYWRjNGJiLi4wZWVmNDE2ZTAwNDFlZTExZWY0NzJl
NmMyYmNlOGVhY2JjYWUyNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNTEsOCArNTEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25GdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTMyMyw4ICszMjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25Cb2R5
Pigqc3RhdGUsICJmdW5jdGlvbiIpOwogfQogCkBAIC0zMzYsOCArMzM3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VyaWFs
aXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5nKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZ0JvZHk+KCpzdGF0ZSwgImZ1
bmN0aW9uUmV0dXJuaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCmluZGV4IGU1
YzYyZTM5NjQzNTMxMjBmZWM3YWI4MTk2YWM3YmFjNDZhYjBkNTYuLjcxOTY2Zjc2MGMwNGM5ZGI3
ZjEzZjY4ZWQyMGM4YjY1OWIzZTljZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcApAQCAt
NDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC0xNzcsOCArMTc3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmco
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVy
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFN0cmluZ2lmaWVyPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCA3NTJlMjY2
Y2JjNzg4OWQzM2I2ZjZkZTEzY2RmODExNzMyZjM3YTk4Li4zZTJkODg5MGE5NWUxZTFiMzE4ZjMy
MWM0OTU4Mjg1OWFhOWJkM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0
dHJpYnV0ZXMKIApAQCAtMTc3LDggKzE3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBs
LnRvU3RyaW5nKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmci
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwCmluZGV4IGEwMmEwMjAzYTJjZDgzNmE1ODAzNTdmMDI5OTMxZTk5ZTQ2ZmExZDkuLjQwOTEz
ODQ2YTNhNTFmNTA4N2M0MThiZmRiYWE3NjFjYTI4MDUyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKQEAgLTQxLDggKzQxLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25JZGVudGlmaWVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25J
ZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3OSw4ICsxNzksOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
blByb3RvdHlwZUZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25JZGVudGlmaWVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklk
ZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXJCb2R5Pigqc3RhdGUs
ICJpZGVudGlmaWVyIik7CiB9CiAKQEAgLTE5Miw4ICsxOTMsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlw
ZUZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMuY3BwCmluZGV4IGU2ZWVhOTljMGM2MDg2OTU4MGM5MGRhMjQ5YmI1ODA3YWIy
NmZkNDUuLmMwMmNmZjk2YTZiOWFhYmEwNTQ2OTdhNjc0ZWFiNWY2ODNjOTk2ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuY3BwCkBAIC00MSw4ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0
aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3OSw4ICsxNzksOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzUHJvdG90eQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHk+KCpzdGF0ZSwgImlkZW50aWZpZXIi
KTsKIH0KIApAQCAtMTkyLDggKzE5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmFs
dGVybmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Y2FsbDxqc1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5n
Qm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAppbmRleCBiY2EwZmFk
ODNjNTFmODk0MTMyYmI4Y2IwZjVmZjkyZWJiMjkxOGM4Li5kMjFhYzNkYjA2ZmZjOWM1NmIyM2U2
NTIwMzg3NWZlZDFjOTQ4MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3Nyw4ICsxNzcsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nUHJvdG90eQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+OjpjYWxs
PGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKaW5kZXggY2YwZjExYjI5
ZjA0M2RkYjZkN2U2YTlhNzZmOTEzYzQ4YWRmODIxNy4uMTYzYmY2MmU1OWVhYjE0NWZlMWFlZWNk
YTBlYTE1MzE2ODY4NzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMTk5LDggKzE5OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50
aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCmluZGV4IDU3Y2VjODZiZWZlN2I0YWY2OGQyZDUxYTUzYTRhMjRjOTU0NTgwMDEuLjcwYzZm
YTVjNmFiOTBjZTU1ZDA0YjYwMTc2MTRiZjA0ZDIyODZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAtNDIsNyArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yMTgsOCArMjE4LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlUHJvdG90eXBlRnUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+OjpjYWxsPGpzVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDZiOGMw
NGFjOGUxOGZlZGFiZGY1ODBkODViY2U0ZTI5NDM3YzE3NTguLmQ4YjQzODk2NWEzZTViNzNlMDJj
MzQ0OTJjMTgxNzQ2NDFjOGU3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNjAsMjEgKzYw
LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1
bmMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVNlcXVlbmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNl
T2ZOdWxsYWJsZXNBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5j
ZU9mTnVsbGFibGVzQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVu
Y2VPZlVuaW9uc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9p
bnRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0
aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZO
dWxsYWJsZXNBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y1dpdGhDbGFtcEluVHlwZWRlZihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRo
U2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE0Miw5ICsxNDIs
OSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPQogICAgIHsgIlRlc3RTdWJPYmoiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotdGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtNDk2LDggKzQ5Niw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y0JvZHkoSlNDOjpFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxs
PGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jQm9keT4oKnN0YXRlLCAiZnVuYyIp
OwogfQogCkBAIC01MjIsOCArNTIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dCb2R5KEoKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3co
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dCb2R5Pigqc3RhdGUsICJzZXRTaGFkb3ci
KTsKIH0KIApAQCAtNTM5LDggKzU0MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuc2lnbmVkTG9uZ0xvbmc+KGltcGwubWV0
aG9kV2l0aFNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoU2VxdWVuY2VBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoU2VxdWVuY2VBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsK
IH0KIApAQCAtNTU3LDggKzU2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRl
ZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNl
QXJnQm9keT4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZUFyZyIpOwogfQogCkBAIC01NzUsOCAr
NTc5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdCb2R5
Pigqc3RhdGUsICJzZXF1ZW5jZU9mTnVsbGFibGVzQXJnIik7CiB9CiAKQEAgLTU5Myw4ICs1OTgs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBl
ZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVu
Y2VPZk51bGxhYmxlc0FyZ0JvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxl
c0FyZyIpOwogfQogCkBAIC02MTEsOCArNjE3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmMK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2Vx
dWVuY2VPZlVuaW9uc0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmdCb2R5Pigqc3RhdGUsICJudWxsYWJs
ZVNlcXVlbmNlT2ZVbmlvbnNBcmciKTsKIH0KIApAQCAtNjI5LDggKzYzNiw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
VW5pb25BcmdCb2R5KEpTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uVW5pb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBl
ZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnQm9keT4o
KnN0YXRlLCAidW5pb25BcmciKTsKIH0KIApAQCAtNjQ5LDggKzY1Nyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y1dpdGhDbGFtcEJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFt
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0
aENsYW1wQm9keT4oKnN0YXRlLCAiZnVuY1dpdGhDbGFtcCIpOwogfQogCkBAIC02NjcsOCArNjc2
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWZCb2R5Pigq
c3RhdGUsICJmdW5jV2l0aENsYW1wSW5UeXBlZGVmIik7CiB9CiAKQEAgLTY4MCw4ICs2OTAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblBvaW50RnVuY3Rpb25CbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5wb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uQm9keT4oKnN0YXRlLCAicG9pbnRG
dW5jdGlvbiIpOwogfQogCkBAIC02OTcsOCArNzA4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5j
ZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3Ry
aW5nPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwuc3RyaW5nU2VxdWVuY2VGdW5jdGlvbihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0
cmluZ1NlcXVlbmNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNl
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nU2VxdWVuY2VGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInN0cmluZ1NlcXVlbmNlRnVuY3Rp
b24iKTsKIH0KIApAQCAtNzE0LDggKzcyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0
cmluZ1NlcXVlbmNlRnVuY3Rpb24yKFdURk1vdmUodmFsdWVzKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
U2VxdWVuY2VGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVu
Y3Rpb24yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0
cmluZ1NlcXVlbmNlRnVuY3Rpb24yQm9keT4oKnN0YXRlLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlv
bjIiKTsKIH0KIApAQCAtNzMxLDggKzc0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuY2FsbFdpdGhT
ZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxs
PGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVp
cmVzSW5jbHVkZUJvZHk+KCpzdGF0ZSwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlIik7CiB9CiAKQEAgLTc0NSw4ICs3NTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvbkJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAppbmRleCBmYTQ4NzMxNTZkYWZmNjJiODU4NTQ1NTli
ZGE5NDUxZmMzOTZkY2MzLi45ZWQ3MjViNmYyOWIzMzlhZWIwNDJmNjExNzk3ZDA3NGI1ODYyNGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaApAQCAtMzUsOCArMzUsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgSWRlbnRpZmllcjsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNwYWNl
IEJpbmRpbmdzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CmluZGV4IDg0NDA2NDc1MmY5M2ZmYjE0N2NiMjkwNGRjNmI2OTQ3YTRmOWMxZTUuLjc3YTI0MWNl
NjhmMTJkYmNkOThjZWFlMjYxMTc0ODVlNzhlMjUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI0NCwxNCArMjQ0LDE0IEBAIGJvb2wgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzPE9iakNSdW50aW1lT2JqZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7
CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBPYmpjSW5zdGFu
Y2UqIG9iamNJbnN0YW5jZSA9IHJ1bnRpbWVPYmplY3QtPmdldEludGVybmFsT2JqQ0luc3RhbmNl
KCk7CiAKICAgICBpZiAoIW9iamNJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKICAgICAKICAgICBvYmpjSW5zdGFu
Y2UtPmJlZ2luKCk7CiAKQEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVu
ZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSl7CiAgICAgICAgIE9i
amNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNl
LT5nZXRDbGFzcygpKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxi
YWNrTWV0aG9kKG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVj
dG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7
Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpj
RmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFs
bGJhY2tPYmplY3RJbXAqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsK
ICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVy
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2Ut
Pmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOworICAgICAgICBy
ZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoY2FsbEZyYW1lLCBmYWxsYmFj
a01ldGhvZC5nZXQoKSk7CiAgICAgfQogICAgICAgICAgICAgCiAgICAgb2JqY0luc3RhbmNlLT5l
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IGZkNmU1
ZWQ3MWYyZTBiY2FmMzU0Y2Q2MmNlMDI3MTlhNTNhYzE3NzguLjg3ZjE2YjBlODBiNjcwMDVlMTdj
Y2NlMTVkNjkzY2FmZGQ2MGNkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgQmluZGluZ3M7CiAKIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJS
dW50aW1lTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lTWV0aG9kKSB9OwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1ldGhv
ZCogbWV0aG9kKQogICAgIC8vIENhbGxlcnMgd2lsbCBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0
IGdsb2JhbCBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGlzIG5hdGl2ZSBvYmplY3QgIm1ldGhv
ZCIuCkBAIC04NSwzNSArODUsMzUgQEAgSXNvU3Vic3BhY2UqIFJ1bnRpbWVNZXRob2Q6OnN1YnNw
YWNlRm9ySW1wbChWTSYgdm0pCiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5ydW50aW1lTWV0aG9kU3BhY2UoKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRo
b2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgUnVu
dGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4ZWMtPmpz
Q2FsbGVlKCkpOworICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRp
bWVNZXRob2QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgaWYgKCFtZXRob2QtPm1l
dGhvZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8UnVudGltZU9iamVjdD4o
dm0pKSB7CiAgICAgICAgIFJ1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2Fz
dDxSdW50aW1lT2JqZWN0Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNl
ID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOwogICAgICAgICBpZiAoIWlu
c3RhbmNlKSAKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVj
dDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcg
YSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1Zh
bHVlLmluaGVyaXRzPEpTSFRNTEVsZW1lbnQ+KHZtKSkKICAgICAgICAgICAgIGluc3RhbmNlID0g
cGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdCh0aGlzVmFsdWUp
KS0+d3JhcHBlZCgpKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgIH0KICAgICBBU1NFUlQoaW5zdGFu
Y2UpOwogCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBpbnN0
YW5jZS0+aW52b2tlTWV0aG9kKGV4ZWMsIG1ldGhvZCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBp
bnN0YW5jZS0+aW52b2tlTWV0aG9kKGNhbGxGcmFtZSwgbWV0aG9kKTsKICAgICBpbnN0YW5jZS0+
ZW5kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggODczYmEzNDZiYzRmYTNkMjc3YWQ1
MDRmMjc3MzMwZTI5NjM0MmVjMy4uN2QwZWEzNTZmMjNkMzdiYzZhNTU1M2Y5OGNjMmZiYjA0ZjIz
ODcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0yMjIs
MTIgKzIyMiwxMiBAQCBKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxSdW50aW1lT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChleGVjLT5qc0NhbGxlZSgpLT5pbmhlcml0czxS
dW50aW1lT2JqZWN0PihleGVjLT52bSgpKSk7Ci0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5j
ZShzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdldEludGVy
bmFsSW5zdGFuY2UoKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+anNDYWxsZWUoKS0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgp
KSk7CisgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKICAg
ICBpbnN0YW5jZS0+YmVnaW4oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZv
a2VEZWZhdWx0TWV0aG9kKGV4ZWMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmlu
dm9rZURlZmF1bHRNZXRob2QoY2FsbEZyYW1lKTsKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjQ2LDE0ICsyNDYsMTQgQEAg
Q2FsbFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0
YSYgY2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1l
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+anNDYWxsZWUoKTsK
LSAgICBBU1NFUlQoY29uc3RydWN0b3ItPmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+KGV4ZWMtPnZt
KCkpKTsKLSAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKHN0YXRpY19jYXN0PFJ1bnRpbWVP
YmplY3QqPihleGVjLT5qc0NhbGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKKyAgICBK
U09iamVjdCogY29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCk7CisgICAgQVNTRVJU
X1VOVVNFRChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLT5pbmhlcml0czxSdW50aW1lT2JqZWN0
PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKKyAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKHN0
YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5nZXRJbnRl
cm5hbEluc3RhbmNlKCkpOwogICAgIGluc3RhbmNlLT5iZWdpbigpOwotICAgIEFyZ0xpc3QgYXJn
cyhleGVjKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VDb25zdHJ1Y3Qo
ZXhlYywgYXJncyk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlQ29uc3RydWN0KGNhbGxGcmFtZSwgYXJncyk7CiAgICAg
aW5zdGFuY2UtPmVuZCgpOwogICAgIAogICAgIEFTU0VSVChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL1N1YnRsZUNyeXB0by5oCmluZGV4IGY1MThjMTI2YTgwNzIzZDY1MmQ1ODQ3MThmMTJhZjZk
ODJlNDRiNmUuLjM1YjE3YWVmNTk2OWRhODNmMWFmNzNkYjk0MzMxNmM5NTUxY2VmZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmgKQEAgLTM5LDcgKzM5LDggQEAKIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFz
cyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJh
bWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5k
ZXggNjc2ZmJhODUzMmY2MGE4YzVjZDRiNzUyNDBjZWI5YmQ5MzZjOGIzZC4uZjUyMmRmNGJiMTI2
NzIxMGU4NmY4NTFiNmViNjYzNjE2ZThhNDBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgK
QEAgLTM4LDcgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaAppbmRleCA1ODljODQxY2MzZTg4
Y2U3OWU3NDJlN2IyYmIzNGFlOWU2OWYwOGFiLi4xZjc4MjQyYzU5NjJkODUxYjFjMGE5MjhhZDYz
MWNkOGJlNDI4YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaApAQCAtMzIsNyArMzIsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTBlMzRkMjU1MzI5ZTMzZGQwNTM5
NTY3MGJkYTllMGNlM2VkMjk4Ni4uNmJmNjE5Y2QxMTYxMTIzZjNmZTU5MDM4NDZkNzMzMWY5NGQ2
NTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTgxLDggKzgxLDkgQEAKICNlbmRpZgogCiBu
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IElucHV0Q3Vyc29yOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IDI2NTZiYjQzNGNlZTY3
MTc1ZmQ2YjE1YTBiYjkyYzgzMWEwOGNjYTcuLjBiNWYzZDg3YzAxNTg0NTU2MmJjOTI5YzdjZjhm
OGViNzRkZjQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC0zNiw5ICszNiwxMCBA
QAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhl
Y1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVl
OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCBkMTkxMWIwODk2NDAzMDY2MzNjOTMyM2UzMDRj
MWJjN2UwNTFjOTk0Li4wYmNiODFiYjNiMjk5MDFjMzU1NWU5ZWQ2NjlhODYwYWZkODFkNzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTMyLDggKzMyLDkgQEAKICNlbmRpZgogCiBuYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
VmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4
IGYwZTY1NGI3MzBiOWRlMmE2NTBjY2U1MjQyODQyNmUwNmM5YzEyMmUuLmVmYjAxNmY1NWM1MzA0
ZmRhNmI0NWRhNGMxNzBjNjFkYWIzYTA4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNDAsMTEgKzQwLDEyIEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgRXhjZXB0aW9uOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNQcm9taXNlOwogY2xhc3Mg
Vk07CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBkMWY0ZTIwMjUxNmM4YTkzYzhlMzNmMjYx
YjZhZTcwMTNmMzg0MzZhLi40MTQ2ZWU3ZTYyMzMxNDhiNTBiYTA0ZTY3NDA1NGE2NDFmZGU3NjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC0yNyw3
ICsyNyw4IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xBbnkuaAppbmRleCAzMTE1NDg4ZWMwNmZlMzU4NDE1NjBjYTIxZDQyOTIy
NGE4ODY4N2NlLi41ZWY3ZWM0MTAwZTY3YjdkNmFhZWVjZGFhYzZlZDkxNTIxMzNlNzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFueS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKQEAgLTMzLDggKzMzLDkgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4
IDgwNGYyYmNiMjg5NmZjOTAxYzM1NTRhZDY4MzRhYzFiYWFhNDUzYzAuLjAzNGUxZWY0NzE1ODFm
NDcxYmZmODI4YjVkMTM2Y2Y3Mzk2MTJjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQ2LDggKzQ2LDkgQEAgY2xh
c3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogfQogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IDBjMTFkMjg0M2M1NTNiOTAyMjM2NmJiZmZiZWNmODQ5MDdmMjM2MmEuLjE0ODdiMTMxZTZi
OWY2ODBhOGIyMmNkY2YzYjk0ZjE1NDUzNzVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtMzYsNyAr
MzYsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggODhlMzI3YWZmNjhkN2QyZDczNTVjMGEwMDEwYjM0
OGNhZDFjN2M1My4uYjQ4MjI0ZWJmMmQ2ODYwYzQzYzk1OWE1MWI2ZTVjNDhjM2ZjMzgxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC00MiwxMCArNDIsMTEgQEAKICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKIHRlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBTdHJvbmc7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaApp
bmRleCBmZmJmNjJiMjAxZmUzMTI4NTM4MjE3OGMzNDlkMGFiMmI3NGU1NTcwLi5kNTZhNmY1ZDEx
OTgwY2I0ZmIyODdmYTJjNzViMTZkMmQ1Mzk1MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5oCkBAIC0zNyw3ICszNyw4IEBAIGNsYXNzIENvbnNvbGVNZXNzYWdlOwog
fQogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKaW5kZXggOTNmZWUxZWJiNGExOTkxMjZh
YmY4Nzg4MDMyNjM5Mjk4NmVlZjMwZC4uZjU1YmY2YTFjOTBhZThhOGE3N2IxYWU4ZTk5NjM5NDQy
ZGU1OGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCkBAIC0zMSwxMCAr
MzEsMTEgQEAKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewot
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBKU1ZhbHVlOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA2YjY0MmYxOTA3
NzdjMzBjZDEyODI0ZmRmYjRhNTg4MzQ0ODg4NGI4Li5kYzAyYmY0ZjMwNmVhZjI4ZjlmNGE0ZjFj
YWIzMDk1OWI2NmQzNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaApAQCAtMzcsNyArMzcsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNl
IFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKaW5kZXgg
N2Y3ZjY0NGU0NzE3ZDk4OWUxMGU1NGRhZTVlMTFlNWMwMWRmZWYyNS4uMmRlZGZhOTcyNTY4NTIw
NWRjNWI4OWFhMzZlNjU1NjhmYWIyNDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuaApAQCAtMzEsNyArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCA1ZmFi
ZGFjNjQ2NzhiNjljYjExMDQxZTZmNzBmOWY2ODJmMzllMDkwLi5kYWYxZDkzMWJhZjE2NDFkYmVj
ZWIzOGMyMzExNzQ4YjJiYTdmY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
QmFzZS5oCkBAIC0zNiw5ICszNiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogaWQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNs
YXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09i
amVjdDsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaAppbmRleCA5NDAwZmE3NzlkYWRjOTZlZDc4NzE0NzNlYTkxOTYyNTA0ODVm
MTljLi45MDUyOWE5ZThlZDE5OWVmOGE0N2FjZWFlYjRkYzUzZTg1MzdmZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC0zNCw5ICszNCwxMCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNP
YmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCBlZTMxYzdj
ZWM1ZWZlOWZmZmJhNzQwY2MwNWMzYjU4MGY3MGNmOTI0Li44ZTNiZmE4N2VjNThmMDY4YTMyOTg0
MDlhYTU2YjE0ZjljMDA2MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTM4LDkgKzM4
LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVj
dDsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xl
Q2xpZW50LmgKaW5kZXggMzg0NmQyNzFiNjhiZDY5ODIwMDBiNTJiOWFiYWI5NzY3Njc2MTQ2OS4u
Y2I3ZGY2NzRhZTA4MjA1YzE5MTllNDYzZDZmYzNhN2U0YmMwZWUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDggQEAKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKaW5kZXggMGVlODE3NmVjNTk5Zjc5NDFl
ZjdjZWNiMDkxNGVkZWVhODU3ZTMxMS4uOTNhOGVhZGQ3MDMwMGNlYzhjNThiY2YyYmFjMTFkOTQ3
YjMyOGNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCkBAIC0zNSw4ICszNSw5IEBACiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBD
YWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldENvbnNvbGVDbGllbnQuaAppbmRleCA2MzFkYWU5OTAxYWM5YTQzZDIwODY5ZWE1ZDgxZmMz
MzQ1OGM4ZTkwLi4xYmI3MTNkNzA5YTFkNjgyOGRhYTcyNDlmOTRhN2ZiY2ViZmQxMjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKQEAgLTMy
LDcgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
LWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBl
MDc0M2U0YTFiMGU2MTg5NGY1OTcwMTk5Y2UyM2E1NWEwZDRmODgzLi42YmYwODVlZjRhMzliNWNk
Y2VkYmU2YmZiMmRjZWQxMTBjMzU1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNOUE1ldGhvZCk7
CiAKIGNvbnN0IENsYXNzSW5mbyBKU05QTWV0aG9kOjpzX2luZm8gPSB7ICJOUE1ldGhvZCIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNOUE1ldGhvZCkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSlNOUE1l
dGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcikKICAgICA6IEludGVybmFsRnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUsIGNhbGxNZXRob2QsIG51bGxwdHIp
CkBAIC02NiwzMSArNjYsMzEgQEAgSXNvU3Vic3BhY2UqIEpTTlBNZXRob2Q6OnN1YnNwYWNlRm9y
SW1wbChWTSYgdm0pCiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU05QTWV0aG9k
KiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAg
ICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAg
ICAvLyBDaGVjayBpZiB3ZSdyZSBjYWxsaW5nIGEgbWV0aG9kIG9uIHRoZSBwbHVnLWluIHNjcmlw
dCBvYmplY3QuCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0hUTUxFbGVtZW50Pih2bSkp
IHsKICAgICAgICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgc2Ny
aXB0IG9iamVjdCBmcm9tIHRoZSBlbGVtZW50Ci0gICAgICAgIGlmIChKU09iamVjdCogc2NyaXB0
T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpKQorICAgICAgICBpZiAo
SlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChjYWxsRnJhbWUsIGVs
ZW1lbnQpKQogICAgICAgICAgICAgdGhpc1ZhbHVlID0gc2NyaXB0T2JqZWN0OwogICAgIH0KIAog
ICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNOUE9iamVjdD4odm0pKSB7CiAgICAgICAgIEpT
TlBPYmplY3QqIGpzTlBPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2Fs
bE1ldGhvZChleGVjLCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTlBPYmplY3QtPmNhbGxNZXRob2QoY2FsbEZyYW1lLCBqc05Q
TWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmlu
ZGV4IGU1NzE1MWMwODQwZmQxOGY1OWQxOWFjMGUwOTMwYjJjOWVhMDNlY2YuLjAyYTM3MGE5ZWY1
ZGY1NjM4MTVlOTM2ZDc3ZmQyYjcxN2I4MTVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0yMzks
MTIgKzIzOSwxMiBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsTlBKU09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTlBKU09iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU09iamVjdCogb2Jq
ZWN0ID0gZXhlYy0+anNDYWxsZWUoKTsKLSAgICBBU1NFUlQob2JqZWN0LT5pbmhlcml0czxKU05Q
T2JqZWN0PihleGVjLT52bSgpKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+
anNDYWxsZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgb2JqZWN0LT5pbmhl
cml0czxKU05QT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNDYXN0PEpTTlBPYmplY3QqPihvYmplY3QpLT5jYWxsT2JqZWN0KGV4ZWMp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0
KS0+Y2FsbE9iamVjdChjYWxsRnJhbWUpKTsKIH0KIAogSlNDOjpDYWxsVHlwZSBKU05QT2JqZWN0
OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEp
CkBAIC0yNTgsMTIgKzI1OCwxMiBAQCBKU0M6OkNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxE
YXRhKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YQogICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU09i
amVjdCogY29uc3RydWN0b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEFTU0VSVChjb25zdHJ1
Y3Rvci0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZXhlYy0+dm0oKSkpOworICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGds
b2JhbE9iamVjdCwgY29uc3RydWN0b3ItPmluaGVyaXRzPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVj
dC0+dm0oKSkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVj
dCo+KGNvbnN0cnVjdG9yKS0+Y2FsbENvbnN0cnVjdG9yKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4oY29uc3RydWN0b3IpLT5jYWxsQ29uc3Ry
dWN0b3IoY2FsbEZyYW1lKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNOUE9iamVjdDo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZU9iamVjdE1hcC5oCmluZGV4IDY5Y2E1MTE4MTQzOWRmZTljMWQxNjU3M2U1
ODY5MDEzYWY3YTBjYWUuLjY2ZjFmYzQwOWIxNjVhMzE0MTliNjU5MDUzYjQ1MjcyMWI4ODkwNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC0zOCwxMSArMzgsMTIgQEAgc3RydWN0
IE5QT2JqZWN0OwogdHlwZWRlZiBzdHJ1Y3QgX05QVmFyaWFudCBOUFZhcmlhbnQ7CiAKIG5hbWVz
cGFjZSBKU0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAg
ICAgY2xhc3MgVk07CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmluZGV4IDgzNTdkOTFjYTVjNWMyNGU3ZDY0
NzM2Y2VlZWUzYTViMGQ2NjVhZTUuLjc5YzJhNjkxOGViNGM4YTcwOThhNWQ1OWJiMDA1YzU2MDU4
MjhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLmgKQEAgLTM2LDExICszNiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNz
IERlYnVnZ2VyQ2FsbEZyYW1lOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBBcmdMaXN0OworICAg
IHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogQGNsYXNzIFdlYlNjcmlwdENhbGxG
cmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380260</attachid>
            <date>2019-10-04 15:39:07 -0700</date>
            <delta_ts>2019-10-07 15:30:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202569-20191004153906.patch</filename>
            <type>text/plain</type>
            <size>1304713</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NTEzM2I5ZDcxZTM3Mzc0YmY1Y2E4MDBiOTdkYmI1YTQwMjY3ZjZkLi4zZWY4YjA0MmY5MzFmOTQ5
YjY3NWVkODRlYTMxODJmMWIwOTJkNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OTcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5jdGlvbiB0byAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIEpTQyBob3N0LWZ1bmN0aW9u
cydzIHNpZ25hdHVyZSBmcm9tIGBDYWxsRnJhbWUqYCB0byBgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqYC4KKyAgICAgICAgV2Ugd291bGQgbGlrZSB0byByZXBsYWNlIHRoZSBjdXJyZW50IGBF
eGVjU3RhdGUqYCB1c2Ugd2l0aCBgSlNHbG9iYWxPYmplY3QqYCB0byBmaXggbWFueSBpc3N1ZXMs
IHJlbW92ZQorICAgICAgICBnbG9iYWxFeGVjKCkgaGFjaywgYW5kIHJlbW92ZSBgRXhlY1N0YXRl
Ojp2bSgpYCBoYWNrLiBUaGlzIGlzIGltcG9ydGFudCBzaW5jZSB0aGlzIGhhY2sgcHJldmVudHMg
dXMgZnJvbQorICAgICAgICBpbXBsZW1lbnRpbmcgc2NhbGFibGUgSXNvU3Vic3BhY2Ugb3B0aW1p
emF0aW9uLCB3aGljaCBsZWFkcyB0byBwdXR0aW5nIGFsbCBKUyBjZWxscyBpbiBlYWNoIElzb1N1
YnNwYWNlLgorCisgICAgICAgIFRvIGdldCBsZXhpY2FsIEpTR2xvYmFsT2JqZWN0IGluIGEgc3Vw
ZXIgZmFzdCB3YXksIHdlIHB1dCBpdCBpbiBKU0Z1bmN0aW9uL0ludGVybmFsRnVuY3Rpb24ncyBm
aWVsZC4KKyAgICAgICAgQW5kIHRyYW1wb2xpbmUgZ2V0cyBKU0dsb2JhbE9iamVjdCBmcm9tIGNh
bGxlZSwgYW5kIHBhc3NlcyBpdCBhcyBpdHMgYXJndW1lbnQuIFNpbmNlIHRoaXMgdHJhbXBvbGlu
ZSBhbHJlYWR5CisgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSBmaWVsZCBvZiBjYWxsZWUgdG8gZ2V0
IGV4ZWN1dGFibGUgYWRkcmVzcywgZ2V0dGluZyBhbm90aGVyIGZpZWxkIGlzIGZhaXJseSBjaGVh
cC4KKyAgICAgICAgVGhlIG1lbW9yeSBpbmNyZWFzZSBkb2VzIG5vdCBtYXR0ZXIgaW4gdGhpcyBj
YXNlLiBUaGUgc2l6ZW9mKEpTRnVuY3Rpb24pIGlzIDQwLiBTaW5jZSBvdXIgYWxsb2NhdGlvbiBz
aXplIG9mCisgICAgICAgIEpTQ2VsbHMgYXJlIHJvdW5kZWQgYnkgMTYsIGluY3JlYXNpbmcgb25l
IGZpZWxkIGRvZXMgbm90IGNoYW5nZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc2l6ZS4gQW5kICMg
b2YgSW50ZXJuYWxGdW5jdGlvbgorICAgICAgICBpcyB2ZXJ5IGxpbWl0ZWQgc2luY2UgaXQgaXMg
b25seSB1c2VkIGZvciBjb25zdHJ1Y3RvcnMgaW4gSlNDLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyB0aGUgc2lnbmF0dXJlLiBBbmQgZm9yIHRoZSBFeGVjU3RhdGUqIC0+IEpTR2xvYmFs
T2JqZWN0KiBwcmVwYXJhdGlvbiwgd2UgdXNlIGBDYWxsRnJhbWUqYCBuYW1lCisgICAgICAgIGlu
c3RlYWQgb2YgYEV4ZWNTdGF0ZSpgIGluIHRoZSBob3N0LWZ1bmN0aW9ucy4gQW5kIHVzZSBgY2Fs
bEZyYW1lYCB2YXJpYWJsZSBuYW1lIGluc3RlYWQgb2YgYHN0YXRlYCBvciBgZXhlY2AuCisgICAg
ICAgIEFuZCB3ZSBhbHNvIGdldCBWTSYgZnJvbSBgSlNHbG9iYWxPYmplY3QqYCBpbnN0ZWFkIG9m
IGBDYWxsRnJhbWUqYCBzaW5jZSBpdCBpcyBmYXN0ZXIuCisKKyAgICAgICAgKiBBUEkvQVBJQ2Fs
bGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxs
KToKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKiBBUEkvQVBJQ2FzdC5oOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToK
KyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAg
ICAgICAgKiBBUEkvSlNCYXNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAg
ICAgICAqIGRmZy9ERkdBcml0aE1vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFy
cmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdG
dW5jdGlvbkNvbW1vbik6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwv
RlRMT1NSRW50cnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0
QWxpYXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbik6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25Jc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAo
SW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJn
ZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25XZWFrU2V0RW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
UXVlcnlIb2xkZXJzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
RnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVMaW5lKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1l
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2Nv
cGVDaGFpbik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJp
YnV0ZVRoaXNPYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZy
YW1lSXNUYWlsRGVsZXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9BYnN0
cmFjdFBDLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmpzQ2FsbGVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjphZGRyZXNzT2ZDb2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6c2NvcGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpyZWdpc3RlcnMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om9wZXJhdG9yPSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lT3JFbnRyeUZyYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZU9yRW50
cnlGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVy
RnJhbWVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnJldHVyblBD
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpoYXNSZXR1cm5QQyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2xlYXJSZXR1cm5QQyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmV0dXJuUENPZmZzZXQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFic3RyYWN0UmV0dXJuUEMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnRvcE9mRnJhbWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnNldENhbGxlckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6YXJndW1lbnRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmFkZHJlc3NPZkFyZ3VtZW50c1N0YXJ0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6dW5jaGVja2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjpnZXRBcmd1bWVudFVuc2FmZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNT
dGF0ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjp0aGlzVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldFRo
aXNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6bmV3VGFyZ2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvZmZzZXRGb3IpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om5vQ2FsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjppc0dsb2JhbEV4ZWMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDYWxsZWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OnNldENvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWNT
dGF0ZTo6c2V0UmV0dXJuUEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0
ZXJhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9yUmVn
aXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5k
UEMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZy
YW1lQW5kUEMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0
ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6UHJv
dG9DYWxsRnJhbWU6OmluaXQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oOgorICAgICAgICAqIGludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5oOgorICAgICAgICAqIGludGVycHJldGVyL1ZNRW50cnlSZWNvcmQu
aDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6CisgICAg
ICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6OnVuc2FmZVByZXZUb3BDYWxsRnJhbWUpOgorICAgICAg
ICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5oOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlND
OjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9i
YWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnRTdGRPdXQp
OgorICAgICAgICAoZnVuY3Rpb25QcmludFN0ZEVycik6CisgICAgICAgIChmdW5jdGlvbkRlYnVn
KToKKyAgICAgICAgKGZ1bmN0aW9uRGVzY3JpYmUpOgorICAgICAgICAoZnVuY3Rpb25EZXNjcmli
ZUFycmF5KToKKyAgICAgICAgKGZ1bmN0aW9uU2xlZXBTZWNvbmRzKToKKyAgICAgICAgKGZ1bmN0
aW9uSlNDU3RhY2spOgorICAgICAgICAoZnVuY3Rpb25HQ0FuZFN3ZWVwKToKKyAgICAgICAgKGZ1
bmN0aW9uRnVsbEdDKToKKyAgICAgICAgKGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKGZ1bmN0
aW9uSGVhcFNpemUpOgorICAgICAgICAoZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspOgorICAgICAg
ICAoZnVuY3Rpb25BZGRyZXNzT2YpOgorICAgICAgICAoZnVuY3Rpb25WZXJzaW9uKToKKyAgICAg
ICAgKGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAg
KGZ1bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAo
ZnVuY3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAg
ICAgKGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyk6CisgICAgICAgIChmdW5jdGlvbkNsZWFyU2Ft
cGxpbmdGbGFncyk6CisgICAgICAgIChmdW5jdGlvbkdldFJhbmRvbVNlZWQpOgorICAgICAgICAo
ZnVuY3Rpb25TZXRSYW5kb21TZWVkKToKKyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKToKKyAgICAg
ICAgKGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKToKKyAgICAgICAgKGZ1bmN0aW9uUmVhZGxp
bmUpOgorICAgICAgICAoZnVuY3Rpb25QcmVjaXNlVGltZSk6CisgICAgICAgIChmdW5jdGlvbk5l
dmVySW5saW5lRnVuY3Rpb24pOgorICAgICAgICAoZnVuY3Rpb25Ob0RGRyk6CisgICAgICAgIChm
dW5jdGlvbk5vRlRMKToKKyAgICAgICAgKGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyk6CisgICAg
ICAgIChmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25O
dW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgKGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxl
ZCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKToKKyAgICAgICAgKGZ1bmN0
aW9uRG9sbGFyRXZhbFNjcmlwdCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQp
OgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgorICAgICAg
ICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFn
ZW50U2xlZXApOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2FzdCk6CisgICAg
ICAgIChmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9uRG9s
bGFyQWdlbnRMZWF2aW5nKToKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNO
b3cpOgorICAgICAgICAoZnVuY3Rpb25XYWl0Rm9yUmVwb3J0KToKKyAgICAgICAgKGZ1bmN0aW9u
SGVhcENhcGFjaXR5KToKKyAgICAgICAgKGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNzKToKKyAgICAg
ICAgKGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKGZ1bmN0aW9uTWFs
bG9jSW5BTG9vcCk6CisgICAgICAgIChmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUpOgorICAgICAg
ICAoZnVuY3Rpb25KU0NPcHRpb25zKToKKyAgICAgICAgKGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50KToKKyAgICAgICAgKGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAg
ICAgIChmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKToKKyAgICAgICAgKGZ1bmN0aW9uUXVp
dCk6CisgICAgICAgIChmdW5jdGlvbkZhbHNlKToKKyAgICAgICAgKGZ1bmN0aW9uVW5kZWZpbmVk
MSk6CisgICAgICAgIChmdW5jdGlvblVuZGVmaW5lZDIpOgorICAgICAgICAoZnVuY3Rpb25Jc0lu
dDMyKToKKyAgICAgICAgKGZ1bmN0aW9uSXNQdXJlTmFOKToKKyAgICAgICAgKGZ1bmN0aW9uSWRl
bnRpdHkpOgorICAgICAgICAoZnVuY3Rpb25FZmZlY3RmdWw0Mik6CisgICAgICAgIChmdW5jdGlv
bk1ha2VNYXNxdWVyYWRlcik6CisgICAgICAgIChmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMp
OgorICAgICAgICAoZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMpOgorICAgICAgICAo
ZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MpOgorICAgICAgICAoZnVuY3Rpb25SZWxlYXNlV2Vha1Jl
ZnMpOgorICAgICAgICAoZnVuY3Rpb25JczMyQml0UGxhdGZvcm0pOgorICAgICAgICAoZnVuY3Rp
b25DcmVhdGVHbG9iYWxPYmplY3QpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRh
eCk6CisgICAgICAgIChmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToK
KyAgICAgICAgKGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QpOgorICAgICAgICAoZnVuY3Rp
b25HZW5lcmF0ZUhlYXBTbmFwc2hvdEZvckdDRGVidWdnaW5nKToKKyAgICAgICAgKGZ1bmN0aW9u
UmVzZXRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChmdW5jdGlvbkVuc3VyZUFycmF5U3Rv
cmFnZSk6CisgICAgICAgIChmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAg
IChmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgIChmdW5jdGlv
bk1heEFyZ3VtZW50cyk6CisgICAgICAgIChmdW5jdGlvbkFzeW5jVGVzdFN0YXJ0KToKKyAgICAg
ICAgKGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2VkKToKKyAgICAgICAgKGZ1bmN0aW9uV2ViQXNzZW1i
bHlNZW1vcnlNb2RlKToKKyAgICAgICAgKGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAoZnVuY3Rpb25Eb2xs
YXJEZXRhY2hBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRFeGNl
cHRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkNMb29wUmVnaXN0ZXI6OmNhbGxGcmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNM
b29wUmVnaXN0ZXI6OmV4ZWNTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vY2xvb3AucmI6CisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsp
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OmNhbGxBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1
Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjphcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNo
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNB
ZGQpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY0FuZCk6CisgICAgICAgIChKU0M6OmF0b21p
Y3NGdW5jQ29tcGFyZUV4Y2hhbmdlKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNFeGNoYW5n
ZSk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jSXNMb2NrRnJlZSk6CisgICAgICAgIChKU0M6
OmF0b21pY3NGdW5jTG9hZCk6CisgICAgICAgIChKU0M6OmF0b21pY3NGdW5jT3IpOgorICAgICAg
ICAoSlNDOjphdG9taWNzRnVuY1N0b3JlKToKKyAgICAgICAgKEpTQzo6YXRvbWljc0Z1bmNTdWIp
OgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY1dhaXQpOgorICAgICAgICAoSlNDOjphdG9taWNz
RnVuY1dha2UpOgorICAgICAgICAoSlNDOjphdG9taWNzRnVuY1hvcik6CisgICAgICAgICogcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxCaWdJbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4pOgor
ICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4pOgorICAgICAgICAqIHJ1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5j
VG9TdHJpbmdJbXBsKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChK
U0M6OmJpZ0ludFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEJvb2xlYW5Db25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4pOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1
bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAg
ICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zb2xlTG9nV2l0aExldmVsKToKKyAgICAgICAgKEpTQzo6Y29u
c29sZVByb3RvRnVuY0RlYnVnKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Vycm9y
KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0xvZyk6CisgICAgICAgIChKU0M6OmNv
bnNvbGVQcm90b0Z1bmNJbmZvKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1dhcm4p
OgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQ2xlYXIpOgorICAgICAgICAoSlNDOjpj
b25zb2xlUHJvdG9GdW5jRGlyKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0RpclhN
TCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUYWJsZSk6CisgICAgICAgIChKU0M6
OmNvbnNvbGVQcm90b0Z1bmNUcmFjZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNB
c3NlcnQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jQ291bnQpOgorICAgICAgICAo
SlNDOjpjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQ
cm90b0Z1bmNQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1Byb2ZpbGVF
bmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdCk6Cisg
ICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lKToKKyAgICAgICAgKEpTQzo6Y29uc29s
ZVByb3RvRnVuY1RpbWVMb2cpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZUVu
ZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXApOgorICAgICAgICAo
SlNDOjpjb25zb2xlUHJvdG9GdW5jR3JvdXApOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9G
dW5jR3JvdXBDb2xsYXBzZWQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jR3JvdXBF
bmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jUmVjb3JkKToKKyAgICAgICAgKEpT
Qzo6Y29uc29sZVByb3RvRnVuY1JlY29yZEVuZCk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90
b0Z1bmNTY3JlZW5zaG90KToKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAg
ICAgIChKU0M6OmRhdGVQYXJzZSk6CisgICAgICAgIChKU0M6OmRhdGVOb3dJbXBsKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZU5vdyk6CisgICAgICAgIChKU0M6OmRhdGVVVEMpOgorICAgICAgICAqIHJ1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9G
dW5jVG9Mb2NhbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9j
YWxlVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5
bWJvbCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRUaW1lKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0Z1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1vbnRoKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKToKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY0dldERhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VVRD
RGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXkpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dl
dEhvdXJzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJv
dG9GdW5jR2V0VVRDTWludXRlcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRTZWNv
bmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRUaW1lem9uZU9mZnNldCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRUaW1l
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jU2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRV
VENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMpOgorICAg
ICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTWludXRlcyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNTZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRVVENI
b3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXREYXRlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
U2V0TW9udGgpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgpOgorICAg
ICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIpOgorICAgICAgICAoSlNDOjpkYXRl
UHJvdG9GdW5jU2V0VVRDRnVsbFllYXIpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0
WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGlt
ZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9F
cnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxFcnJvckNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KToKKyAgICAgICAg
KEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjplcnJvclByb3RvRnVuY1RvU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkZ1enouaDoKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRo
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25Qcm90
b3R5cGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
TG9nKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpn
bG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOgorICAgICAg
ICAoSlNDOjpjYWxsSW50bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxE
YXRlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zv
cm1hdERhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxOdW1iZXJG
b3JtYXQpOgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmludGxPYmplY3RGdW5jR2V0Q2Fub25p
Y2FsTG9jYWxlcyk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyk6CisgICAgICAg
IChKU0M6OmNhbGxJbnRsUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZUZ1bmNTZWxlY3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0
b3I8c2hhcmluZ01vZGU+OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+Ojpjb25zdHJ1Y3RBcnJheUJ1ZmZl
cik6CisgICAgICAgIChKU0M6OmNhbGxBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OmFycmF5
QnVmZmVyRnVuY0lzVmlldyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjphcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6c2hh
cmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKiBydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAg
KEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6aXNCb3VuZEZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KToKKyAgICAgICAgKiBydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bjo6Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6
c2V0RGF0YSk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIpOgorICAg
ICAgICAoSlNDOjpkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCk6CisgICAgICAgIChKU0M6
OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0Z1bmNHZXRJbnQ4KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQx
Nik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIpOgorICAgICAgICAo
SlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0Z1bmNHZXRVaW50MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY0dldFVp
bnQzMik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMik6CisgICAg
ICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCk6CisgICAgICAgIChKU0M6OmRh
dGFWaWV3UHJvdG9GdW5jU2V0SW50OCk6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9GdW5j
U2V0SW50MTYpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKToKKyAg
ICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCk6CisgICAgICAgIChKU0M6OmRh
dGFWaWV3UHJvdG9GdW5jU2V0VWludDE2KToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0Z1
bmNTZXRVaW50MzIpOgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIp
OgorICAgICAgICAoSlNDOjpkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRlTWF0aC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFs
bG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
aW5pdGlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpnbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAg
ICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om1ha2VCb3VuZEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6aGFzT3duTGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAoSlND
Ojphc3NlcnRDYWxsKToKKyAgICAgICAgKEpTQzo6ZW5xdWV1ZUpvYik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1BhcnNlSW50KToKKyAgICAgICAgKEpT
Qzo6Z2xvYmFsRnVuY1BhcnNlRmxvYXQpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRGVjb2Rl
VVJJKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCk6CisgICAg
ICAgIChKU0M6Omdsb2JhbEZ1bmNFbmNvZGVVUkkpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5j
RW5jb2RlVVJJQ29tcG9uZW50KToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VzY2FwZSk6Cisg
ICAgICAgIChKU0M6Omdsb2JhbEZ1bmNVbmVzY2FwZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJv
ckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtl
VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNC
dWlsdGluTG9nKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk6Cisg
ICAgICAgIChKU0M6Omdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUpOgorICAgICAgICAoSlNDOjpnbG9i
YWxGdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jT3du
S2V5cyk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNMb2NrLmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9h
ZGVyUmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclJlc29s
dmUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJSZXNvbHZlU3luYyk6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyR2V0TW9k
dWxlTmFtZXNwYWNlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyRXZhbHVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OnJ1blN0ZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09OUHJvdG9GdW5jUGFyc2UpOgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jU3RyaW5naWZ5
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
U2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToK
KyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAg
IChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZl
cnNlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsTWFwKToKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0TWFwKToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBC
dWNrZXRIZWFkKToKKyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KToK
KyAgICAgICAgKEpTQzo6bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkpOgorICAgICAgICAoSlND
OjptYXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL01hcENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNDbGVhcik6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVu
Y0dldCk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0hhcyk6CisgICAgICAgIChKU0M6Om1h
cFByb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY1NpemUpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNB
YnMpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQUNvcyk6CisgICAgICAgIChKU0M6Om1h
dGhQcm90b0Z1bmNBU2luKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FUYW4pOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQVRhbjIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9G
dW5jQ2VpbCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDbHozMik6CisgICAgICAgIChK
U0M6Om1hdGhQcm90b0Z1bmNDb3MpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jRXhwKToK
KyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Zsb29yKToKKyAgICAgICAgKEpTQzo6bWF0aFBy
b3RvRnVuY0h5cG90KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xvZyk6CisgICAgICAg
IChKU0M6Om1hdGhQcm90b0Z1bmNNYXgpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWlu
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1Bvdyk6CisgICAgICAgIChKU0M6Om1hdGhQ
cm90b0Z1bmNSYW5kb20pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUm91bmQpOgorICAg
ICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU2lnbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1
bmNTaW4pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU3FydCk6CisgICAgICAgIChKU0M6
Om1hdGhQcm90b0Z1bmNUYW4pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jSU11bCk6Cisg
ICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBQ29zaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90
b0Z1bmNBU2luaCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBVGFuaCk6CisgICAgICAg
IChKU0M6Om1hdGhQcm90b0Z1bmNDYnJ0KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Nv
c2gpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jRXhwbTEpOgorICAgICAgICAoSlNDOjpt
YXRoUHJvdG9GdW5jRnJvdW5kKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xvZzFwKToK
KyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xvZzEwKToKKyAgICAgICAgKEpTQzo6bWF0aFBy
b3RvRnVuY0xvZzIpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jU2luaCk6CisgICAgICAg
IChKU0M6Om1hdGhQcm90b0Z1bmNUYW5oKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1Ry
dW5jKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L01pY3JvdGFzay5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y29u
c3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9y
Q29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvTmF0aXZlRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRnVuY3Rpb246Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbjo6b3BlcmF0b3IoKSk6
CisgICAgICAgICogcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpOdWxsR2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAg
ICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxs
U2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE51
bWJlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE51bWJlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKToKKyAgICAgICAg
KEpTQzo6bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlcik6CisgICAgICAgICogcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNU
b0V4cG9uZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6Cisg
ICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6
bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1ZhbHVlT2YpOgor
ICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE9iamVjdFdpdGhO
ZXdUYXJnZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JTZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
cktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckFzc2lnbik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yVmFsdWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JEZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
RGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yQ3JlYXRl
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JGcmVlemUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
clByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1Nl
YWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9ySXMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAg
ICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6bWFrZVJldm9jYWJsZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVD
b25zdHJ1Y3RvclRocm93RXJyb3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVj
dCk6CisgICAgICAgIChKU0M6OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAoSlND
OjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlSZXZva2Uu
Y3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlSZXZva2UpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RDb25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQ
cm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgor
ICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxl
Y3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RT
ZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBD
b25zdHJ1Y3RvckRvbGxhcik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5wdXQp
OgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChK
U0M6OnJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29u
c3RydWN0b3JMYXN0UGFyZW4pOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvckxlZnRD
b250ZXh0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQpOgor
ICAgICAgICAoSlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6
c2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjplc1NwZWNSZWdF
eHBDcmVhdGUpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjYWxsUmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KToKKyAgICAgICAg
KEpTQzo6cmVnRXhwUHJvdG9GdW5jRXhlYyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVu
Y01hdGNoRmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVyR2xvYmFsKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJJZ25v
cmVDYXNlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckRvdEFsbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVyU3RpY2t5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJVbmlj
b2RlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJGbGFncyk6CisgICAgICAgIChK
U0M6OnJlZ0V4cFByb3RvR2V0dGVyU291cmNlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9G
dW5jU2VhcmNoRmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldCk6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgIChKU0M6OnNldFByaXZhdGVGdW5jU2V0QnVja2V0
SGVhZCk6CisgICAgICAgIChKU0M6OnNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCk6CisgICAg
ICAgIChKU0M6OnNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KToKKyAgICAgICAgKiBydW50aW1l
L1NldENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRTZXQpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNBZGQpOgor
ICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6OnNldFByb3Rv
RnVuY0RlbGV0ZSk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0hhcyk6CisgICAgICAgIChK
U0M6OnNldFByb3RvRnVuY1NpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUpOgorICAgICAgICAoSlND
OjpzdHJpbmdGcm9tQ29kZVBvaW50KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aFN0cmlu
Z0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbFN0cmluZ0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VVc2luZ1JlZ0V4cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQ2hhckF0KToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0NvZGVQb2ludEF0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5kZXhPZik6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nUHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNT
cGxpdEZhc3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHJJbXBsKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6YnVpbHRp
blN0cmluZ1N1YnN0ckludGVybmFsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vi
c3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2Up
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZSk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nUHJvdG9GdW5jVHJpbSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1Ry
aW1TdGFydCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RyaW1FbmQpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdJbmNsdWRlc0ltcGwpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OmJ1
aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAgIChKU0M6OnN5bWJvbENvbnN0
cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OnN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24pOgorICAgICAgICAoSlND
OjpzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN5bWJvbFByb3RvRnVu
Y1ZhbHVlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogcnVudGltZS9WTVRyYXBzLmg6CisgICAgICAgICogcnVudGltZS9XYXRjaGRvZy5o
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y2FsbFdlYWtNYXApOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrTWFwKToKKyAgICAg
ICAgKiBydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRXZWFr
TWFwKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcERlbGV0ZSk6CisgICAgICAgIChK
U0M6OnByb3RvRnVuY1dlYWtNYXBHZXQpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFw
SGFzKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcFNldCk6CisgICAgICAgICogcnVu
dGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2Vh
a1JlZik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtSZWYpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtSZWYp
OgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrUmVmRGVyZWYpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtTZXQpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRXZWFrU2V0KToKKyAgICAgICAgKEpT
Qzo6cHJvdG9GdW5jV2Vha1NldERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtT
ZXRIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6RE9NSklUR2V0dGVyQ29tcGxleDo6
ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpET01KSVRGdW5jdGlvbk9i
amVjdDo6ZnVuY3Rpb25XaXRoVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6RE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdDo6ZnVuY3Rpb25XaXRoVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3Jh
c2gpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkJyZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkRGR1RydWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkZUTFRydWUpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkNwdU1mZW5jZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1UmR0
c2MpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNwdUNwdWlkKToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25DcHVQYXVzZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3B1Q2xmbHVzaCk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uTExpbnRUcnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25KSVRU
cnVlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Ob0lubGluZSk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uR0MpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DYWxs
RnJhbWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKToKKyAgICAg
ICAgKEpTQzo6Y29kZUJsb2NrRnJvbUFyZyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wU291cmNlRm9yKToKKyAgICAgICAg
KEpTQzo6ZnVuY3Rpb25EdW1wQnl0ZWNvZGVGb3IpOgorICAgICAgICAoSlNDOjpkb1ByaW50KToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EYXRhTG9nKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Q
cmludCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRHVtcENhbGxGcmFtZSk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uRHVtcFN0YWNrKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wUmVnaXN0
ZXJzKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wQ2VsbCk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uSW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25JbmxpbmVDYXBhY2l0
eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkdldFBJRCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSGF2ZUFCYWRUaW1lKToKKyAgICAgICAg
KEpTQzo6ZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1lKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
cmVhdGVHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZVByb3h5KToK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkpOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkNyZWF0ZU51bGxSb3BlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
cmVhdGVJbXB1cmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUN1c3RvbUdl
dHRlck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVj
dCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdCk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCk6CisgICAgICAg
IChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6ZnVuY3Rpb25DcmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OmZ1bmN0
aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0
ZUJ1aWx0aW4pOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUm9vdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
Q3JlYXRlRWxlbWVudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2V0RWxlbWVudCk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25HZXRIaWRkZW5WYWx1ZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uU2V0SGlkZGVuVmFs
dWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNr
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91
bGROb3RUaHJvdyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25SZXR1cm5UeXBlRm9yKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
RHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQmFzaWNCbG9ja0V4
ZWN1dGlvbkNvdW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKToKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25EZWxldGVBbGxDb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdsb2JhbE9iamVjdENvdW50KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HbG9iYWxP
YmplY3RGb3JPYmplY3QpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldEdldHRlclNldHRlcik6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbkRlbHRhQmV0d2VlbkJ1dHRlcmZsaWVzKToKKyAgICAgICAgKEpTQzo6
ZnVuY3Rpb25Ub3RhbEdDVGltZSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUGFyc2VDb3VudCk6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSXNXYXNtU3VwcG9ydGVkKToKKyAgICAgICAgKiB3YXNt
L1dhc21FbWJlZGRlci5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6Cisg
ICAgICAgIChKU0M6OndlYkFzc2VtYmx5Q29tcGlsZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VmFsaWRh
dGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJu
YWwpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5oOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxs
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6Y2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvRnVuY0V4cG9ydHMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcik6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAgICAgIChKU0M6
OmNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNZW1vcnlQcm90
b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZm
ZXIpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMpOgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMpOgorICAgICAgICAoSlNDOjp3ZWJBc3Nl
bWJseU1vZHVsZUV4cG9ydHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUpOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAo
SlNDOjpjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseVRhYmxl
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cpOgorICAgICAgICAoSlNDOjp3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9GdW5jR2V0KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVBy
b3RvRnVuY1NldCk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbik6Cisg
ICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2RlLmg6CisKIDIwMTktMTAtMDQgIFRydWl0dCBTYXZl
bGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjUwNTgzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhYTY0YjhkYjFkYTIxMGEyNDFkZDRhYjZiNmYxMTBh
ZDMwZTQ0YmEuLjVmMzRlZTM4ZDEyNTNkMDI4ZWNlOWVkZGQxMDRhYTkyMDMwMDMxMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MzUgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RG
dW5jdGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgIFdoaWxlIHNpZ25hdHVyZSBpcyBjaGFuZ2VkLCB3ZSBzdGlsbCB1c2UgYHN0YXRlYCBu
YW1lIGZvciBDYWxsRnJhbWUqIHZhcmlhYmxlIHNpbmNlIGNoYW5naW5nIHRoaXMgaW52b2x2ZXMg
bWFzc2l2ZSBjaGFubmdlIGluCisgICAgICAgIENvZGVHZW5lcmF0b3JKUy5wbS4gV2hlbiByZXBs
YWNpbmcgYEV4ZWNTdGF0ZSpgIHRvIGBKU0dsb2JhbE9iamVjdCpgLCB3ZSBqdXN0IHJlbW92ZSB0
aGVzZSBgc3RhdGVgIHZhcmlhYmxlIGFuZCB1c2UgYGdsb2JhbE9iamVjdGAKKyAgICAgICAgaW5z
dGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQnVp
bHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUJ1aWx0aW5Db25zdHJ1
Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6OmNhbGxUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46Om5l
eHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
SlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTSFRNTEVsZW1l
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYWxsUGx1Z2luKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dlYkFuaW1hdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1dl
YkFuaW1hdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhh
bmRsZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xv
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpzdHJ1Y3R1
cmVkQ2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpzdHJ1Y3R1cmVkQ2xvbmVB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lD
YWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24pOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBM
aWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMpOgorICAgICAgICAo
V2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpOgorICAgICAgICAoV2ViQ29yZTo6anNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb25JbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmllZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0
aEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhW
YXJpYW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZh
cmlhbnRBcmd1bWVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25IYXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QnlTZXR0aW5nT3BlcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25U
ZXN0UHJpdmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RG
ZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbklu
ZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1w
bGVtZW50c01ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25UYWtlTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
dGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRl
c3RDdXN0b21GdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uR2V0dGVyTmFtZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5j
dGlvbkluZGV4ZWRTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90
b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRT
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU9wZXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVP
cGVyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3Jr
ZXJQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
bkNhbGN1bGF0ZVNlY3JldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpT
VGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajIpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
aik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0
aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVy
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
Z0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51
bGxhYmxlVVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5p
bmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZU9iaik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0
ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2lu
ZG93QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0
cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNO
dWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVu
Y3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRo
b2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1
aXNoaW5nVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9u
RGlzdGluZ3Vpc2hpbmdVbmlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVs
bGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0
cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxs
YWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25HZXRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0Myk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQ0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNV
bmlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkFueSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0
U3RhdGljUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9t
aXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RS
ZXR1cm5zT3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFs
T3ZlcmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25B
dHRhY2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlZ2FjeUNh
bGxlck5hbWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMSk6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMik6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNCk6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
NSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEp
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0
aW9uUmV0dXJuaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9u
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxh
Ymxlc0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9u
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJp
bmdTZXF1ZW5jZUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5oOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxP
YmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbFJ1bnRpbWVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbFJ1bnRpbWVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFj
ZS5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xBbnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZUNvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5oOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdC
YXNlLmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25z
b2xlQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdl
RXZlbnQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oOgorCiAy
MDE5LTEwLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIENsZWFuIHVwIHNvbWUgaW5jbHVkZXMgdG8gbWFrZSB0aGUgYnVpbGQgYSBiaXQgZmFzdGVy
OiBET01Qcm9taXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExNzg4MDBmZWMzMzAzZDY4YWJmMjMyOWI1N2U3NDMz
ODI0NTM3OWYuLjA5ODE1NzI1MTIwNTY0NmQ4NzYyZGQ3M2Y1MmYxYTE4YzZlM2VhOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIEhvc3RGdW5j
dGlvbiB0byAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhbGxNZXRob2QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y2FsbE5QSlNPYmplY3QpOgorICAgICAgICAoV2ViS2l0Ojpjb25zdHJ1Y3RXaXRo
Q29uc3RydWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaDoKKwogMjAxOS0xMC0wNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWFiMzA1MjZk
MTIzZDIyMzMxZmNhYTkxNTk4N2Q2MjQ3YWVkMzk5Ny4uMjA4Mzc2ZGIzMzI0NTAxZjU5YzNjMzM4
YjU0MjgzMTVkYmYyYjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE5LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQ2hhbmdlIHNpZ25hdHVyZSBvZiBIb3N0RnVuY3Rpb24gdG8gKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oOgorCiAyMDE5LTEw
LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgU2ltcGxpZnkgc2FuZGJveCBlbmFibGluZyBtYWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggZTUyODNiNWI0MmNkM2M4ZGFh
NjNmMjlmYzJmZTk4ODYxM2Q2YzhkZS4uZWE3ODQ4ZGVlMWFiNjUxOGVhN2Q3YzU1ZWYxZGUzYjEx
ZTNiNTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFj
a0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1
bmN0aW9uLmgKQEAgLTM2LDcyICszNiw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEFQ
SUNhbGxiYWNrRnVuY3Rpb24gewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhl
Y1N0YXRlKik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNh
bGxiYWNrRnVuY3Rpb246OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7Ci0gICAgSlNP
YmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU09i
amVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNDb250ZXh0UmVmIGV4
ZWNSZWYgPSB0b1JlZihjYWxsRnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0g
dG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVm
ID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Y2FsbEZyYW1lLCBOb3RTdHJpY3RNb2RlKSkpOwogCi0gICAgaW50IGFyZ3VtZW50Q291bnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaW50IGFyZ3VtZW50
Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAg
ICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFyZ3VtZW50Q291bnQ7IGkrKykKLSAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0
b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVu
dHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChpKSkpOwogCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgIEpTVmFs
dWVSZWYgcmVzdWx0OwogICAgIHsKLSAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKGV4ZWMpOworICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
Y2FsbEZyYW1lKTsKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVm
KSktPmZ1bmN0aW9uQ2FsbGJhY2soKShleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwg
YXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAg
IGlmIChleGNlcHRpb24pCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pT
KGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNj
b3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBi
ZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMoZXhlYywgcmVzdWx0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGNh
bGxGcmFtZSwgcmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0
aW9uOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgSlND
b250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKTsKKyAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoY2Fs
bEZyYW1lKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVj
dG9yKTsKIAogICAgIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjayA9
IGpzQ2FzdDxUKj4oY29uc3RydWN0b3IpLT5jb25zdHJ1Y3RDYWxsYmFjaygpOwogICAgIGlmIChj
YWxsYmFjaykgewotICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CiAg
ICAgICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAg
ICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQo
dG9SZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKICAg
ICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICBKU09iamVjdFJlZiByZXN1
bHQ7CiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhleGVjKTsKKyAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhjYWxsRnJhbWUpOwogICAgICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY3R4LCBjb25zdHJ1
Y3RvclJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoY2FsbEZyYW1l
LCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZh
bGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUyhyZXN1bHQpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0FQSUNhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2Fz
dC5oCmluZGV4IGIyZjM4ODhiNjUxYjk3ZDM5YzRjNWUxODRmNTAyN2RiZGMwOGUyYjAuLjNiODIw
ZTllNmYzNGZiNjJlYmZhODcyNWM4YjM3OTY5ZGU2Y2I2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJQ2FzdC5oCkBAIC0zMywxMSArMzMsMTIgQEAKICNpbmNsdWRlICJIZWFwQ2VsbElubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNz
IENhbGxGcmFtZTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBWTTsK
ICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOworICAgIHVzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250
ZXh0R3JvdXAqIEpTQ29udGV4dEdyb3VwUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZjA3YTJkYWJiMzBmNThlODFjNmM4Zjk5NzIy
ZmM3NTNlZDU2ZjU3ZS4uZDlhNDMzNjMxMTk0MzViZTU2NzhmYTY2MTk1ZWI0ZDQ4OGRmZDkyMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBA
IC0xNzcsMTcgKzE3NywxNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6
Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1
cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiTm8gbW9kdWxlIGxv
YWRlciBwcm92aWRlZC4iKSk7CiAKICAgICBhdXRvIGRlZmVycmVkUHJvbWlzZSA9IFN0cm9uZzxK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkPih2bSwgZGVmZXJyZWQpOwotICAgIGF1dG8qIHJlc29s
dmUgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJl
c29sdmUiLCBbPV0gKEV4ZWNTdGF0ZSogZXhlYykgeworICAgIGF1dG8qIHJlc29sdmUgPSBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlc29sdmUiLCBb
PV0gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
CiAgICAgICAgIC8vIFRoaXMgY2FwdHVyZXMgdGhlIGdsb2JhbE9iamVjdCBidXQgdGhhdCdzIG9r
IGJlY2F1c2Ugb3VyIHN0cnVjdHVyZSBrZWVwcyBpdCBhbGl2ZSBhbnl3YXkuCi0gICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xv
YmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSldOwot
ICAgICAgICBpZCBzY3JpcHQgPSB2YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHRvUmVmKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgICAgIGlkIHNjcmlwdCA9IHZhbHVlVG9PYmplY3QoY29u
dGV4dCwgdG9SZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAKICAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIAogICAgICAgICBhdXRvIHJlamVjdFByb21p
c2UgPSBbJl0gKFN0cmluZyBtZXNzYWdlKSB7Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZChjcmVh
dGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwotICAgICAgICAgICAgY2FsbChleGVjLCBkZWZl
cnJlZFByb21pc2UtPkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRoaXMgc2hv
dWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGNyZWF0ZVR5
cGVFcnJvcihjYWxsRnJhbWUsIG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIGNhbGwoY2FsbEZyYW1l
LCBkZWZlcnJlZFByb21pc2UtPkpTUHJvbWlzZURlZmVycmVkOjpyZWplY3QoKSwgYXJncywgIlRo
aXMgc2hvdWxkIG5ldmVyIGJlIHNlZW4uLi4iKTsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNVbmRlZmluZWQoKTsKICAgICAgICAgfTsKIApAQCAtMjA2LDE1ICsyMDYsMTUgQEAgSlNJbnRl
cm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKG1ha2VT
dHJpbmcoIlRoZSBzYW1lIEpTU2NyaXB0IHdhcyBwcm92aWRlZCBmb3IgdHdvIGRpZmZlcmVudCBp
ZGVudGlmaWVycywgcHJldmlvdXNseTogIiwgb2xkTW9kdWxlS2V5LCAiIGFuZCBub3c6ICIsIG1v
ZHVsZUtleS5zdHJpbmcoKSkpOwogCiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSk7Ci0gICAg
ICAgIGNhbGwoZXhlYywgZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2
ZSgpLCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxs
KGNhbGxGcmFtZSwgZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZSgp
LCBhcmdzLCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOwogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVW5kZWZpbmVkKCk7CiAgICAgfSk7CiAKLSAgICBhdXRvKiByZWplY3QgPSBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgInJlamVjdCIsIFs9
XSAoRXhlY1N0YXRlKiBleGVjKSB7CisgICAgYXV0byogcmVqZWN0ID0gSlNOYXRpdmVTdGRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJyZWplY3QiLCBbPV0gKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKLSAgICAgICAgYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoMCkpOworICAg
ICAgICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAotICAgICAgICBjYWxs
KGV4ZWMsIGRlZmVycmVkUHJvbWlzZS0+SlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdCgpLCBhcmdz
LCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgc2Vlbi4uLiIpOworICAgICAgICBjYWxsKGNhbGxGcmFt
ZSwgZGVmZXJyZWRQcm9taXNlLT5KU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KCksIGFyZ3MsICJU
aGlzIHNob3VsZCBuZXZlciBiZSBzZWVuLi4uIik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNV
bmRlZmluZWQoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2VJbnRlcm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VJ
bnRlcm5hbC5oCmluZGV4IGEyNzRhZjk2ZThjNDA5OTc2NzY1YzEzMzhmMmVmMmExZmJlZDE2ZmQu
LmEyZmNjNWNkYmQ5NzhkMmEzNGRlOTkxMjlhZmJjY2Y4MWMwNDA3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQmFzZUludGVybmFsLmgKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvV2ViS2l0QXZhaWxhYmlsaXR5Lmg+CiAKIG5hbWVzcGFjZSBK
U0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNMb2NrSG9sZGVyOwotY2xhc3MgRXhlY1N0
YXRlOwogY2xhc3MgU291cmNlQ29kZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0K
IAogZXh0ZXJuICJDIiBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChjb25zdCBK
U0M6OkpTTG9ja0hvbGRlciYsIEpTQzo6RXhlY1N0YXRlKiwgSlNDb250ZXh0UmVmLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApp
bmRleCBiODNiMTMzMTQxYjEwMTU1NmI4NDhjZTNmZmRmZWQ1ZTdiOGI4YzMwLi4zNzIzZTQwZmVj
YjUxNzZkOTQ3YzFlOWUyNDczM2I1MDM1NmVmMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMjE4LDggKzIxOCw4IEBAIGNsYXNzIEpTQ2Fs
bGJhY2tPYmplY3QgZmluYWwgOiBwdWJsaWMgUGFyZW50IHsKICAgICBzdGF0aWMgSlNDYWxsYmFj
a09iamVjdCogYXNDYWxsYmFja09iamVjdChKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDYWxsYmFj
a09iamVjdCogYXNDYWxsYmFja09iamVjdChFbmNvZGVkSlNWYWx1ZSk7CiAgCi0gICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKLSAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoRXhlY1N0YXRlKik7Cisg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgCiAgICAgSlNWYWx1
ZSBnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYzcyMzYzMzk1YjA0NzViOGVjMTYy
YjA1MDhkMjNiZGEyNzgxN2QxMS4uYzU1N2Y5OGZmN2E1NThlZmVhYTg5MGI3MTdkNDNlNzcwYWI2
ZmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQ0MSwzMCArNDQxLDMwIEBAIENvbnN0cnVjdFR5cGUgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29u
c3RydWN0CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0
b3IgPSBleGVjLT5qc0NhbGxlZSgpOwotICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYo
ZXhlYyk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgp
OworICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoY2FsbEZyYW1lKTsKICAgICBKU09i
amVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKICAgICAKICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4q
Pihjb25zdHJ1Y3RvciktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxi
YWNrIGNhbGxBc0NvbnN0cnVjdG9yID0ganNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKLSAg
ICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwor
ICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsKICAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAg
ICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkK
LSAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh0b1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAg
ICAgIEpTT2JqZWN0KiByZXN1bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgICAgIEpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUpOwogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgY29uc3RydWN0b3JS
ZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgdG9KUyhjYWxsRnJhbWUs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTE0LDMwICs1MTQsMzAgQEAgQ2FsbFR5cGUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1Jl
ZihleGVjKTsKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmpzQ2Fs
bGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmpl
Y3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKKyAg
ICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGNhbGxGcmFtZSk7CisgICAgSlNPYmplY3RS
ZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEpTT2Jq
ZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIE5vdFN0cmljdE1vZGUpKSk7CiAgICAgCiAgICAg
Zm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25D
YWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7Ci0gICAg
ICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCk7CiAgICAgICAgICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAg
ICAgICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0g
ICAgICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNo
ZWNrZWRBcHBlbmQodG9SZWYoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdDsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gdG9KUyhleGVjLCBjYWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09i
alJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhjYWxsRnJhbWUp
OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEZyYW1lLCBjYWxsQXNGdW5jdGlv
bihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1l
bnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCB0b0pTKGNhbGxGcmFtZSwgZXhjZXB0aW9uKSk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXgg
OGRlZmMyNjcwYzE4MmE5NTViZmI2NTE3YWNlNDY2MDRjNWRmNzE1ZS4uZDBhMDc0YWJlNTljMzBh
MjcwYmExNThjY2FiM2NkOWU5N2U3NTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMzcsOCArMzcsOSBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU0Z1bmN0aW9uOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogCiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBlbnVtIEtpbmQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCAzMWE2ZTBkZmRiZDZmZTQ4
MjU0YTlkMTY5OWVjMjcxZGZiZGI0MGU4Li4xZTVlYWE5MmMwYTBmMDZjYmQyZTI4YzljNDA1NWVm
M2Q0YjA0MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApA
QCAtMzQsMTQgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgVk07CiAK
LXR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cml0aE1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKaW5k
ZXggMGE2NDQ0ODZlMzRmNzI5Y2EzZTRjZGY5MDU3N2M1OTg0MzhlODY0OS4uM2ViYWNhYjc4YTJi
YWE0Nzk1ODhmOGViYTBlNTc1NmY4YTZlYWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyaXRoTW9kZS5oCkBAIC0yOSw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB1c2luZyBFbmNvZGVkSlNWYWx1ZSA9IGludDY0X3Q7CiAKIG5hbWVzcGFjZSBERkcg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA3M2M4MTJjMWQ1NTE2ZTBlZDUyYjZkZGU3YzQ3MjM1OTFmNzY1MTViLi4yMzMzYzI4NGM4
OTMyNjkzMmJiYzU2YWU1MWVjOTE0MDVlNzY0MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzY5Nyw3ICszNjk3LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAogICAgIGlmIChm
dW5jdGlvbi0+Y2xhc3NJbmZvKCkgIT0gY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKHR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxP
YmplY3QoKm1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIC8vIFdlIG9ubHkgaGF2ZSBhbiBpbnRyaW5zaWMgZm9yIHRoZSBjYXNlIHdoZXJl
IHlvdSBzYXk6CkBAIC0zNzM0LDcgKzM3MzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWZ1bmN0aW9u
LT5nbG9iYWxPYmplY3QoKm1fdm0pLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGUpKQorICAgIGlmICghZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0
dXJlQ29uY3VycmVudGx5KHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnNl
cnRDaGVja3MoKTsKQEAgLTM3NjUsNyArMzc2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICB9CiAKICAgICBpZiAoZnVuY3Rpb24t
PmNsYXNzSW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewotICAgICAgICBpZiAo
ZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKQorICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVj
dCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENoZWNrcygp
OwpAQCAtMzgwNiw3ICszODA2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3Rh
bnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgo
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwg
cmVnaXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KQotICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3U3RyaW5n
T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFs
T2JqZWN0KCptX3ZtKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpKSwgcmVzdWx0Tm9kZSk7Cisg
ICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5m
byhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+c3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkpKSwgcmVzdWx0Tm9kZSk7CiAgICAgICAgIAogICAgICAgICBz
ZXQocmVzdWx0LCByZXN1bHROb2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zODMyLDkg
KzM4MzIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVu
Y3Rpb24oCiAKICAgICAgICAgTm9kZSogcmVzdWx0Tm9kZTsKICAgICAgICAgaWYgKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDw9IDEpCi0gICAgICAgICAgICByZXN1bHROb2RlID0gYWRkVG9H
cmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9u
LT5nbG9iYWxPYmplY3QoKm1fdm0pLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3Rv
cigpKSkpOworICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBP
cEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkt
Pm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RDb25zdHJ1Y3Rv
ciwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pKSks
IE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoQ2Fs
bE9iamVjdENvbnN0cnVjdG9yLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2Jh
bE9iamVjdCgpKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICBzZXQocmVzdWx0LCByZXN1bHRO
b2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCmluZGV4IDI2YmQ3Mjg2ZGZmZmU2MmFmNjQ0MmZiNzgzMjFiNzU0NTJlZTU0ZTAu
LjE1YWY0MWJlMDRlMmJjODNmOWNiNzhiZmY3ZTMwZWMxMGUxMGFmOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTUyLDcgKzUyLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2Rl
QmxvY2s7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmgKaW5kZXggNTBjYjA2MDVjMTA2N2RlN2JkYTJmZTE4YzlmY2RjNTkz
NTFlYWU3Mi4uMTdmOGFlZTFlMmQ4ODg2OTI5NjFlZjlhZWFkZDM0NTdjZDMyMTc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaApAQCAtMzMsOCArMzMsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgQ29kZUJsb2NrOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBuYW1lc3BhY2Ug
REZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCA1ZjA1ZWUxNWYyNGRjNjU5NTcxMDY5NDdmNWQ3ZTZiMTA2YjM2MzEyLi45ZDAz
OGI1ZjMyYzU2NjkwNDI3MTcyMjMyNWE2MmZjZTc0OTlmNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzIzNSw2ICs3MjM1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZyBy
ZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3QKICAgICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3Bl
Q2hhaW4oKSkpOwogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGV4ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSk7CiAgICAgbV9qaXQuc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5zdG9yZVB0cihU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBzdHJ1Y3R1cmUtPmdsb2Jh
bE9iamVjdCgpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDdiMGM4OWE5NGNhMzI4ZWU5NmVlZTBmNGI5NmZlMjI3Y2Q3ZDFk
YzguLjEwMzY5ZTRlNDk0NTI2MGRhN2NjNGMxM2EzZjcxODZhNmU0MjM1NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04MSw2ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBt
YWNybyhKU0NlbGxfdXNlZnVsQnl0ZXMsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNl
dCgpKSBcCiAgICAgbWFjcm8oSlNEZXN0cnVjdGlibGVPYmplY3RfY2xhc3NJbmZvLCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9u
X2V4ZWN1dGFibGUsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFj
cm8oSlNGdW5jdGlvbl9nbG9iYWxPYmplY3QsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4oKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fcmFyZURhdGEsIEpTRnVuY3Rp
b246Om9mZnNldE9mUmFyZURhdGEoKSkgXAogICAgIG1hY3JvKEpTR2xvYmFsT2JqZWN0X3JlZ0V4
cEdsb2JhbERhdGFfY2FjaGVkUmVzdWx0X2xhc3RSZWdFeHAsIEpTR2xvYmFsT2JqZWN0OjpyZWdF
eHBHbG9iYWxEYXRhT2Zmc2V0KCkgKyBSZWdFeHBHbG9iYWxEYXRhOjpvZmZzZXRPZkNhY2hlZFJl
c3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRhNWM1
NDVlNjBjMzkzMDdmZTQyZjM1NWM0YjcyMTQzZTQzZjVmZDUuLmU0MWJmYzI3ZWQwMTJjNmZmYjkx
NDNhMzY1OGM3ZjI3ZmFlMDg1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTU2MDUsNiArNTYwNSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpT
RnVuY3Rpb25fc2NvcGUpOwogICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpOwogICAg
ICAgICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJaZXJvLCBmYXN0T2JqZWN0LCBtX2hlYXBz
LkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRl
cihzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Z1bmN0
aW9uX2dsb2JhbE9iamVjdCk7CiAgICAgICAgIG11dGF0b3JGZW5jZSgpOwogCiAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmgKaW5kZXggNDM5YzRjMjBhZTdhNjRhYjkz
MTEzMDU1NTdjOWQ4ODBkZjVkZDJlOS4uNWYwOWNiNzcyNDIzOWEzZWI5ZWQyMjZlMzE4ZDVlNjlk
OTgxNGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRy
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuaApAQCAtMjks
OCArMjksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Q29kZUJsb2NrOwotY2xhc3MgRXhlY1N0YXRlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1l
OwogCiBuYW1lc3BhY2UgRlRMIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oCmluZGV4IDYyMzc4ZWY0MzRmZGZkM2E0ODc1M2YyODRiODRi
ODNiZTU0MmYxZDEuLmRhYzNkZDVkYmQ5ZWJlNzg5MTRiNTExYjcxOTJlYjk0NzM1ZjI1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
QEAgLTM4LDcgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwCmluZGV4IDU2OGJjYWJjNmIyOWI3ZTg0NjQ5ZTgxNmNlOTRhNzFjMDNhZDM5NjQuLjc4MWU2
NjI3YTdiOWNiODViM2QyYzhjODdmOTQ2MTA4Y2YyNTViZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEw
OCwxNSArMTA4LDE2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiAgICAgYXV0byogc2NyaXB0
U3RhdGUgPSBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7CiAgICAgSlNDOjpW
TSYgdm0gPSBzY3JpcHRTdGF0ZS0+dm0oKTsKIAotICAgIEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlv
bioganNGdW5jdGlvbjsKLQorICAgIEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbioganNGdW5jdGlv
biA9IG51bGxwdHI7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVs
bHB0cjsKICAgICB7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAg
ICAgICAganNGdW5jdGlvbiA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBz
Y3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyYsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkV4ZWNTdGF0ZSogZXhlYykgewotICAgICAg
ICAgICAgaWYgKCFleGVjKQorICAgICAgICBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOworICAgICAgICBqc0Z1bmN0aW9uID0gSlNDOjpKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAg
ICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KEpTT046OlZhbHVlOjpjcmVhdGUoIkV4Y2Vw
dGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIpLCBjYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChhdXRvIHJlc3VsdEpTT05WYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUoKmV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNPTlZhbHVl
ID0gdG9JbnNwZWN0b3JWYWx1ZSgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkK
ICAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2FsbFJlc3VsdChyZXN1bHRKU09OVmFsdWUsIGNh
bGxiYWNrKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2Fs
bFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKG1ha2VTdHJpbmcoIk9iamVjdCBoYXMgdG9vIGxv
bmcgcmVmZXJlbmNlIGNoYWluIChtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAiLCBKU09OOjpWYWx1
ZTo6bWF4RGVwdGgsICcpJykpLCBjYWxsYmFjayk7CkBAIC0xMzMsNyArMTM0LDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdEJhc2U6Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsJiBmdW5jdGlvbiwKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAvLyBTaW5jZSBg
Y2FsbGJhY2tgIGlzIG1vdmVkIGFib3ZlLCB3ZSBjYW4ndCBjYWxsIGl0IGlmIHRoZXJlJ3MgYW4g
ZXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0bwogICAgICAgICAvLyBleGVjdXRlIHRoZSBgSlNOYXRp
dmVTdGRGdW5jdGlvbmAgaW5zaWRlIEluamVjdGVkU2NyaXB0U291cmNlLmpzLgotICAgICAgICBq
c0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShudWxscHRyKTsK
KyAgICAgICAganNGdW5jdGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCko
Z2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDdl
MjAzOTljOGE3M2YxYmE4ZjlkMTQwYTRlODYwNDQ4NDBmNmNjOTUuLmRkM2YzZDY4MmRmNTJlZGUx
MTM4YWIxNTBjOGVlMzQ3MTFiNjcxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtMzksNyArMzksOCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCBmMGZmYzQ1ZGQ5ZmE2Y2RmNjE3ZjAzODFlNDZmOGRjZWJmZWYz
YzhjLi4yMzc4N2VhN2M5MWIxMzkzYjdhNDhhZDE1MDE0MDI1NzNhOTBhMjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTM4LDEwICszOCwxMSBAQAogI2VuZGlm
CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29uc29sZUNsaWVu
dDsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKaW5kZXggMGUxY2Y4YTk5OGI2
NzY0OTg4MDNhY2ZjNDhhNWE3MDUyNWVjN2RlYS4uN2NmY2Y4ODRlMmMxOTkxMDFiZDljZGNkMGIw
MTY5MmE2NGY3Nzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAKQEAgLTM4
LDI0ICszOCwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb25EZXRhaWxzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVy
bmFsUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0
cnVjdG9yTmFtZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0
aW9uKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJvbWlzZVJlamVjdGVkV2l0aE5h
dGl2ZUdldHRlclR5cGVFcnJvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Qcm94eVRh
cmdldFZhbHVlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbldlYWtTZXRTaXplKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldl
YWtTZXRFbnRyaWVzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmll
cyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUluc3RhbmNlcyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
QXR0cmlidXRlRXZhbHVhdGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVz
dWx0QWxpYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uU3VidHlwZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJv
cGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklu
dGVybmFsQ29uc3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5
cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblBy
b3h5VGFyZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVu
Y3Rpb25XZWFrTWFwU2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbldlYWtNYXBFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlIb2xkZXJzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFs
dWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVTYXZl
ZFJlc3VsdEFsaWFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNz
SW5mbyBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6c19pbmZvID0geyAiSW5qZWN0ZWRT
Y3JpcHRIb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSkgfTsKIApAQCAtODQsMjI1ICs4
NCwyMjUgQEAgdm9pZCBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9X
SVRIT1VUX1RSQU5TSVRJT04oInNhdmVkUmVzdWx0QWxpYXMiLCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVF
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZShleGVjKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZShjYWxsRnJh
bWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0
ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zYXZlZFJlc3VsdEFsaWFzKGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNhdmVkUmVzdWx0QWxpYXMoY2FsbEZyYW1l
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUo
ZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxD
b25zdHJ1Y3Rvck5hbWUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFsbENvbGxl
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsK
ICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRNTEFs
bENvbGxlY3Rpb24oZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+aXNIVE1MQWxsQ29sbGVjdGlvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9t
aXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJU
eXBlRXJyb3IoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnByb3h5VGFyZ2V0VmFsdWUoZXhl
YykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cHJveHlUYXJnZXRW
YWx1ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0
ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwU2l6ZShleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwU2l6ZShjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01h
cEVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT53ZWFrTWFwRW50cmllcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT53ZWFrTWFwRW50cmllcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a1NldFNpemUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0U2l6ZShl
eGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0U2l6
ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50cmllcyhleGVjKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50cmllcyhjYWxsRnJhbWUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkl0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVj
dGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlw
dEhvc3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPml0ZXJhdG9yRW50cmllcyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJpZXMoY2FsbEZyYW1lKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvblF1ZXJ5SW5zdGFuY2VzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1ZXJ5
SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+cXVlcnlJbnN0YW5jZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+cXVlcnlJbnN0YW5jZXMoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1
ZXJ5SG9sZGVycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5xdWVyeUhvbGRl
cnMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+cXVlcnlI
b2xkZXJzKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNhbGxGcmFtZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1
ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdWJ0
eXBlKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1YnR5
cGUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SW5qZWN0ZWRTY3JpcHRIb3N0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGNhbGxG
cmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFs
UHJvcGVydGllcyhjYWxsRnJhbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAKaW5kZXggYjg5OTFjZDJjN2NiNTE1Yzcx
MzEwN2I4OTJkN2VhNmRiOGNiNWMwNC4uZjg4N2VjNzgzZTA1MWFlZTc5YTkyZDBkOTIwYmQ0ODU3
MjkzMTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcApAQCAtMzcsMTkg
KzM3LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
Ly8gRnVuY3Rpb25zLgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uU2NvcGVEZXNjcmlwdGlvbnMoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMuCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVDYWxsZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWlu
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZVR5cGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRl
Q2FsbGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNK
YXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0
dHJpYnV0ZVRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZVR5cGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZTo6c19pbmZvID0geyAiSmF2YVNjcmlwdENhbGxGcmFtZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlKSB9OwogCkBAIC03MiwxNDcgKzcyLDE0NyBAQCB2b2lkIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYgogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElP
TigiaXNUYWlsRGVsZXRlZCIsIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
IWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9u
U2NvcGVEZXNjcmlwdGlvbnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3Jp
cHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5zY29wZURlc2NyaXB0aW9ucyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5zY29wZURlc2NyaXB0aW9ucyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDYWxs
ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFT
Y3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jYWxsZXIoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291
cmNlSUQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0ph
dmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoY2FsbEZyYW1lKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlTGluZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmxpbmUoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bGluZShjYWxsRnJhbWUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVD
b2x1bW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0ph
dmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0phdmFTY3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVtbihleGVjKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jb2x1bW4oY2FsbEZyYW1lKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRl
RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbk5hbWUo
ZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25O
YW1lKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4oRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVT
Y29wZUNoYWluKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxG
cmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5zY29wZUNoYWluKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPnNjb3BlQ2hhaW4oY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhpc09iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENh
bGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dGhpc09iamVjdChjYWxsRnJhbWUpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1
dGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNK
YXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SmF2YVNjcmlwdENhbGxGcmFtZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhp
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBlKGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1RhaWxEZWxldGVkKGV4ZWMpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoY2FsbEZyYW1lKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKaW5kZXggNjA3ZmVhZmIyMDY2M2I2Y2M2ODRh
NWIwODMyYzRkZDBiNDkxODk3NS4uNjAyYzhiYTRjNDg5N2I5ZTZjMjgwZGZiYjkxZTcyMzkzMDRl
NmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRB
cmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oCkBAIC0zNyw4ICszNyw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKaW5kZXggNTVjYTRkNTc4ZjAzN2I0NDcw
MDgxNzdmZGM5NWJlNzhkMTljMmMzNy4uMjNiYjIxNWRiMmNkMTQ5MWVmYjEyYjI2ZWRmMWRmNWE1
ZDhlZGQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKQEAgLTM1LDkgKzM1LDEwIEBACiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFz
cyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCAxZWViNGY4YThjNjUzMjc1MGQ4ZTJmOTMzYWE2MDQ2MDUyMGFlMTQxLi43ZWEyZjljMmY1MzQ0
YTVkNzgwZTNhNTA3ODA1ZDk3YmU2ZGE0YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0zOCw5ICszOCwxMCBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xh
c3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBjODU3Y2RkZmViZDc3MTMz
ZDkzMjFkMGJjZmFjOTdmMGExMjIzOGU3Li5iYmYxOGI1NTVmZjgzZjJkZGQ0MjNmMGJhNTVmNmZm
Y2FhYmMxOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtMzYsNyArMzYsOCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKaW5kZXggNDgzMmQ2ZGU4MjUzODU2Y2RiMGU1
MTI1NDM5YTlmOTc5NDZkOGY2OC4uNDM1NWIyMzU0Y2M0OTYwOTljOGRiNTJhMzJjNjc4NTg1Nzll
YTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3Ry
YWN0UEMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQ
Qy5oCkBAIC0yOSw4ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBWTTsKLWNsYXNzIEV4ZWNTdGF0ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogY2xhc3MgQWJzdHJhY3RQQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggZGQyMDBlMWEz
NTEwNzMxMmQxZDA1ZTI1MjIyNDMzNzVhNDk0NTI4MS4uZDAwYzNjOWI4Mjc3YzZiNzg0NWJkNTNm
YzI0ZmUwN2MxNzIwYzQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyAgewogCiAgICAg
Y2xhc3MgQXJndW1lbnRzOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJh
bWU7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xh
c3MgSlNTY29wZTsKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgc3Ry
dWN0IEluc3RydWN0aW9uOwogCi0gICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOworICAg
IHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogICAgIGNsYXNzIENhbGxTaXRlSW5kZXgg
ewogICAgIHB1YmxpYzoKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAg
Ly8gUmVwcmVzZW50cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBzY3JpcHQgZXhlY3V0aW9uLgogICAg
IC8vIFBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gbW9zdCBmdW5jdGlvbnMuCi0gICAg
Y2xhc3MgRXhlY1N0YXRlIDogcHJpdmF0ZSBSZWdpc3RlciB7CisgICAgY2xhc3MgQ2FsbEZyYW1l
IDogcHJpdmF0ZSBSZWdpc3RlciB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGhlYWRlclNpemVJblJlZ2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQg
KyAxOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICB2b2lk
IHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJhbWVBbmRQQygpLmNh
bGxlckZyYW1lID0gZnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVSZWdp
c3Rlck9mZnNldCwgSlNTY29wZSogc2NvcGUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlz
KVtzY29wZVJlZ2lzdGVyT2Zmc2V0XSA9IHNjb3BlOyB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
aW5pdEdsb2JhbEV4ZWMoRXhlY1N0YXRlKiBnbG9iYWxFeGVjLCBKU0NhbGxlZSogZ2xvYmFsQ2Fs
bGVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgaW5pdEdsb2JhbEV4ZWMoQ2FsbEZyYW1lKiBnbG9i
YWxFeGVjLCBKU0NhbGxlZSogZ2xvYmFsQ2FsbGVlKTsKIAogICAgICAgICAvLyBSZWFkIGEgcmVn
aXN0ZXIgZnJvbSB0aGUgY29kZWZyYW1lIChvciBjb25zdGFudCBmcm9tIHRoZSBDb2RlQmxvY2sp
LgogICAgICAgICBSZWdpc3RlciYgcihpbnQpOwpAQCAtMzAzLDggKzMwMyw4IEBAIG5hbWVzcGFj
ZSBKU0MgIHsKIAogICAgIHByaXZhdGU6CiAKLSAgICAgICAgRXhlY1N0YXRlKCk7Ci0gICAgICAg
IH5FeGVjU3RhdGUoKTsKKyAgICAgICAgQ2FsbEZyYW1lKCk7CisgICAgICAgIH5DYWxsRnJhbWUo
KTsKIAogICAgICAgICBSZWdpc3RlciogdG9wT2ZGcmFtZUludGVybmFsKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDVk
ZjA0OGM5OTc3ODNhYTRkNzE5YjJkNzM0MmNjNzJlNWZkZjdhNTMuLmI2MDFkY2Y3MDNjZDllYTRh
M2I1M2U4OGJlZDhiM2M1MmQ0NWEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09
IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJv
dG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKKyAgICBwcm90
b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBKU0NhbGxlZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwgdGhpc09iaiwgMSk7CiAKICAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwpAQCAtODk0LDcgKzg5NCw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U09iamVjdCogZnVuY3Rpb24sIENhbGxUCiAgICAgfQogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJv
dG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0
aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUs
IGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgewpA
QCAtOTY1LDcgKzk2NSw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVj
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAgICAgfQogCiAgICAg
UHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChu
ZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRh
KCkpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwogCiAgICAg
SlNWYWx1ZSByZXN1bHQ7CiAgICAgewpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgQ2FsbEZyYW1lQ2xv
c3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkUKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKIAotICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rp
b24sIGpzVW5kZWZpbmVkKCksIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHByb3RvQ2Fs
bEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBmdW5j
dGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CiAgICAgLy8gUmV0
dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQg
PSB7IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyB9OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTQ5LDggKzExNDks
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
Y29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwg
c2NvcGUpLCB0aGlzVmFsdWUsIDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIEpTQ2FsbGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUp
LCB0aGlzVmFsdWUsIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKQEAgLTExOTksOCArMTIwMCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDCiAgICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVk
YC4KICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKICAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
LWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgUHJvdG9DYWxsRnJh
bWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpT
Q2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLCBzY29wZSksIGpzVW5k
ZWZpbmVkKCksIDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIEpTQ2FsbGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUpLCBqc1VuZGVm
aW5lZCgpLCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5oCmluZGV4IDUzZTk4YzYwZjNjNmRhN2U1OTc3NTRkMTBjNGUzYWZjNDY0MzQ3
MmEuLjdkYmM1MWMxNjlkY2QwYzIxNjkxMDJlNzcxNjlhNDM4NzY5N2RhNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC00
NSwxNCArNDUsMjIgQEAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIFByb3RvQ2FsbEZyYW1lIHsK
ICAgICB1aW50MzJfdCBwYWRkZWRBcmdDb3VudDsKICAgICBib29sIGhhc0FyaXR5TWlzbWF0Y2g7
CiAgICAgSlNWYWx1ZSAqYXJnczsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Owog
Ci0gICAgdm9pZCBpbml0KENvZGVCbG9jayosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBKU1Zh
bHVlKiBvdGhlckFyZ3MgPSAwKTsKKyAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gMCk7
CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGNvZGVCbG9ja1Zh
bHVlLlJlZ2lzdGVyOjpjb2RlQmxvY2soKTsgfQogICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKSB7IGNvZGVCbG9ja1ZhbHVlID0gY29kZUJsb2NrOyB9CiAKICAgICBK
U09iamVjdCogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gY2FsbGVlVmFsdWUuUmVnaXN0ZXI6Om9i
amVjdCgpOyB9Ci0gICAgdm9pZCBzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkgeyBjYWxsZWVW
YWx1ZSA9IGNhbGxlZTsgfQorICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpCisg
ICAgeworICAgICAgICBjYWxsZWVWYWx1ZSA9IGNhbGxlZTsKKyAgICB9CisgICAgdm9pZCBzZXRH
bG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAgIGdsb2Jh
bE9iamVjdCA9IG9iamVjdDsKKyAgICB9CiAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSBjb25zdCB7IHJldHVybiBhcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZS5wYXlsb2Fk
KCk7IH0KICAgICBpbnQgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCkgLSAxOyB9CkBAIC03OCwxMSArODYsMTIgQEAgc3RydWN0IEpTX0VY
UE9SVF9QUklWQVRFIFByb3RvQ2FsbEZyYW1lIHsKICAgICB9CiB9OwogCi1pbmxpbmUgdm9pZCBQ
cm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGNhbGxl
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGluZ1RoaXMsIEpTVmFsdWUq
IG90aGVyQXJncykKK2lubGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSog
b3RoZXJBcmdzKQogewogICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CiAgICAgdGhpcy0+c2V0
Q29kZUJsb2NrKGNvZGVCbG9jayk7CiAgICAgdGhpcy0+c2V0Q2FsbGVlKGNhbGxlZSk7CisgICAg
dGhpcy0+c2V0R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgdGhpcy0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBpZiAoY29k
ZUJsb2NrICYmIGFyZ0NvdW50SW5jbHVkaW5nVGhpcyA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKQogICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21hdGNoID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKaW5kZXggNjAzODliNGJhN2U1NjBj
ZTc3ZjgyYWFkYjhjMzMwM2U0OTY2Y2MyNi4uOWRkM2FjZTU4ZDAyZWJiYWNhMDQ4YWRkNDRmMjFk
OGMyYjNmNzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyLmgKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IENhbGxGcmFtZTsKICAgICBjbGFzcyBDb2RlQmxvY2s7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwog
ICAgIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAg
IGNsYXNzIEpTU2NvcGU7CiAKLSAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CisgICAg
dXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAgICAgY2xhc3MgUmVnaXN0ZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oCmluZGV4IDg0YjUyZTgwMmUxYWJmYTcwNmEy
ZTg3ZmExNjM0MTZkZjBiMGY4MGQuLjIwODgwYTYzYzk3NDVjOWVlYmVkYmE0MmI4OTNiMDdjZWRi
ZDBkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFk
b3dDaGlja2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uaApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNB
cnJheTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNTY29wZTsKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgU2xvdFZpc2l0b3I7CiBjbGFzcyBW
TTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogCiAvLyBTaGFkb3dDaGlja2VuIGlzIGEgbG9nIHRoYXQgY2FuIGJlIHVzZWQgdG8g
cHJvZHVjZSBhIHNoYWRvdyBzdGFjayBvZiBDSElDS0VOLXN0eWxlIHN0YWNrIGZyYW1lcy4KIC8v
IFRoaXMgZW5hYmxlcyB0aGUgZGVidWdnZXIgdG8gYWxtb3N0IGFsd2F5cyBzZWUgdGhlIHRhaWwt
ZGVsZXRlZCBzdGFjayBmcmFtZXMsIHNvIGxvbmcgYXMgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IDY4NjgzMmYzYjI5
NjM2NTYwYTk3N2NjZjA4NTE3YTYzNWEyZDIzYTQuLmEzNDFiN2E5ZDVjYzc5MTU3NGRjZWE2MGVh
ODVlMzYzZjU5Y2FlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTM2LDE2ICszNiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
cnVjdCBFbnRyeUZyYW1lOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIAorY2xhc3MgQ2FsbEZy
YW1lOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZU9yaWdpbjsKLWNsYXNzIEV4ZWNTdGF0
ZTsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTRnVuY3Rpb247CiBjbGFzcyBDbG9uZWRBcmd1bWVu
dHM7CiBjbGFzcyBSZWdpc3RlcjsKIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogCi10eXBl
ZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAK
IGNsYXNzIFN0YWNrVmlzaXRvciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAppbmRleCA2NzIxODhlODkwYjA5NDI5MTQ1
ZDg0ZTE0MTViZGIzMDUxYTEzOTFlLi5iZTdiZjg4OTg3OWQ5NTVkOGY0NDg2ZDgzNDExMDE5NjZj
YWNhYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1F
bnRyeVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVu
dHJ5UmVjb3JkLmgKQEAgLTMwLDcgKzMwLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3Qg
RW50cnlGcmFtZTsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK2NsYXNzIEpT
R2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBWTTsKIApAQCAtNDAsNyArNDEs
NyBAQCBzdHJ1Y3QgVk1FbnRyeVJlY29yZCB7CiAgICAgICogYWZ0ZXIgY2FsbGVlIHNhdmUgcmVn
aXN0ZXJzIHdoZXJlIGxvY2FsIHZhcmlhYmxlcyB3b3VsZCBnby4KICAgICAgKi8KICAgICBWTSog
bV92bTsKLSAgICBFeGVjU3RhdGUqIG1fcHJldlRvcENhbGxGcmFtZTsKKyAgICBDYWxsRnJhbWUq
IG1fcHJldlRvcENhbGxGcmFtZTsKICAgICBFbnRyeUZyYW1lKiBtX3ByZXZUb3BFbnRyeUZyYW1l
OwogICAgIEpTT2JqZWN0KiBtX2NhbGxlZTsKIApAQCAtNTIsOCArNTMsOCBAQCBzdHJ1Y3QgVk1F
bnRyeVJlY29yZCB7CiAgICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclsx
XTsKICNlbmRpZgogCi0gICAgRXhlY1N0YXRlKiBwcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4g
bV9wcmV2VG9wQ2FsbEZyYW1lOyB9Ci0gICAgU1VQUFJFU1NfQVNBTiBFeGVjU3RhdGUqIHVuc2Fm
ZVByZXZUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0KKyAgICBD
YWxsRnJhbWUqIHByZXZUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7
IH0KKyAgICBTVVBQUkVTU19BU0FOIENhbGxGcmFtZSogdW5zYWZlUHJldlRvcENhbGxGcmFtZSgp
IHsgcmV0dXJuIG1fcHJldlRvcENhbGxGcmFtZTsgfQogCiAgICAgRW50cnlGcmFtZSogcHJldlRv
cEVudHJ5RnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BFbnRyeUZyYW1lOyB9CiAgICAgU1VQUFJF
U1NfQVNBTiBFbnRyeUZyYW1lKiB1bnNhZmVQcmV2VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1f
cHJldlRvcEVudHJ5RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCmluZGV4IGJlOWMxMzA4NWQyOTc1MjI5ZmE1ZDhmN2RlZTY5MjFlYzYxNzRlNGEuLmMwZDQy
YmM3OTZkYTZkNzQ4YTRjMTQ5YmRjODBjOWFkOTVmY2Y3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAogI2VuZGlmCiAKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFN0cnVjdHVyZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgUmVnaXN0ZXJlZFN0cnVjdHVyZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5oCmluZGV4IGU1ZDI5
ZjliNDNlZjk1OWQ3MjY3NDUzMGViNmVhYzljMzBjN2ViNDEuLmQwOTE3MjM4ZGVkYmEwMmZjZDY3
MjYyZjEyNTk4NTQ0YjYzMmU0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5oCkBAIC0yNyw4ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogdm9pZCBnZW5lcmljVW53aW5kKFZNJiwgRXhlY1N0YXRlKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDY1NmU3ZGQ4
NmFiMjNjOTY4ZmU5Yjc4MWVkYWFjNGE1YTVmYmJkMmEuLjYzOTQ2M2M5OWU5ZmRiYjQ3ODkwZWY2
NDkwYzhiMmIxYjVlZWY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7CiAgICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAgICAgICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgICAgIHZtLmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSkt
Pmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KAogICAgICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHN0YXRpYyBTbG93UGF0aFJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNh
bGxlZSwKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7CiAg
ICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAg
ICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAgICAgIHZt
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0
KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGV4ZWNDYWxsZWUpKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJl
c3VsdCgKICAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggZDI1MzIzMTRhZjczZDkyNTgwODQxMjBmNmE1ZTQ5NDE3ZmVjZWU2Yi4uOWRiNjczNDE5
MjNkZGUxMTUyMjRlMjBmZDVjODA1YTdjZDc4YjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM5LDkgKzM5LDkgQEAgdHlwZWRlZiBpbnQ2NF90IEVu
Y29kZWRKU1ZhbHVlOwogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5
UHJvZmlsZTsKIGNsYXNzIEJ1dHRlcmZseTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENhbGxM
aW5rSW5mbzsKIGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQXJy
YXk7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0Z1bmN0aW9uOwpAQCAtNjYsNyArNjYsNyBAQCBz
dHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IEFyaXRo
UHJvZmlsZTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogCiBleHRlcm4gIkMiIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDA4Y2QxZDBlY2Y4MDQ4NmEwMDc0NmYzYWE2
YTg1NTdmNWQ2NDMxZDIuLjZiMmZiNDMwZDYwNzUwNWM5OGQxOGRlNDM2MGY4NmIzMjRmN2EyZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAg
LTI3MSwzMiArMjcxLDM5IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAjaWYgQ1BVKFg4Nl82
NCkKICNpZiAhT1MoV0lORE9XUykKICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihl
ZGksIGVzaSwgZWR4LCBlY3gsIC4uLik7Ci0gICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6
IGYoRXhlY1N0YXRlKik7Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBYODZSZWdpc3RlcnM6OmVkaSk7CisgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1
cmU6IGYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVy
ZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZXNpKTsKIAotICAgIGpp
dC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4
NlJlZ2lzdGVyczo6ZXNpKTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6OmVkaSk7CiAgICAgaWYgKHRodW5r
RnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7Ci0gICAgICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNpLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOworICAg
ICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVk
aSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsK
KyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJz
OjplZGksIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBYODZSZWdpc3RlcnM6
OmVkaSk7CiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJl
Z2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgWDg2UmVnaXN0ZXJzOjpy
OSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKFg4NlJlZ2lzdGVyczo6ZXNpLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1
bmN0aW9uRm9yKGtpbmQpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplZGks
IEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBYODZS
ZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3MoWDg2UmVnaXN0ZXJzOjplZGksIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBYODZSZWdpc3RlcnM6OmVkaSk7CisgICAgfQogICAgIGppdC5jYWxsKFg4NlJlZ2lz
dGVyczo6cjksIEpTRW50cnlQdHJUYWcpOwogCiAjZWxzZQogICAgIC8vIENhbGxpbmcgY29udmVu
dGlvbjogICAgICBmKGVjeCwgZWR4LCByOCwgcjksIC4uLik7Ci0gICAgLy8gSG9zdCBmdW5jdGlv
biBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgLy8gSG9zdCBmdW5j
dGlvbiBzaWduYXR1cmU6IGYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWR4
KTsKIAogICAgIC8vIExlYXZlIHNwYWNlIGZvciB0aGUgY2FsbGVlIHBhcmFtZXRlciBob21lIGFk
ZHJlc3Nlcy4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzdGFjayBpcyBhbGlnbmVkIHRvIDE2
IGJ5dGVzLCBidXQgaWYgdGhpcyBjaGFuZ2VzIGF0IHNvbWUgcG9pbnQsIHdlIG5lZWQgdG8gZW1p
dCBjb2RlIHRvIGFsaWduIGl0LgogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0
ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxs
RnJhbWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWR4KTsKKyAgICBqaXQuZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6
OmVjeCk7CiAgICAgaWYgKHRodW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpK
U0Z1bmN0aW9uKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KFg4NlJlZ2lzdGVyczo6ZWR4LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4
NlJlZ2lzdGVyczo6cjkpOwotICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEpTRW50cnlQ
dHJUYWcpOwotICAgIH0gZWxzZQotICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhYODZSZWdpc3RlcnM6OmVkeCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVG
dW5jdGlvbkZvcihraW5kKSksIEpTRW50cnlQdHJUYWcpOworICAgICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEpTRnVuY3Rpb246
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJz
OjplY3gsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkp
LCBYODZSZWdpc3RlcnM6OnI5KTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplY3gsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgfQorICAgIGppdC5jYWxsKFg4
NlJlZ2lzdGVyczo6cjksIEpTRW50cnlQdHJUYWcpOwogCiAgICAgaml0LmFkZFB0cihKU0ludGVy
ZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJ
VDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCkBAIC0zMDYsMTUgKzMxMywxOCBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5l
cmF0b3IoVk0mIHZtLCBUaHVua0Z1bgogICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJz
Ojp4MSAhPSBKU0ludGVyZmFjZUpJVDo6cmVnVDMsIFQzX25vdF90cmFtcGxlZF9ieV9hcmdfMSk7
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OngyICE9IEpTSW50ZXJmYWNlSklU
OjpyZWdUMywgVDNfbm90X3RyYW1wbGVkX2J5X2FyZ18yKTsKIAotICAgIC8vIEhvc3QgZnVuY3Rp
b24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklU
OjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OngwKTsKKyAgICAvLyBIb3N0IGZ1
bmN0aW9uIHNpZ25hdHVyZTogZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6
OngxKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6Ongw
KTsKICAgICBpZiAodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVu
Y3Rpb24pIHsKLSAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJN
NjRSZWdpc3RlcnM6OngxLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEFSTTY0
UmVnaXN0ZXJzOjp4Mik7CisgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBBUk02NFJlZ2lzdGVyczo6eDIpOworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDAsIEpTRnVuY3Rpb246Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBBUk02NFJlZ2lzdGVyczo6eDApOwogICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDIsIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaml0
LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBJbnRl
cm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgQVJNNjRSZWdp
c3RlcnM6OngyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDAsIEludGVybmFsRnVuY3Rpb246Om9mZnNl
dE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOworICAgICAg
ICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDAs
IEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBBUk02NFJlZ2lzdGVy
czo6eDApOworICAgIH0KICAgICBqaXQuY2FsbChBUk02NFJlZ2lzdGVyczo6eDIsIEpTRW50cnlQ
dHJUYWcpOwogCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCkBAIC0zMjMsMTYg
KzMzMywyNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBu
YXRpdmVGb3JHZW5lcmF0b3IoVk0mIHZtLCBUaHVua0Z1bgogICAgIGppdC5zdWJQdHIoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxNiksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAjZW5kaWYKIAorICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnVDIgIT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ1Qy
ICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb24g
aXMgZihhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSwgLi4uKS4KLSAgICAvLyBIb3N0IGZ1bmN0
aW9uIHNpZ25hdHVyZSBpcyBmKEV4ZWNTdGF0ZSopLgotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7Cisg
ICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpT
SW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CiAgICAgaWYgKHRo
dW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7Ci0gICAg
ICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjph
cmd1bWVudEdQUjEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QyKTsKLSAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEpTRW50
cnlQdHJUYWcpOwotICAgIH0gZWxzZQotICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxLCBJbnRlcm5hbEZ1bmN0aW9uOjpv
ZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7CisgICAgICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjphcmd1
bWVudEdQUjAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3Mo
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOworICAgICAgICBqaXQubG9h
ZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6cmVnVDIsIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVy
ZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1
bmN0aW9uRm9yKGtpbmQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAgICAgICAgaml0Lmxv
YWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BS
MCwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklU
OjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CiAKICNpZiBDUFUoTUlQUykKICAgICAvLyBSZXN0b3Jl
IHN0YWNrIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGNiNGFiYWZlNDE5MTZiMTE4NzE2
MDBiYjEyNmM3ZTA1OGE3MDA3MWQuLjAyNGE4M2VkMjVmNzQ0OGM2MDQzODk1NDM0ODVjZWQxMWNj
NWYxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOTQsMTAzICsyOTQsMTAyIEBAIGNsYXNz
IFdvcmtlcnMgewogfTsKIAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUqKTsKLQotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZE91dChFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRTdGRFcnIoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRl
YnVnKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EZXNjcmliZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NB
bmRTd2VlcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRnVsbEdDKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290cHJpbnQo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlc2V0TWVtb3J5UGVhayhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQWRkcmVzc09mKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9h
ZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTG9hZFN0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRp
bWUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZUTChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
T3B0aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21waWxlcyhFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVySXNPTUdD
b21waWxlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSlNDT3B0aW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFy
cmF5QnVmZmVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9jayhFeGVjU3RhdGUqKTsKLXN0YXRpYyBOT19S
RVRVUk5fV0lUSF9WQUxVRSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVp
dChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmFsc2UoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblVuZGVmaW5lZDEoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVmaW5lZDIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzSW50MzIoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUHVyZU5hTihFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZm
ZWN0ZnVsNDIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbklkZW50aXR5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1Jl
ZnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNT
YW1wbGluZ1Byb2ZpbGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZW5lcmF0ZUhlYXBTbmFwc2hvdChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNo
b3RGb3JHQ0RlYnVnZ2luZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVzZXRTdXBlclNhbXBsZXJTdGF0ZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9y
YWdlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZE91dChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludFN0ZEVycihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EZXNjcmliZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNsZWVwU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxHQyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25FZGVuR0MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlTWVtb3J5Rm9vdHByaW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVt
b3J5UGVhayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRyZXNzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVy
c2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkxvYWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFN0cmluZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SZWFkRmlsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SZWFkbGluZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmVjaXNlVGltZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk5vRlRMKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhpdEZ1enppbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25OdW1iZXJPZkRGR0NvbXBpbGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01HQ29tcGls
ZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGlt
aXphdGlvblJldHJ5Q291bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9jayhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblVuZGVmaW5lZDEoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Jc0ludDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUHVyZU5hTihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25FZmZlY3RmdWw0MihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JZGVudGl0eShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVy
dGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVm
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hl
Y2tNb2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5n
UHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2luZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuc3VyZUFycmF5
U3RvcmFnZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2lmIEVOQUJMRShTQU1QTElO
R19QUk9GSUxFUikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
U3RhcnRTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YXJ0
U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tU
cmFjZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1heEFyZ3VtZW50cyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0
U3RhcnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkFzeW5jVGVzdFBhc3NlZChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFz
eW5jVGVzdFN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3NlZChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bldlYkFzc2VtYmx5TWVtb3J5TW9kZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFn
cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0U2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3Mo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNlbmRpZgogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFJhbmRvbVNlZWQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFJhbmRvbVNlZWQo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bklzUm9wZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyRGV0
YWNoQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U2xl
ZXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdl
bnRMZWF2aW5nKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FpdEZvclJlcG9ydChFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcENh
cGFjaXR5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVSaWNoU291cmNlSW5mbyhFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFsbG9jSW5B
TG9vcChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uVG90YWxDb21waWxlVGltZShFeGVjU3RhdGUqKTsKLQotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRSYW5kb21TZWVkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklzUm9wZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyRXZh
bFNjcmlwdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJB
Z2VudFJlcG9ydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFNsZWVwKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50
R2V0UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9y
UmVwb3J0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25G
bGFzaEhlYXBBY2Nlc3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21w
aWxlVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNr
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0cnVjdCBTY3JpcHQgewogICAgIGVu
dW0gY2xhc3MgU3RyaWN0TW9kZSB7CkBAIC02MTksNyArNjE4LDcgQEAgY2xhc3MgR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJDI2MiIpLCBkb2xsYXIpOwogICAgICAgICAKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNyZWF0ZVJlYWxtIiwgZnVuY3Rpb25Eb2xsYXJD
cmVhdGVSZWFsbSwgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJkZXRhY2hB
cnJheUJ1ZmZlciIsIGZ1bmN0aW9uRG9sbGFyRGV0YWNoQXJyYXlCdWZmZXIsIDEpOworICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZGV0YWNoQXJyYXlCdWZmZXIiLCBmdW5jdGlvblRy
YW5zZmVyQXJyYXlCdWZmZXIsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAi
ZXZhbFNjcmlwdCIsIGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCwgMSk7CiAgICAgICAgIAogICAg
ICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImds
b2JhbCIpLCB0aGlzKTsKQEAgLTEyNzQsNDcgKzEyNzMsNDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHByaW50SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBGSUxFKiBvdXQpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4g
cHJpbnRJbnRlcm5hbChleGVjLCBzdGRvdXQpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUHJpbnRTdGRFcnIoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBwcmludElu
dGVybmFsKGV4ZWMsIHN0ZGVycik7IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25QcmludFN0ZE91dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBwcmludEludGVybmFsKGNhbGxGcmFtZSwgc3Rkb3V0KTsgfQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkRXJyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIHByaW50SW50ZXJuYWwoY2FsbEZyYW1lLCBzdGRl
cnIpOyB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8gdmll
d1dpdGhTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0
cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGF1dG8gc3RyaW5nID0gY1N0cmluZ0Zyb21WaWV3V2l0aFN0cmluZyhl
eGVjLCBzY29wZSwgdmlld1dpdGhTdHJpbmcpOworICAgIGF1dG8gc3RyaW5nID0gY1N0cmluZ0Zy
b21WaWV3V2l0aFN0cmluZyhjYWxsRnJhbWUsIHNjb3BlLCB2aWV3V2l0aFN0cmluZyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZnByaW50
ZihzdGRlcnIsICItLT4gJXNcbiIsIHN0cmluZy5kYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB0b1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB0b1N0cmluZyhjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRGVzY3JpYmVBcnJheShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICI8bm90IG9iamVjdD4iX3MpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9TdHJp
bmcoIjxCdXR0ZXJmbHk6ICIsIFJhd1BvaW50ZXIob2JqZWN0LT5idXR0ZXJmbHkoKSksICI7IHB1
YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5ndGgoKSwgIjsgdmVjdG9yIGxlbmd0
aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4iKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2xlZXBTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TbGVlcFNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIFNlY29uZHMgc2Vjb25kcyA9IFNlY29uZHMo
ZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOworICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIFNlY29uZHMgc2Vjb25kcyA9IFNlY29uZHMo
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHNsZWVw
KHNlY29uZHMpOwogICAgIH0KQEAgLTEzMzksNDQgKzEzMzgsNDQgQEAgY2xhc3MgRnVuY3Rpb25K
U0NTdGFja0Z1bmN0b3IgewogICAgIFN0cmluZ0J1aWxkZXImIG1fdHJhY2U7CiB9OwogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0cmFj
ZTsKICAgICB0cmFjZS5hcHBlbmRMaXRlcmFsKCItLT4gU3RhY2sgdHJhY2U6XG4iKTsKIAogICAg
IEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9yIGZ1bmN0b3IodHJhY2UpOwotICAgIGV4ZWMtPml0ZXJh
dGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIGZwcmlu
dGYoc3RkZXJyLCAiJXMiLCB0cmFjZS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIHZtLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC5zaXplQWZ0ZXJM
YXN0RnVsbENvbGxlY3Rpb24oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25GdWxsR0MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgdm0uaGVhcC5jb2xs
ZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodm0uaGVhcC5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC5zaXplQWZ0
ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC5zaXplKCkpKTsKIH0KQEAgLTE0Mjcs
MTQgKzE0MjYsMTQgQEAgY2xhc3MgSlNDTWVtb3J5Rm9vdHByaW50IDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQ01lbW9yeUZvb3RwcmludDo6c19p
bmZvID0geyAiTWVtb3J5Rm9vdHByaW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NNZW1vcnlGb290cHJpbnQpIH07CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVNZW1vcnlGb290cHJpbnQoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU1l
bW9yeUZvb3RwcmludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQ01lbW9yeUZvb3RwcmludDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQ01lbW9yeUZvb3RwcmludDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCiB7CiAgICAgTWVtb3J5Rm9vdHByaW50OjpyZXNldFBlYWsoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ0Myw5ICsxNDQyLDkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0TWVtb3J5UGVhayhFeGVj
U3RhdGUqKQogLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgZ2VuZXJhbGx5IHZlcnkgaGVscGZ1bCBp
biA2NC1iaXQgY29kZSBhcyB0aGUgdGFnIGFuZCBwYXlsb2FkCiAvLyBzaGFyZSBhIHJlZ2lzdGVy
LiBCdXQgaW4gMzItYml0IEpJVGVkIGNvZGUgdGhlIHRhZyBtYXkgbm90IGJlIGNoZWNrZWQgaWYg
YW4KIC8vIG9wdGltaXphdGlvbiByZW1vdmVzIHR5cGUgY2hlY2tpbmcgcmVxdWlyZW1lbnRzLCBz
dWNoIGFzIGluID09PS4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGRy
ZXNzT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkFkZHJlc3NPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIC8vIE5lZWQg
dG8gY2FzdCB0byB1aW50NjRfdCBzbyBiaXR3aXNlX2Nhc3Qgd2lsbCBwbGF5IGFsb25nLgpAQCAt
MTQ1NCwxNTYgKzE0NTMsMTUxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25BZGRyZXNzT2YoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblZlcnNpb24oRXhlY1N0YXRl
KikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICAvLyBXZSBuZWVkIHRoaXMgZnVuY3Rpb24gZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgTW96aWxsYSBKUyB0ZXN0cyBidXQgZm9yIG5vdwogICAg
IC8vIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueSB2ZXJzaW9uLXNwZWNpZmljIGhhbmRsaW5nCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0
OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3Jp
cHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iX3MpKSk7
CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRl
KHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8
U3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0gR2xvYmFsT2JqZWN0OjpjcmVh
dGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3Rv
cjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKKyAgICBKU0FycmF5KiBhcnJheSA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkocmVhbG0tPmdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIGFycmF5LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5k
ZXgocmVhbG0tPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICB9Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgIHJlYWxtLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXkpOwog
CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BX
YXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKLSAgICBldmFsdWF0ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdCwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQ
YXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKKyAgICBl
dmFsdWF0ZShyZWFsbS0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmln
aW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBleGNl
cHRpb24pOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0g
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzY29wZSwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24ocmVhbG0tPmdsb2JhbEV4ZWMoKSwg
c2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVj
dCogcmVhbG0gPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKLSAgICBKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IDApOworICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShyZWFsbS0+Z2xv
YmFsRXhlYygpLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpIHsKLSAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7
CisgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChyZWFsbS0+Z2xvYmFsRXhlYygpLCBpIC0g
MSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KLSAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIp
LCBhcnJheSk7CisgICAgcmVhbG0tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4
Y2VwdGlvbjsKLSAgICBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291
cmNlKHNvdXJjZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV4Y2Vw
dGlvbik7CisgICAgZXZhbHVhdGUocmVhbG0tPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJj
ZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXhjZXB0aW9u
KTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgc2NvcGUudGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CisgICAgICAgIHNjb3BlLnRo
cm93RXhjZXB0aW9uKHJlYWxtLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlYWxtKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkxvYWQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkxvYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7
CisgICAgU3RyaW5nIGZpbGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZy
b21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJh
bWUsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgCiAgICAgTmFr
ZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQs
IFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgZmlsZU5hbWUpLCBKU1Zh
bHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9u
KQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGV2YWx1YXRpb25F
eGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHNv
dXJjZUNvZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJp
bmcgc291cmNlQ29kZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFs
dWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0
ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUsIGNhbGxG
cmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRp
b24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKLSAgICAgICAgU3RyaW5nIHR5cGUg
PSBleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBpZiAoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPiAxKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHR5cGUgIT0g
ImJpbmFyeSIpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAi
RXhwZWN0ZWQgJ2JpbmFyeScgYXMgc2Vjb25kIGFyZ3VtZW50LiIpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRXhwZWN0ZWQgJ2JpbmFyeScgYXMg
c2Vjb25kIGFyZ3VtZW50LiIpOwogICAgICAgICBpc0JpbmFyeSA9IHRydWU7CiAgICAgfQogCiAg
ICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnRlbnQgPSBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKGZpbGVOYW1lKTsKICAgICBpZiAoIWNvbnRlbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
OwogCiAgICAgaWYgKCFpc0JpbmFyeSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPmxlbmd0aCgpKSkpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlwZVVp
bnQ4KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJh
eVN0cnVjdHVyZShUeXBlVWludDgpOwogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU1VpbnQ4QXJy
YXk6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAg
ICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOwotCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJf
cykpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7
CkBAIC0xNjEzLDI1ICsxNjA3LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsK
IAogICAgIGlmICghdmFsaWRTeW50YXgpCi0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBzeW50YXhFeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBzeW50YXhFeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJ
TkdfRkxBR1MpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxp
bmdGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50
KCk7ICsraSkgewotICAgICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAg
ICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICgoZmxh
ZyA+PSAxKSAmJiAoZmxhZyA8PSAzMikpCiAgICAgICAgICAgICBTYW1wbGluZ0ZsYWdzOjpzZXRG
bGFnKGZsYWcpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdG
bGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQo
KTsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhlYykpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAg
ICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudChpKS50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAgaWYgKChmbGFn
ID49IDEpICYmIChmbGFnIDw9IDMyKSkKICAgICAgICAgICAgIFNhbXBsaW5nRmxhZ3M6OmNsZWFy
RmxhZyhmbGFnKTsKICAgICB9CkBAIC0xNjM5LDQwICsxNjMzLDQwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKiBleGVj
KQogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRS
YW5kb21TZWVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25HZXRSYW5kb21TZWVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPndlYWtSYW5kb20oKS5zZWVkKCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbE9iamVjdC0+d2Vha1JhbmRvbSgpLnNlZWQoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0UmFuZG9tU2Vl
ZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
U2V0UmFuZG9tU2VlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICB1bnNpZ25lZCBzZWVkID0gZXhlYy0+YXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7
CisgICAgdW5zaWduZWQgc2VlZCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9VSW50MzIoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYWtSYW5kb20oKS5zZXRTZWVk
KHNlZWQpOworICAgIGdsb2JhbE9iamVjdC0+d2Vha1JhbmRvbSgpLnNldFNlZWQoc2VlZCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUm9wZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICghYXJndW1lbnQuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0g
YXNTdHJpbmcoYXJndW1lbnQpLT50cnlHZXRWYWx1ZUltcGwoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbighaW1wbCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbGVyU291cmNlT3JpZ2luKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFNv
dXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBzdGF0ZS0+Y2FsbGVyU291cmNlT3JpZ2luKCk7Cisg
ICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3Jp
Z2luKCk7CiAgICAgaWYgKHNvdXJjZU9yaWdpbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhzdGF0ZS0+dm0oKSwgc291cmNlT3JpZ2luLnN0cmluZygpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHNvdXJjZU9yaWdpbi5z
dHJpbmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVh
ZGxpbmUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlYWRsaW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgVmVjdG9yPGNoYXIsIDI1Nj4gbGluZTsKICAgICBpbnQgYzsKQEAgLTE2ODMsNjEgKzE2
NzcsNjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRsaW5lKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgbGluZS5hcHBlbmQoYyk7CiAgICAgfQogICAgIGxpbmUu
YXBwZW5kKCdcMCcpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYy0+
dm0oKSwgbGluZS5kYXRhKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KGdsb2JhbE9iamVjdC0+dm0oKSwgbGluZS5kYXRhKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZWNpc2VUaW1lKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV2FsbFRp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2ZXJJbmxpbmVG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJJbmxpbmUoZXhlYykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJJbmxpbmUoY2FsbEZyYW1lKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0RGRyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9ERkcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldE5l
dmVyT3B0aW1pemUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0TmV2ZXJP
cHRpbWl6ZShjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbk5vRlRMKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Ob0ZUTChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9uKGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9u
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgICAgICBpZiAoZXhlY3V0YWJsZSkKICAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPnNldE5ldmVyRlRMT3B0aW1pemUodHJ1ZSk7CiAgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRGdXp6aW5nKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRGdXp6aW5n
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzZXRDYW5ub3RVc2VPU1JFeGl0RnV6emluZyhleGVjKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzZXRDYW5ub3RVc2VPU1JFeGl0RnV6emluZyhjYWxsRnJhbWUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGltaXplTmV4
dEludm9jYXRpb24oZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW1pemVO
ZXh0SW52b2NhdGlvbihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlck9mREZHQ29tcGlsZXMoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyT2ZERkdDb21waWxlcyhjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01HQ29tcGlsZWQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxlcklzT01HQ29t
cGlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
aWYgKCFPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogCiAgICAgQ2FsbGVyRnVuY3RvciB3YXNtVG9K
U0ZyYW1lOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoZXhlYywgJnZtLCB3YXNtVG9KU0ZyYW1l
KTsKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgJnZtLCB3YXNtVG9KU0ZyYW1l
KTsKICAgICBpZiAoIXdhc21Ub0pTRnJhbWUuY2FsbGVyRnJhbWUoKS0+aXNBbnlXYXNtQ2FsbGVl
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJjYWxsZXIgaXMg
bm90IGEgd2FzbS0+anMgaW1wb3J0IGZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgImNhbGxlciBpcyBub3QgYSB3YXNtLT5qcyBpbXBvcnQg
ZnVuY3Rpb24iKTsKIAogICAgIC8vIFdlIGhhdmUgYSB3cmFwcGVyIGZyYW1lIHRoYXQgd2UgZ2Vu
ZXJhdGUgZm9yIGltcG9ydHMuIElmIHdlIGV2ZXIgY2FuIGRpcmVjdCBjYWxsIGZyb20gd2FzbSB3
ZSB3b3VsZCBuZWVkIHRvIGNoYW5nZSB0aGlzLgogICAgIEFTU0VSVCghd2FzbVRvSlNGcmFtZS5j
YWxsZXJGcmFtZSgpLT5jYWxsZWUoKS5pc1dhc20oKSk7CkBAIC0xODYyLDQ1ICsxODU2LDQwIEBA
IFdvcmtlcnMmIFdvcmtlcnM6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9s
bGFyQ3JlYXRlUmVhbG0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBHbG9iYWxPYmplY3QqIHJlc3VsdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZt
LCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3Ry
aW5nPigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdC0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJCIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJEZXRhY2hBcnJheUJ1ZmZlcihFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgcmV0dXJuIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihleGVjKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3Jp
cHQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRvbGxhckV2YWxTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc291cmNlQ29kZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8R2xvYmFsT2JqZWN0Kj4odm0sCi0gICAgICAgIGV4ZWMtPnRoaXNW
YWx1ZSgpLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIikpKTsK
KyAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0ganNEeW5hbWljQ2FzdDxHbG9iYWxPYmplY3QqPih2
bSwKKyAgICAgICAgY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIikpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGdsb2JhbCBvYmpl
Y3QiX3MpKSk7CisgICAgaWYgKCFyZWFsbSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUs
ICJFeHBlY3RlZCBnbG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zKSkpOwogICAg
IAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3Vy
Y2Uoc291cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUocmVhbG0t
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUsIGNhbGxGcmFtZS0+Y2FsbGVyU291
cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChl
dmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
c2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhleGVjKS5pc29sYXRlZENvcHkoKTsKKyAgICBTdHJpbmcgc291cmNlQ29k
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKS5pc29sYXRl
ZENvcHkoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAKICAgICBMb2NrIGRpZFN0YXJ0TG9jazsKQEAgLTE5NDIsMTYgKzE5MzEsMTYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJl
Y2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGNhbGxiYWNrID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YSh2bSwgY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBjYWxsYmFjayJf
cykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJFeHBlY3RlZCBjYWxsYmFjayJf
cykpKTsKICAgICAKICAgICBSZWZQdHI8TWVzc2FnZT4gbWVzc2FnZTsKICAgICB7CkBAIC0xOTYx
LDIyICsxOTUwLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjCiAgICAgCiAgICAgYXV0byBu
YXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJlbGVhc2VDb250ZW50
cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVm
ZmVyLT5zaGFyaW5nTW9kZSgpOwotICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVm
ZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsKKyAgICBK
U0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZl
QnVmZmVyKSk7CiAgICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdz
LmFwcGVuZChqc0J1ZmZlcik7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobWVzc2FnZS0+aW5k
ZXgoKSkpOwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZy
YW1lLCBzY29wZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNhbGwoY2FsbEZyYW1lLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwo
KSwgYXJncykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRv
bGxhckFnZW50UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgcmVwb3J0ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHJlcG9ydCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBXb3JrZXJzOjpzaW5nbGV0b24o
KS5yZXBvcnQocmVwb3J0KTsKQEAgLTE5ODQsMjkgKzE5NzMsMjkgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRT
bGVlcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAgICAgICAgU2Vjb25kcyBzZWNvbmRz
ID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihl
eGVjKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAg
ICAgU2Vjb25kcyBzZWNvbmRzID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgc2xlZXAoc2Vjb25kcyk7
CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEJyb2FkY2Fz
dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRCcm9hZGNhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpT
QXJyYXlCdWZmZXIqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTQXJyYXlCdWZmZXIq
IGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmICghanNCdWZmZXIgfHwgIWpzQnVmZmVyLT5pc1NoYXJlZCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgU2hhcmVkQXJyYXlCdWZmZXIiX3MpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbEZyYW1lLCAiRXhwZWN0ZWQgU2hhcmVkQXJyYXlCdWZm
ZXIiX3MpKSk7CiAgICAgCi0gICAgaW50MzJfdCBpbmRleCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
SW50MzIoZXhlYyk7CisgICAgaW50MzJfdCBpbmRleCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSku
dG9JbnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIFdvcmtlcnM6OnNpbmdsZXRvbigpLmJyb2FkY2FzdCgK
QEAgLTIwMjEsOSArMjAxMCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJBZ2VudEJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRvbGxhckFnZW50R2V0UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgU3RyaW5n
IHN0cmluZyA9IFdvcmtlcnM6OnNpbmdsZXRvbigpLnRyeUdldFJlcG9ydCgpOwogICAgIGlmICgh
c3RyaW5nKQpAQCAtMjAzMiwxOSArMjAyMSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHN0cmluZykpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2aW5nKEV4ZWNTdGF0
ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRMZWF2
aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRNb25vdG9uaWNOb3coRXhlY1N0YXRlKikKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25k
cygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYWl0Rm9y
UmVwb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25XYWl0Rm9yUmVwb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAKICAgICBTdHJpbmcgc3RyaW5nOwogICAgIHsKQEAgLTIwNTcsMjAgKzIwNDYs
MjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
IHN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVh
cENhcGFjaXR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25IZWFwQ2FwYWNpdHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZtLmhlYXAu
Y2FwYWNpdHkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Rmxhc2hIZWFwQWNjZXNzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGRvdWJsZSBzbGVlcFRpbWVNcyA9IDA7Ci0gICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIHNsZWVwVGltZU1zID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgc2xlZXBUaW1lTXMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIApAQCAtMjA4MSwxMyArMjA3MCwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhc2hIZWFwQWNjZXNz
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZVJp
Y2hTb3VyY2VJbmZvKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGlzYWJsZVJpY2hTb3VyY2VJbmZvKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikK
IHsKICAgICBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvID0gZmFsc2U7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbk1hbGxvY0luQUxvb3AoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25NYWxsb2NJbkFMb29wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKIHsKICAgICBWZWN0b3I8dm9pZCo+IHB0cnM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDUwMDA7ICsraSkKQEAgLTIwOTcsNyArMjA4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25NYWxsb2NJbkFMb29wKEV4ZWNTdGF0ZSopCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29tcGlsZVRpbWUoRXhlY1N0YXRlKikKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoSklUOjp0b3RhbENvbXBpbGVUaW1lKCkubWlsbGlzZWNvbmRzKCkp
KTsKQEAgLTIxMTUsMTAgKzIxMDQsMTAgQEAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19mdW5kYW1lbnRhbDxWYWx1ZVR5cGU+Ojp2YWx1ZT46OnR5cGUgYWRkT3B0aW9uKFYKICAgICBv
cHRpb25zT2JqZWN0LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTVmFsdWUodmFsdWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ09wdGlvbnMoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ09w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogb3B0aW9uc09iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9uc09iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGNhbGxGcmFtZSk7CiAjZGVmaW5lIFJFQURfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVs
dFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgYWRkT3B0aW9uKHZt
LCBvcHRpb25zT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZV8pLCBPcHRp
b25zOjpuYW1lXygpKTsKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKFJFQURfT1BUSU9OKQpAQCAt
MjEyNiwyOSArMjExNSwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SlNDT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShv
cHRpb25zT2JqZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKLSAgICBD
b2RlQmxvY2sqIGJsb2NrID0gZ2V0U29tZUJhc2VsaW5lQ29kZUJsb2NrRm9yRnVuY3Rpb24oZXhl
Yy0+YXJndW1lbnQoMCkpOworICAgIENvZGVCbG9jayogYmxvY2sgPSBnZXRTb21lQmFzZWxpbmVD
b2RlQmxvY2tGb3JGdW5jdGlvbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJs
b2NrKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKTsKICAgICAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGJsb2NrLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3Mp
KSk7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVh
dGVFcnJvcihjYWxsRnJhbWUsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKICAgICAKLSAg
ICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2
bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGFuIGFycmF5IGJ1
ZmZlciJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsRnJhbWUsICJFeHBlY3RlZCBhbiBh
cnJheSBidWZmZXIiX3MpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1teUNv
bnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlclRvKHZtLCBkdW1teUNvbnRlbnRz
KTsKQEAgLTIxNTYsMTYgKzIxNDUsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25GYWlsTmV4dE5ld0NvZGVCbG9jayhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFpbE5leHROZXdDb2RlQmxvY2so
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5z
ZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25R
dWl0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25RdWl0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgdm0uY29kZUNhY2hlKCktPndyaXRlKHZtKTsKIAogICAgIGpzY0V4aXQoRVhJVF9TVUNDRVNT
KTsKQEAgLTIxNzYsMjMgKzIxNjUsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblF1aXQoRXhlY1N0YXRlKiBleGVjKQogI2VuZGlmCiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZShFeGVjU3RhdGUqKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25GYWxzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopIHsgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsgfQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
SW50MzIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblVuZGVmaW5lZDEoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25VbmRlZmluZWQyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgeyByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSXNJbnQzMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudChpKS5pc0ludDMyKCkpCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7CisgICAgICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudChpKS5pc0ludDMyKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgIH0K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzUHVyZU5hTihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGV4ZWMtPmFyZ3VtZW50KGkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudChpKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICAg
ICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CkBAIC0yMjA0LDQ5ICsyMTkzLDQ5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Jc1B1cmVOYU4oRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklkZW50aXR5KEV4ZWNT
dGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmFyZ3VtZW50KDApKTsg
fQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklkZW50aXR5KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsgfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRWZmZWN0ZnVsNDIoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcig0MikpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFk
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTWFzcXVlcmFkZXI6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTWFzcXVlcmFk
ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QodmFsdWUpLT5oYXND
dXN0b21Qcm9wZXJ0aWVzKGV4ZWMtPnZtKCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KHZhbHVlKS0+aGFzQ3VzdG9tUHJvcGVydGllcyhnbG9i
YWxPYmplY3QtPnZtKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
ZmFsc2UpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBU
eXBlc0ZvckFsbFZhcmlhYmxlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0uZHVtcFR5cGVQcm9maWxl
ckRhdGEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFp
bk1pY3JvdGFza3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmVsZWFzZVdlYWtSZWZzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICB2bS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVj
dXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4
ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBs
YXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6OkpTVmFsdWU6OkpTRmFs
c2UpKTsKQEAgLTIyNTUsMzQgKzIyNDQsMzQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUqKQogI2VuZGlmCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUds
b2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEds
b2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+
KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9k
dWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAgc3Rv
cFdhdGNoLnN0YXJ0KCk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBib29sIHZhbGlk
U3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYywganNjU291cmNlKHNvdXJjZSwgeyB9LCBV
UkwoKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwg
ZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChjYWxsRnJh
bWUsIGpzY1NvdXJjZShzb3VyY2UsIHsgfSwgVVJMKCksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQ
cm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAg
ICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5t
ZXNzYWdlKCksICI6IiwgZXJyb3IubGluZSgpKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRvU3RyaW5nKCJTeW50YXhF
cnJvcjogIiwgZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0
c1NhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6OkpTVmFsdWU6OkpTVHJ1ZSkpOwpAQCAt
MjI5MSw5ICsyMjgwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBs
YXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEV4ZWNTdGF0ZSoKICNlbmRpZgogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3Qo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdl
bmVyYXRlSGVhcFNuYXBzaG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIzMDEsMTQgKzIyOTAsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBz
aG90KEV4ZWNTdGF0ZSogZXhlYykKICAgICBzbmFwc2hvdEJ1aWxkZXIuYnVpbGRTbmFwc2hvdCgp
OwogCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSBzbmFwc2hvdEJ1aWxkZXIuanNvbigpOwotICAg
IEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywg
anNvblN0cmluZykpOworICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29k
ZShKU09OUGFyc2UoY2FsbEZyYW1lLCBqc29uU3RyaW5nKSk7CiAgICAgc2NvcGUucmVsZWFzZUFz
c2VydE5vRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dp
bmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cmluZyBqc29u
U3RyaW5nOwpAQCAtMjMyNCw2NiArMjMxMyw2NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2luZyhFeGVjU3RhdAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGpzb25TdHJpbmcpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlc2V0U3VwZXJTYW1wbGVy
U3RhdGUoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
ZXNldFN1cGVyU2FtcGxlclN0YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAg
ICByZXNldFN1cGVyU2FtcGxlclN0YXRlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBleGVjLT5hcmd1bWVudChpKSkpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpKSkKICAgICAgICAgICAg
IG9iamVjdC0+ZW5zdXJlQXJyYXlTdG9yYWdlKHZtKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElOR19QUk9G
SUxFUikKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGFydFNhbXBsaW5n
UHJvZmlsZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFNhbXBsaW5nUHJvZmlsZXImIHNhbXBsaW5nUHJvZmls
ZXIgPSB2bS5lbnN1cmVTYW1wbGluZ1Byb2ZpbGVyKFdURjo6U3RvcHdhdGNoOjpjcmVhdGUoKSk7
CiAgICAgc2FtcGxpbmdQcm9maWxlci5ub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRpb25U
aHJlYWQoKTsKICAgICBzYW1wbGluZ1Byb2ZpbGVyLnN0YXJ0KCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0
YWNrVHJhY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmICghdm0uc2FtcGxpbmdQcm9maWxlcigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiU2Ft
cGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiX3MpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlRXJy
b3IoY2FsbEZyYW1lLCAiU2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiX3MpKSk7
CiAKICAgICBTdHJpbmcganNvblN0cmluZyA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKS0+c3RhY2tU
cmFjZXNBc0pTT04oKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNv
ZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSByZXN1
bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGNhbGxGcmFtZSwganNvblN0cmluZykpOwog
ICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRzKEV4ZWNTdGF0ZSopCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKEpT
Qzo6bWF4QXJndW1lbnRzKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Bc3luY1Rlc3RTdGFydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBudW1iZXJPZkFzeW5jUGFzc2VzID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBudW1iZXJPZkFzeW5jUGFzc2VzID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW51bWJlck9mQXN5bmNQYXNzZXMuaXNVSW50
MzIoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVk
IGZpcnN0IGFyZ3VtZW50IHRvIGJlIGEgdWludDMyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUg
YSB1aW50MzIiX3MpOwogCiAgICAgYXN5bmNUZXN0RXhwZWN0ZWRQYXNzZXMgKz0gbnVtYmVyT2ZB
c3luY1Bhc3Nlcy5hc1VJbnQzMigpOwogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5jVGVzdFBhc3Nl
ZChFeGVjU3RhdGUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzeW5j
VGVzdFBhc3NlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgYXN5bmNUZXN0
UGFzc2VzKys7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMjM5MSwzNiAr
MjM4MCwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0
UGFzc2VkKEV4ZWNTdGF0ZSopCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2Rl
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBpZiAoIVdhc206OmlzU3VwcG9ydGVkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1v
cnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9u
IGlzIHNldCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRo
ZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zKTsKIAotICAgIGlmIChKU09iamVjdCog
b2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKKyAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+
KHZtLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgbWFrZVN0cmluZyhtZW1vcnktPm1lbW9yeSgpLm1vZGUoKSkpKTsKICAgICAgICAgaWYg
KGF1dG8qIGluc3RhbmNlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPih2
bSwgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIG1ha2VTdHJpbmcoaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSkpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9k
ZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3NlbWJseS5JbnN0
YW5jZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9y
eSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfcyk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhh
bmRsZWRSZWplY3Rpb25DYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQo
MCkuZ2V0T2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghb2JqZWN0
IHx8ICFvYmplY3QtPmlzRnVuY3Rpb24odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zZXRVbmhh
bmRsZWRSZWplY3Rpb25DYWxsYmFjayh2bSwgb2JqZWN0KTsKKyAgICBnbG9iYWxPYmplY3QtPnNl
dFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKHZtLCBvYmplY3QpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTI2NjYsMTMgKzI2NTUsMTMgQEAg
c3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib28KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CiAKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bGZpbGxIYW5k
bGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0
cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RGaWxlXShFeGVjU3RhdGUqIGV4ZWMp
IHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihleGVjLCBqc0Nhc3Q8R2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgaXNMYXN0RmlsZSwgZmFsc2UsIGV4
ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKKyAgICAgICAgICAgIEpTRnVuY3Rp
b24qIGZ1bGZpbGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRpb25zLCBpc0xhc3RGaWxlXShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeworICAg
ICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGNhbGxGcmFtZSwganNDYXN0PEdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCksIGlzTGFzdEZpbGUsIGZhbHNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEpT
RnVuY3Rpb24qIHJlamVjdEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmc3VjY2VzcywgJm9wdGlvbnMsIGlzTGFzdEZp
bGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGV4
ZWMsIGpzQ2FzdDxHbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBp
c0xhc3RGaWxlLCB0cnVlLCBleGVjLT5hcmd1bWVudCgwKSwgb3B0aW9ucywgc3VjY2Vzcyk7Cisg
ICAgICAgICAgICBKU0Z1bmN0aW9uKiByZWplY3RIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJnN1Y2Nlc3MsICZvcHRp
b25zLCBpc0xhc3RGaWxlXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGNhbGxGcmFtZSwg
anNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGlzTGFzdEZpbGUsIHRydWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCmluZGV4
IDJiNzM2MDJhODMyZDBhZDRhZmY0NjdiNjUxZjYzYjEyYjJlNmE0NmMuLjJhM2U3NWRjNGE3ZDhl
ZWU1MGVkYWNjMDZjMjc3NjEyNWExZmQ1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogbmFtZXNwYWNlIExMSW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IGMwYjMxNjFhNjhiNjE1ZjJiODQ1NWJmMGVmNWYxNzkyM2Y3ZjI5MzguLjM0ZTY1MTc3ZjcwYmUw
MWFlMzliOTgxNDQ4ZDZjOTc2NWJmNWYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgc3RhdGljIFNs
b3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpT
VmFsdWUgY2FsbGVlLAogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsK
ICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUp
OwogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwot
ICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
YXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgZXhlY0NhbGxlZSkpOwogICAgICAg
ICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6Omdl
dENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxs
ZWUsCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewogICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAgICB2bS5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChj
YWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBleGVjQ2FsbGVlKSk7CiAgICAgICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggYzI0YzJkODYx
YTZkZTllYWJlNGZhMTJiZDZmMGJhOTc4MzhmNTg1NC4uYWU3OGY0YThjNWMwYWRlNjg1ODVlYWQz
YWNkYjQzM2E4OGQyYjZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKQEAgLTMwLDcgKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFt
ZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IDIwMDYzYTVlMjRlZTMwMTFjOTFkYzIyMzQwZDhmYTE0YjE1M2JmNDQuLmRmNTcxNmYxMGRj
NWRhMDI5NGY2Mjc1ZTZmYzRiNjFlODViZmQ0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTE0NCw3ICsxNDQsNiBA
QCBjbGFzcyBDTG9vcFJlZ2lzdGVyIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQqIHZwKCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihtX3ZhbHVlKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgY29uc3Qgdm9pZCogY3ZwKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0
IHZvaWQqPihtX3ZhbHVlKTsgfQogICAgIEFMV0FZU19JTkxJTkUgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4obV92YWx1ZSk7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogZXhlY1N0YXRlKCkgY29uc3QgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PEV4ZWNTdGF0ZSo+KG1fdmFsdWUpOyB9CiAgICAgQUxXQVlTX0lOTElORSBj
b25zdCB2b2lkKiBpbnN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25z
dCB2b2lkKj4obV92YWx1ZSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFZNKiB2bSgpIGNvbnN0IHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxWTSo+KG1fdmFsdWUpOyB9CiAgICAgQUxXQVlTX0lOTElORSBK
U0NlbGwqIGNlbGwoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4obV92YWx1
ZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjVmOTI0ZmJkNTA1NDgzZjIwMmUxMmY5YzQ1ZTQz
NmViYzI0Y2M4MC4uZTRiOGU1MDI1NTQwYzFkYWY2Nzk0YTI5NGRlOTRjODBkZjUzMTQwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTI2Miw3ICsyNjIsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNh
bGwpCiAgICAgc3RvcmVwIHNwLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQogICAgIHN0b3JlcCBjZnIs
IFZNOjp0b3BFbnRyeUZyYW1lW3ZtXQogCi0gICAgbWFrZUNhbGwoZW50cnksIHQzLCB0NCkKKyAg
ICBtYWtlQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHQzLCB0NCkKIAogICAgIGlmIEFSTXY3
CiAgICAgICAgIHZtRW50cnlSZWNvcmQoY2ZyLCB0MykKQEAgLTMxOSw3ICszMTksOCBAQCBtYWNy
byBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBlbmQKIAotbWFjcm8gbWFrZUphdmFTY3Jp
cHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtl
SmF2YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAg
YWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCh0ZW1wLCAweGJhZDBkYzAyKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0z
MzEsMjQgKzMzMiwyOCBAQCBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVu
dXNlZCkKICAgICBzdWJwIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogZW5kCiAKLW1hY3JvIG1h
a2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wMSwgdGVtcDIpCisjIGEwLCBhMiwgdDMsIHQ0
CittYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAx
LCB0ZW1wMikKICAgICBtb3ZlIGVudHJ5LCB0ZW1wMQogICAgIHN0b3JlcCBjZnIsIFtzcF0KICAg
ICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICBtb3ZlIHNwLCBhMAorICAgICAgICBs
b2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAg
ICAgICAgbW92ZSBzcCwgYTEKICAgICAgICAgc3RvcmVwIGxyLCBQdHJTaXplW3NwXQogICAgICAg
ICBjbG9vcENhbGxOYXRpdmUgdGVtcDEKICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgotICAgICAg
ICAjIFB1dCBjYWxsZWUgZnJhbWUgcG9pbnRlciBvbiBzdGFjayBhcyBhcmcwLCBhbHNvIHB1dCBp
dCBpbiBlY3ggZm9yICJmYXN0Y2FsbCIgdGFyZ2V0cworICAgICAgICAjIFB1dCBjYWxsZWUgZnJh
bWUgcG9pbnRlciBvbiBzdGFjayBhcyBhcmcxLCBhbHNvIHB1dCBpdCBpbiBlY3ggZm9yICJmYXN0
Y2FsbCIgdGFyZ2V0cwogICAgICAgICBtb3ZlIDAsIHRlbXAyCiAgICAgICAgIG1vdmUgdGVtcDIs
IDRbc3BdICMgcHV0IDAgaW4gUmV0dXJuUEMKLSAgICAgICAgbW92ZSBzcCwgYTAgIyBhMCBpcyBl
Y3gKLSAgICAgICAgcHVzaCB0ZW1wMiAjIFB1c2ggZHVtbXkgYXJnMQorICAgICAgICBtb3ZlIHNw
LCBhMSAjIGExIGlzIGVkeAorICAgICAgICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6Z2xvYmFsT2Jq
ZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICAgICAgcHVzaCBhMQogICAgICAgICBwdXNoIGEw
CiAgICAgICAgIGNhbGwgdGVtcDEKICAgICAgICAgYWRkcCA4LCBzcAogICAgIGVsc2UKLSAgICAg
ICAgbW92ZSBzcCwgYTAKKyAgICAgICAgbG9hZHAgUHJvdG9DYWxsRnJhbWU6Omdsb2JhbE9iamVj
dFtwcm90b0NhbGxGcmFtZV0sIGEwCisgICAgICAgIG1vdmUgc3AsIGExCiAgICAgICAgIGNhbGwg
dGVtcDEKICAgICBlbmQKIGVuZApAQCAtMTk5NywxMiArMjAwMiwxMyBAQCBtYWNybyBuYXRpdmVD
YWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgYW5kcCBN
YXJrZWRCbG9ja01hc2ssIHQxCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0
ICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6bV92bVt0MV0sIHQzCiAgICAgICAgIHN0b3JlcCBjZnIs
IFZNOjp0b3BDYWxsRnJhbWVbdDNdCi0gICAgICAgIG1vdmUgY2ZyLCBhMCAgIyBhMCA9IGVjeAot
ICAgICAgICBzdG9yZXAgYTAsIFtzcF0KLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MQotICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFd
LCB0MQorICAgICAgICBtb3ZlIGNmciwgYTEgICMgYTEgPSBlZHgKKyAgICAgICAgc3RvcmVwIGEx
LCBbc3BdCisgICAgICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTAKKyAg
ICAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW2EwXSwgYTIKKyAgICAgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9nbG9iYWxPYmplY3RbYTBdLCBhMAogICAgICAgICBjaGVja1N0YWNr
UG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKLSAgICAgICAgY2FsbCBleGVjdXRhYmxl
T2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAgICAgY2FsbCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5j
dGlvblthMl0KICAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0Mwog
ICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxv
Y2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKQEAgLTIw
MjAsMTQgKzIwMjYsMTUgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9m
ZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAg
ICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1f
dm1bdDFdLCB0MQogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QxXQotICAg
ICAgICBtb3ZlIGNmciwgYTAKLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0MQotICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQor
ICAgICAgICBtb3ZlIGNmciwgYTEKKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCBhMAorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbYTBdLCBh
MgorICAgICAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMF0sIGEwCiAgICAg
ICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQogICAgICAgICBp
ZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4
ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICAgICAgY2FsbCBleGVj
dXRhYmxlT2Zmc2V0VG9GdW5jdGlvblthMl0KICAgICAgICAgZW5kCiAgICAgICAgIGxvYWRwIENh
bGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01h
c2ssIHQzCkBAIC0yMDY1LDExICsyMDcyLDEyIEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxs
VHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9uKQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFz
aywgdDEKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9j
azo6Rm9vdGVyOjptX3ZtW3QxXSwgdDMKICAgICAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxG
cmFtZVt0M10KLSAgICAgICAgbW92ZSBjZnIsIGEwICAjIGEwID0gZWN4Ci0gICAgICAgIHN0b3Jl
cCBhMCwgW3NwXQotICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQx
CisgICAgICAgIG1vdmUgY2ZyLCBhMSAgIyBhMSA9IGVkeAorICAgICAgICBzdG9yZXAgYTEsIFtz
cF0KKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMgorICAgICAg
ICBsb2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQwMDAxKQotICAgICAgICBjYWxs
IG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0K
ICAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgICAgICBh
bmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJP
ZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKQEAgLTIwODAsMTMgKzIw
ODgsMTQgQEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVu
Y3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgICAgICBsb2FkcCBN
YXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0
MQogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QxXQotICAgICAgICBtb3Zl
IGNmciwgYTAKLSAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQor
ICAgICAgICBtb3ZlIGNmciwgYTEKKyAgICAgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCBhMgorICAgICAgICBsb2FkcCBJbnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9iamVj
dFthMl0sIGEwCiAgICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRlYWQw
MDAxKQogICAgICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICAgICAgY2xvb3BD
YWxsTmF0aXZlIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAgICAgICBjbG9vcENhbGxOYXRp
dmUgb2Zmc2V0T2ZGdW5jdGlvblthMl0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBv
ZmZzZXRPZkZ1bmN0aW9uW3QxXQorICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW2Ey
XQogICAgICAgICBlbmQKICAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJd
LCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggN2Y0
ZWI4MzdmNzFlYTFmYjk1NzAxOWFkM2UzMmFhN2Q3MWMzYzNhZi4uMWY4ZGJmYzYzZGEzNjcyNGI0
YWEyNjhkZWNmYTAzYTZhMGRiNTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTI1NSw3ICsyNTUsNyBAQCBt
YWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dChleHRyYVRlbXBSZWcsIDB4YmFkMGRjMDIpCiAKLSAgICBtYWtlQ2FsbChlbnRyeSwgdDMsIHQ0
KQorICAgIG1ha2VDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdDMsIHQ0KQogCiAgICAgIyBX
ZSBtYXkgaGF2ZSBqdXN0IG1hZGUgYSBjYWxsIGludG8gYSBKUyBmdW5jdGlvbiwgc28gd2UgY2Fu
J3QgcmVseSBvbiBzcAogICAgICMgZm9yIGFueXRoaW5nIGJ1dCB0aGUgZmFjdCB0aGF0IG91ciBv
d24gbG9jYWxzIChpZSB0aGUgVk1FbnRyeVJlY29yZCkgYXJlCkBAIC0yOTcsNyArMjk3LDggQEAg
bWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogZW5kCiAKIAotbWFjcm8gbWFrZUphdmFTY3JpcHRD
YWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQpCisjIGEwLCBhMiwgdDMsIHQ0CittYWNybyBtYWtlSmF2
YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRk
cCAxNiwgc3AKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxK
U0Z1bmN0aW9uIGVudHJ5CkBAIC0zMDcsMjAgKzMwOCwyMiBAQCBtYWNybyBtYWtlSmF2YVNjcmlw
dENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKICAgICBzdWJwIDE2LCBzcAogZW5kCiAKLW1hY3Jv
IG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQpCi0gICAgbW92ZSBlbnRy
eSwgdGVtcAorIyBhMCwgYTIsIHQzLCB0NAorbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50
cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCisgICAgbW92ZSBlbnRyeSwgdGVtcDEK
ICAgICBzdG9yZXAgY2ZyLCBbc3BdCi0gICAgbW92ZSBzcCwgYTAKKyAgICBsb2FkcCBQcm90b0Nh
bGxGcmFtZTo6Z2xvYmFsT2JqZWN0W3Byb3RvQ2FsbEZyYW1lXSwgYTAKKyAgICBtb3ZlIHNwLCBh
MQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIHN0b3JlcCBsciwgOFtzcF0K
LSAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHRlbXAKKyAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHRl
bXAxCiAgICAgZWxzaWYgWDg2XzY0X1dJTgogICAgICAgICAjIFdlIG5lZWQgdG8gYWxsb2NhdGUg
MzIgYnl0ZXMgb24gdGhlIHN0YWNrIGZvciB0aGUgc2hhZG93IHNwYWNlLgogICAgICAgICBzdWJw
IDMyLCBzcAotICAgICAgICBjYWxsIHRlbXAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgY2FsbCB0
ZW1wMSwgSlNFbnRyeVB0clRhZwogICAgICAgICBhZGRwIDMyLCBzcAogICAgIGVsc2UKLSAgICAg
ICAgY2FsbCB0ZW1wLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGNhbGwgdGVtcDEsIEpTRW50cnlQ
dHJUYWcKICAgICBlbmQKIGVuZAogCkBAIC0yMTIzLDE5ICsyMTI2LDIwIEBAIG1hY3JvIG5hdGl2
ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIGlmIEFSTTY0
IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBzdG9yZXAgbHIsIFJl
dHVyblBDW2Nmcl0KICAgICBlbmQKLSAgICBtb3ZlIGNmciwgYTAKLSAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDEKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAg
IG1vdmUgY2ZyLCBhMQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCBhMAorICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZVthMF0sIGEyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9nbG9i
YWxPYmplY3RbYTBdLCBhMAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQzLCAweGRl
YWQwMDAxKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgIGNsb29wQ2FsbE5h
dGl2ZSBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAgICAgY2xvb3BDYWxsTmF0
aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAgaWYg
WDg2XzY0X1dJTgogICAgICAgICAgICAgc3VicCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwgZXhl
Y3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW2EyXSwgSlNFbnRyeVB0clRhZwogICAgICAg
ICAgICAgYWRkcCAzMiwgc3AKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbCBleGVjdXRh
YmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0sIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwg
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bYTJdLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIGVu
ZAogICAgIGVuZAogCkBAIC0yMTYzLDE4ICsyMTY3LDE5IEBAIG1hY3JvIGludGVybmFsRnVuY3Rp
b25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9uKQogICAgIGlmIEFSTTY0IG9yIEFSTTY0
RSBvciBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBzdG9yZXAgbHIsIFJldHVyblBDW2Nm
cl0KICAgICBlbmQKLSAgICBtb3ZlIGNmciwgYTAKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEK
KyAgICBtb3ZlIGNmciwgYTEKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgYTIKKyAgICBsb2FkcCBJ
bnRlcm5hbEZ1bmN0aW9uOjptX2dsb2JhbE9iamVjdFthMl0sIGEwCiAgICAgY2hlY2tTdGFja1Bv
aW50ZXJBbGlnbm1lbnQodDMsIDB4ZGVhZDAwMDEpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9X
SU4KLSAgICAgICAgY2xvb3BDYWxsTmF0aXZlIG9mZnNldE9mRnVuY3Rpb25bdDFdCisgICAgICAg
IGNsb29wQ2FsbE5hdGl2ZSBvZmZzZXRPZkZ1bmN0aW9uW2EyXQogICAgIGVsc2UKICAgICAgICAg
aWYgWDg2XzY0X1dJTgogICAgICAgICAgICAgc3VicCAzMiwgc3AKLSAgICAgICAgICAgIGNhbGwg
b2Zmc2V0T2ZGdW5jdGlvblt0MV0sIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgb2Zm
c2V0T2ZGdW5jdGlvblthMl0sIEpTRW50cnlQdHJUYWcKICAgICAgICAgICAgIGFkZHAgMzIsIHNw
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblt0MV0sIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgICAgIGNhbGwgb2Zmc2V0T2ZGdW5jdGlvblthMl0sIEpTRW50
cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY2xvb3AucmIKaW5kZXggODM2ODc2M2M1ZWYxYWMzNjA3MmUxYzBkNGQxNTg4YzA4
YTUwYzcwYy4uYjcxNDllODJhY2JmZmMzNWQ2ZDdkZTNkODNhNWJlMDc0YzQ2NmIwNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTExMjYsMTEgKzExMjYs
MTEgQEAgZGVmIGxvd2VyQ19MT09QCiAKICAgICAgICAgIyBXZSBjYW4ndCBkbyBnZW5lcmljIGZ1
bmN0aW9uIGNhbGxzIHdpdGggYW4gYXJiaXRyYXJ5IHNldCBvZiBhcmdzLCBidXQKICAgICAgICAg
IyBmb3J0dW5hdGVseSB3ZSBkb24ndCBoYXZlIHRvIGhlcmUuIEFsbCBuYXRpdmUgZnVuY3Rpb24g
Y2FsbHMgYWx3YXlzCi0gICAgICAgICMgaGF2ZSBhIGZpeGVkIHByb3RvdHlwZSBvZiAxIGFyZ3M6
IHRoZSBwYXNzZWQgRXhlY1N0YXRlLgorICAgICAgICAjIGhhdmUgYSBmaXhlZCBwcm90b3R5cGUg
b2YgMiBhcmdzOiB0aGUgcGFzc2VkIEpTR2xvYmFsT2JqZWN0KiBhbmQgQ2FsbEZyYW1lKi4KICAg
ICAgICAgd2hlbiAiY2xvb3BDYWxsTmF0aXZlIgogICAgICAgICAgICAgJGFzbS5wdXRjICJjbG9v
cFN0YWNrLnNldEN1cnJlbnRTdGFja1BvaW50ZXIoc3AudnAoKSk7IgogICAgICAgICAgICAgJGFz
bS5wdXRjICJuYXRpdmVGdW5jID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpuYXRpdmVGdW5jKX07
IgotICAgICAgICAgICAgJGFzbS5wdXRjICJmdW5jdGlvblJldHVyblZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKG5hdGl2ZUZ1bmModDAuZXhlY1N0YXRlKCkpKTsiCisgICAgICAgICAgICAkYXNtLnB1
dGMgImZ1bmN0aW9uUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobmF0aXZlRnVuYyhqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPih0MC5jZWxsKCkpLCB0MS5jYWxsRnJhbWUoKSkpOyIKICAgICAg
ICAgICAgICRhc20ucHV0YyAiI2lmIFVTRShKU1ZBTFVFMzJfNjQpIgogICAgICAgICAgICAgJGFz
bS5wdXRjICIgICAgdDEgPSBmdW5jdGlvblJldHVyblZhbHVlLnRhZygpOyIKICAgICAgICAgICAg
ICRhc20ucHV0YyAiICAgIHQwID0gZnVuY3Rpb25SZXR1cm5WYWx1ZS5wYXlsb2FkKCk7IgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCAz
OWZlNmJiZmY1NjZiOTE1OWJhNjM3MTkzYzY4M2EzYmNjMmRjMWVlLi5mODliZmVkY2UzZmFmZjYz
NTc0YzQxNWJiZTkzMDVhZTYwZTI5MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxG
cmFtZTsKIAogY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlC
dWZmZXJWaWV3PiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IGI5MmE3NjJhNDAwNjI5OWViN2I0NTk4MDY0
MDJjOThhMDRhMWI5NTUuLjhkMDA5MDYyNDJlODlmZGU1MTMxM2M5MjlmNjE1MjlkMDExMzQ0MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwCkBAIC01MCw4ICs1MCw4IEBAIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luCiBAZW5kCiAq
LwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
IEFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEFycmF5
Q29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKQpAQCAtODQsMTEgKzg0
LDggQEAgSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhl
YywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBu
ZXdUYXJnZXQpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVl
IG5ld1RhcmdldCkKK3N0YXRpYyBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6
ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLQogICAg
IC8vIGEgc2luZ2xlIG51bWVyaWMgYXJndW1lbnQgZGVub3RlcyB0aGUgYXJyYXkgc2l6ZSAoISkK
ICAgICBpZiAoYXJncy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QsIGFyZ3MuYXQoMCksIG5l
d1RhcmdldCk7CkBAIC05NywxNiArOTQsMTYgQEAgc3RhdGljIGlubGluZSBKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXMKICAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0LCBhcmdz
LCBuZXdUYXJnZXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgYXJncywgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKKyAg
ICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywg
Y2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdM
aXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJh
eVdpdGhTaXplUXVpcmsoZXhlYywgYXJncywgSlNWYWx1ZSgpKSk7CisgICAgQXJnTGlzdCBhcmdz
KGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmsoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEpTVmFsdWUoKSkpOwog
fQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQXJyYXlTbG93SW5saW5lKEV4ZWNTdGF0
ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5KQpAQCAtMTQwLDEwICsxMzcsMTAgQEAgYm9vbCBp
c0FycmF5U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0KiBhcmd1bWVudCkKIAogLy8g
RVM2IDcuMi4yCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVu
Y0lzQXJyYXlTbG93KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHlu
YW1pY0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGV4
ZWMsIGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxQcm94eU9iamVj
dCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGNhbGxGcmFt
ZSwganNDYXN0PFByb3h5T2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkp
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCmluZGV4IDc1YWM0NTkyMTM2MTRhMzY1NWYwNmYy
ZDRlM2I0MmNjMzA3MjYzNTAuLjc3MjMzYWRlN2IzOWFlZDVlZThmMTZjMDk4MDM4YjAxMThiMmJj
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciBmaW5hbCA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAogSlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6
ZVF1aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNB
cnJheVNsb3coRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiBib29sIGlzQXJyYXlTbG93KEV4ZWNTdGF0ZSosIFByb3h5T2JqZWN0KiBhcmd1bWVu
dCk7CiAKIC8vIEVTNiA3LjIuMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGVkYjc2MTliNTEwYWM2M2M0MTc4ODY3MjIwNDJhOTIw
NGIwZjI1MjEuLjc5NDg0MjFhYTVlYzdlNTk4MmE3MGUwZGU5OGJiMjgxZDQwYzQ1ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTQ4LDE3ICs0OCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2
ZXJzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTaGlmdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjY3LDE0ICsyNjcsMTQgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2ll
c0NvbnN0cnUKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3Vs
dDo6Q3JlYXRlZE9iamVjdCwgbmV3T2JqZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgdWludDY0
X3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLmFzTnVtYmVyKCkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5hc051bWJlcigp
KTsKIAotICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNw
ZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhlYywgb2JqZWN0LCBsZW5ndGgp
OworICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNp
ZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCBvYmplY3QsIGxlbmd0
aCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVz
UmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAg
IGlmIChVTkxJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1
bHQ6OkV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yODIsMTEgKzI4MiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3BlY2ll
c1Jlc3VsdC5zZWNvbmQpOwogCiAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2NvcGUs
ICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJyYXkgc2l6ZSBp
cyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxlbmd0aCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihsZW5ndGgpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGFy
Z3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoRXhlY1N0YXRlKiBleGVjLCBpbnQgYXJn
dW1lbnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSAwKQpAQCAt
NTkzLDE5ICs1OTMsMTkgQEAgaW5saW5lIGJvb2wgY2FuVXNlRGVmYXVsdEFycmF5Sm9pbkZvclRv
U3RyaW5nKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2Fs
bEZyYW1lLCBTdHJpY3RNb2RlKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCi0gICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmICghY2FuVXNlRGVmYXVs
dEFycmF5Sm9pbkZvclRvU3RyaW5nKHZtLCB0aGlzT2JqZWN0KSkgewogICAgICAgICAvLyAyLiBM
ZXQgZnVuYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0
aG9kIG9mIGFycmF5IHdpdGggYXJndW1lbnQgImpvaW4iLgotICAgICAgICBKU1ZhbHVlIGZ1bmN0
aW9uID0gSlNWYWx1ZSh0aGlzT2JqZWN0KS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+am9p
bik7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3QpLmdldChj
YWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPmpvaW4pOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICAvLyAzLiBJZiBJc0Nh
bGxhYmxlKGZ1bmMpIGlzIGZhbHNlLCB0aGVuIGxldCBmdW5jIGJlIHRoZSBzdGFuZGFyZCBidWls
dC1pbiBtZXRob2QgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAoMTUuMi40LjIpLgpAQCAtNjE4
LDExICs2MTgsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0g
dHJ1ZTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkoY3VzdG9tSm9pbkNhc2UpKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmNsYXNzTmFtZSh0aGlzT2JqZWN0LCB2bSksICJdIikpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
Y2FsbEZyYW1lLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNz
TmFtZSh0aGlzT2JqZWN0LCB2bSksICJdIikpKTsKIAogICAgICAgICAvLyA0LiBSZXR1cm4gdGhl
IHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBw
cm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBs
aXN0LgogICAgICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBD
YWxsVHlwZTo6SG9zdCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1
bmNKb2luKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0
LCAqdm0uZW1wdHlMaXN0KSkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CiAgICAgfQogCiAgICAgQVNTRVJU
KGlzSlNBcnJheSh0aGlzVmFsdWUpKTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc0FycmF5LT5sZW5ndGgoKTsKIAotICAgIFN0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzQXJyYXkpOworICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNBcnJheSk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVl
KCkpOwogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0
dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZh
bHVlKTsKQEAgLTY0OSw3ICs2NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAKICAgICAg
ICAgYm9vbCBzYXdIb2xlcyA9IGZhbHNlOwotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZhc3RK
b2luKCpleGVjLCB0aGlzQXJyYXksIHsgJmNvbW1hLCAxIH0sIGxlbmd0aCwgJnNhd0hvbGVzKTsK
KyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBmYXN0Sm9pbigqY2FsbEZyYW1lLCB0aGlzQXJyYXks
IHsgJmNvbW1hLCAxIH0sIGxlbmd0aCwgJnNhd0hvbGVzKTsKIAogICAgICAgICBpZiAoIXNhd0hv
bGVzICYmIHJlc3VsdCAmJiBpc0pTU3RyaW5nKHJlc3VsdCkgJiYgaXNDb1cpIHsKICAgICAgICAg
ICAgIEFTU0VSVChKU0ltbXV0YWJsZUJ1dHRlcmZseTo6ZnJvbUJ1dHRlcmZseSh0aGlzQXJyYXkt
PmJ1dHRlcmZseSgpKSA9PSBpbW11dGFibGVCdXR0ZXJmbHkpOwpAQCAtNjU5LDY4ICs2NTksNjgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIH0KIAotICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcigqZXhlYywgJywnLCBsZW5ndGgpOwor
ICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcigqY2FsbEZyYW1lLCAnLCcsIGxlbmd0aCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBlbGVt
ZW50ID0gdGhpc0FycmF5LT50cnlHZXRJbmRleFF1aWNrbHkoaSk7CiAgICAgICAgIGlmICghZWxl
bWVudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IHRoaXNBcnJheS0+Z2V0KGV4ZWMsIGkpOwor
ICAgICAgICAgICAgZWxlbWVudCA9IHRoaXNBcnJheS0+Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgfQotICAgICAgICBqb2luZXIuYXBwZW5kKCpleGVjLCBlbGVtZW50KTsKKyAgICAgICAg
am9pbmVyLmFwcGVuZCgqY2FsbEZyYW1lLCBlbGVtZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmV4ZWMpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4o
KmNhbGxGcmFtZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1v
ZGUpOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhl
Yyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZy
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1
ZSgpKTsKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5W
YWx1ZSk7CiAKLSAgICBKU1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoKmV4ZWMsICcsJywgbGVu
Z3RoKTsKKyAgICBKU1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoKmNhbGxGcmFtZSwgJywnLCBs
ZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAjaWYgRU5BQkxFKElOVEwpCi0gICAgQXJnTGlzdCBhcmd1bWVudHMoZXhlYyk7CisgICAg
QXJnTGlzdCBhcmd1bWVudHMoY2FsbEZyYW1lKTsKICNlbmRpZgogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlz
T2JqZWN0LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gdGhp
c09iamVjdC0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChlbGVtZW50LmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBlbGVtZW50ID0ganNFbXB0eVN0cmluZyh2bSk7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24g
PSBlbGVtZW50LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZyk7Cisg
ICAgICAgICAgICBKU1ZhbHVlIGNvbnZlcnNpb25GdW5jdGlvbiA9IGVsZW1lbnQuZ2V0KGNhbGxG
cmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+dG9Mb2NhbGVTdHJpbmcpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEodm0sIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAgaWYg
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAjaWYgRU5BQkxFKElOVEwpCi0gICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGNhbGwoY2FsbEZyYW1lLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgZWxlbWVudCwgYXJndW1lbnRzKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9
IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1l
bnQsICp2bS5lbXB0eUxpc3QpOworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGNhbGxG
cmFtZSwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsICp2
bS5lbXB0eUxpc3QpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZCgqZXhlYywgZWxlbWVudCk7CisgICAgICAgIHN0cmlu
Z0pvaW5lci5hcHBlbmQoKmNhbGxGcmFtZSwgZWxlbWVudCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0pvaW5lci5qb2luKCpleGVj
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmlu
Z0pvaW5lci5qb2luKCpjYWxsRnJhbWUpKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIHNsb3dKb2lu
KEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3RyaW5nKiBzZXBhcmF0
b3IsIHVpbnQ2NF90IGxlbmd0aCkKQEAgLTc3MSwyOCArNzcxLDI4IEBAIHN0YXRpYyBKU1ZhbHVl
IHNsb3dKb2luKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3RyaW5n
KiBzZXBhcmF0CiAgICAgcmV0dXJuIHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2
YWx1ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIFN0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqZWN0KTsKKyAgICBTdHJpbmdSZWN1cnNpb25D
aGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAg
ICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1
ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwog
CiAgICAgLy8gMi4gTGV0IGxlbiBiZSA/IFRvTGVuZ3RoKD8gR2V0KE8sICJsZW5ndGgiKSkuCi0g
ICAgZG91YmxlIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOworICAgIGRvdWJs
ZSBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gSWYgc2Vw
YXJhdG9yIGlzIHVuZGVmaW5lZCwgbGV0IHNlcGFyYXRvciBiZSB0aGUgc2luZ2xlLWVsZW1lbnQg
U3RyaW5nICIsIi4KLSAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY29uc3Qg
TENoYXIgY29tbWEgPSAnLCc7CiAKQEAgLTgwMiwxMTcgKzgwMiwxMTcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICAgICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
dm0sIGNvbW1hKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShzbG93Sm9pbigqZXhlYywgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxl
bmd0aDY0KSkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc2xvd0pvaW4oKmNhbGxGcmFtZSwgdGhpc09iamVjdCwganNTZXBhcmF0b3IsIGxl
bmd0aDY0KSkpOwogICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgdW5zaWduZWRMZW5ndGgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKICAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PGRvdWJsZT4odW5zaWduZWRMZW5ndGgpID09IGxlbmd0aCk7CiAKLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZmFzdEpvaW4oKmV4ZWMsIHRoaXNP
YmplY3QsIHsgJmNvbW1hLCAxIH0sIHVuc2lnbmVkTGVuZ3RoKSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqY2FsbEZyYW1lLCB0
aGlzT2JqZWN0LCB7ICZjb21tYSwgMSB9LCB1bnNpZ25lZExlbmd0aCkpKTsKICAgICB9CiAKICAg
ICAvLyA0LiBMZXQgc2VwIGJlID8gVG9TdHJpbmcoc2VwYXJhdG9yKS4KLSAgICBKU1N0cmluZyog
anNTZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmlu
ZyoganNTZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KFVOTElLRUxZKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8
fCAhY2FuVXNlRmFzdEpvaW4odGhpc09iamVjdCkpKSB7CiAgICAgICAgIHVpbnQ2NF90IGxlbmd0
aDY0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCk7CiAgICAgICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxkb3VibGU+KGxlbmd0aDY0KSA9PSBsZW5ndGgpOwogCi0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0aGlzT2Jq
ZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpjYWxsRnJhbWUsIHRoaXNPYmplY3Qs
IGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKICAgICB9CiAKLSAgICBhdXRvIHZpZXdXaXRoU3Ry
aW5nID0ganNTZXBhcmF0b3ItPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBh
dXRvIHZpZXdXaXRoU3RyaW5nID0ganNTZXBhcmF0b3ItPnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
ZmFzdEpvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIHZpZXdXaXRoU3RyaW5nLnZpZXcsIGxlbmd0aCkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9p
bigqY2FsbEZyYW1lLCB0aGlzT2JqZWN0LCB2aWV3V2l0aFN0cmluZy52aWV3LCBsZW5ndGgpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1BvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1
ZSkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFz
QXJyYXkodGhpc1ZhbHVlKS0+cG9wKGV4ZWMpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGNhbGxGcmFt
ZSkpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGNhbGxGcmFtZSk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGxl
bmd0aCA9PSAwKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcHV0TGVuZ3Ro
KGV4ZWMsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5ndGgpKTsKKyAgICAgICAgcHV0TGVuZ3Ro
KGNhbGxGcmFtZSwgdm0sIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCkpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUg
cmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdGhpc09iai0+Z2V0KGNhbGxGcmFtZSwgbGVuZ3RoIC0gMSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYm9vbCBzdWNjZXNzID0g
dGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgbGVuZ3RoIC0gMSk7CisgICAgYm9vbCBzdWNjZXNzID0gdGhpc09iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgY2FsbEZyYW1lLCBsZW5ndGgg
LSAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwog
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0g
MSkpOworICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5n
dGggLSAxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJh
bWUsIFN0cmljdE1vZGUpOwogCi0gICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAm
JiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsKKyAgICBpZiAoTElLRUxZKGlzSlNBcnJh
eSh0aGlzVmFsdWUpICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAg
ICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIGFycmF5LT5wdXNoSW5saW5lKGV4ZWMsIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKyAgICAgICAgYXJyYXktPnB1c2hJbmxpbmUoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihhcnJheS0+bGVuZ3RoKCkpKTsKICAgICB9CiAgICAgCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRvTGVuZ3RoKGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpOyBuKyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBu
IDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7IG4rKykgewogICAgICAgICAvLyBDaGVjayBm
b3IgaW50ZWdlciBvdmVyZmxvdzsgd2hlcmUgc2FmZSB3ZSBjYW4gZG8gYSBmYXN0IHB1dCBieSBp
bmRleC4KICAgICAgICAgaWYgKGxlbmd0aCArIG4gPj0gbGVuZ3RoKQotICAgICAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAr
IG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNP
YmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBjYWxsRnJhbWUsIGxlbmd0
aCArIG4sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2
NF90PihuKSkudG9XVEZTdHJpbmcoZXhlYykpOwotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUodm0pLT5wdXQodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChuKSwgc2xvdCk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRf
dD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhjYWxsRnJh
bWUpKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRoaXNPYmos
IGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KG4p
LCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBuZXdMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkpOworICAgIEpTVmFsdWUgbmV3TGVuZ3RoKHN0YXRpY19jYXN0PGludDY0
X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBwdXRMZW5ndGgoZXhlYywgdm0sIHRo
aXNPYmosIG5ld0xlbmd0aCk7CisgICAgcHV0TGVuZ3RoKGNhbGxGcmFtZSwgdm0sIHRoaXNPYmos
IG5ld0xlbmd0aCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdMZW5ndGgpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
UmV2ZXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5n
dGgoZXhlYywgdGhpc09iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2Fs
bEZyYW1lLCB0aGlzT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIHRoaXNPYmplY3QtPmVuc3VyZVdyaXRhYmxlKHZtKTsKQEAg
LTk1Nyw0MiArOTU3LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBtaWRkbGUgPSBsZW5n
dGggLyAyOwogICAgIGZvciAodW5zaWduZWQgbG93ZXIgPSAwOyBsb3dlciA8IG1pZGRsZTsgbG93
ZXIrKykgewogICAgICAgICB1bnNpZ25lZCB1cHBlciA9IGxlbmd0aCAtIGxvd2VyIC0gMTsKLSAg
ICAgICAgYm9vbCBsb3dlckV4aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGxv
d2VyKTsKKyAgICAgICAgYm9vbCBsb3dlckV4aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5
KGNhbGxGcmFtZSwgbG93ZXIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgSlNWYWx1ZSBsb3dlclZhbHVlOwogICAgICAgICBp
ZiAobG93ZXJFeGlzdHMpIHsKLSAgICAgICAgICAgIGxvd2VyVmFsdWUgPSB0aGlzT2JqZWN0LT5n
ZXQoZXhlYywgbG93ZXIpOworICAgICAgICAgICAgbG93ZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdl
dChjYWxsRnJhbWUsIGxvd2VyKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCB1cHBlckV4
aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHVwcGVyKTsKKyAgICAgICAgYm9v
bCB1cHBlckV4aXN0cyA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwgdXBwZXIp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgSlNWYWx1ZSB1cHBlclZhbHVlOwogICAgICAgICBpZiAodXBwZXJFeGlzdHMpIHsK
LSAgICAgICAgICAgIHVwcGVyVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdXBwZXIpOwor
ICAgICAgICAgICAgdXBwZXJWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChjYWxsRnJhbWUsIHVwcGVy
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHVwcGVyRXhpc3RzKSB7Ci0gICAgICAgICAg
ICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGxvd2VyLCB1cHBlclZhbHVlLCB0
cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1l
LCBsb3dlciwgdXBwZXJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGxvd2VyKTsKKyAgICAgICAgICAgIGJvb2wg
c3VjY2VzcyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmplY3QsIGNhbGxGcmFtZSwgbG93ZXIpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9y
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChsb3dlckV4aXN0cykgewotICAgICAgICAgICAg
dGhpc09iamVjdC0+cHV0QnlJbmRleElubGluZShleGVjLCB1cHBlciwgbG93ZXJWYWx1ZSwgdHJ1
ZSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4SW5saW5lKGNhbGxGcmFtZSwg
dXBwZXIsIGxvd2VyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCB1cHBlcik7CisgICAgICAgICAgICBib29sIHN1
Y2Nlc3MgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIHVwcGVyKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCFzdWNjZXNzKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTEwMDAsNjEgKzEwMDAsNjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZy
YW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
dG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChsZW5ndGggPT0gMCkgewogICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwg
anNOdW1iZXIobGVuZ3RoKSk7CisgICAgICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlz
T2JqLCBqc051bWJlcihsZW5ndGgpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRoaXNPYmotPmdl
dEluZGV4KGV4ZWMsIDApOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdGhpc09iai0+Z2V0SW5kZXgo
Y2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGV4ZWMsIHRo
aXNPYmosIDAsIDEsIDAsIGxlbmd0aCk7CisgICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNoaWZ0PihjYWxsRnJhbWUsIHRoaXNPYmosIDAsIDEsIDAsIGxlbmd0aCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0g
MSkpOworICAgIHB1dExlbmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBqc051bWJlcihsZW5n
dGggLSAxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5z
bGljZQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZy
YW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNP
YmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhlYywgdGhpc09iaik7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdG9MZW5ndGgoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgYmVnaW4gPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7CisgICAgdW5zaWduZWQg
YmVnaW4gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGNhbGxGcmFtZSwgMCwg
bGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIHVuc2ln
bmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMSwgbGVu
Z3RoLCBsZW5ndGgpOworICAgIHVuc2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJv
bVN0YXJ0T3JFbmQoY2FsbEZyYW1lLCAxLCBsZW5ndGgsIGxlbmd0aCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoZW5kIDwgYmVnaW4pCiAgICAgICAgIGVu
ZCA9IGJlZ2luOwogCi0gICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2Jq
ZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCB0aGlzT2Jq
LCBlbmQgLSBiZWdpbik7CisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpT
T2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShjYWxsRnJhbWUs
IHRoaXNPYmosIGVuZCAtIGJlZ2luKTsKICAgICAvLyBXZSBjYW4gb25seSBnZXQgYW4gZXhjZXB0
aW9uIGlmIHdlIGNhbGwgc29tZSB1c2VyIGZ1bmN0aW9uLgogICAgIEVYQ0VQVElPTl9BU1NFUlQo
ISFzY29wZS5leGNlcHRpb24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29u
c3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3Vs
dC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmly
c3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNP
YmopICYmIGxlbmd0aCA9PSB0b0xlbmd0aChleGVjLCB0aGlzT2JqKTsKKyAgICBib29sIG9rVG9E
b0Zhc3RQYXRoID0gc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpGYXN0UGF0aCAmJiBpc0pTQXJyYXkodGhpc09iaikgJiYgbGVuZ3RoID09IHRvTGVuZ3RoKGNh
bGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICBpZiAoTElLRUxZKG9rVG9Eb0Zhc3RQYXRoKSkgewotICAgICAgICBpZiAoSlNBcnJheSog
cmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+ZmFzdFNsaWNlKCpleGVjLCBiZWdpbiwgZW5kIC0g
YmVnaW4pKQorICAgICAgICBpZiAoSlNBcnJheSogcmVzdWx0ID0gYXNBcnJheSh0aGlzT2JqKS0+
ZmFzdFNsaWNlKCpjYWxsRnJhbWUsIGJlZ2luLCBlbmQgLSBiZWdpbikpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0xMDYyLDcgKzEwNjIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25z
dHJ1Y3RSZXN1bHQ6OkNyZWF0ZWRPYmplY3QpCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1
bHQuc2Vjb25kOwogICAgIGVsc2UgewotICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIG51bGxwdHIsIGVuZCAtIGJlZ2luKTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIGVuZCAtIGJlZ2luKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAKQEAgLTEwNzIsMzQgKzEw
NzIsMzQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNl
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIG4gPSAwOwogICAgIGZvciAodW5zaWdu
ZWQgayA9IGJlZ2luOyBrIDwgZW5kOyBrKyssIG4rKykgewotICAgICAgICBKU1ZhbHVlIHYgPSBn
ZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBrKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJv
cGVydHkoY2FsbEZyYW1lLCB0aGlzT2JqLCBrKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHYpIHsKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0SW5kZXgoZXhlYywgbiwgdiwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7Cisg
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgbiwgdiwgMCwgUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAgICAgfQogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICBzZXRMZW5ndGgoZXhlYywgdm0sIHJlc3VsdCwgbik7CisgICAgc2V0TGVuZ3RoKGNhbGxGcmFt
ZSwgdm0sIHJlc3VsdCwgbik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgLy8gMTUuNC40LjEyCiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVj
dCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmopOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3Ro
KGNhbGxGcmFtZSwgdGhpc09iaik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAg
ICAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVz
UmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5KGV4ZWMsIHRoaXNPYmosIDApOworICAgIGlm
ICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAgc3RkOjpwYWlyPFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25z
dHJ1Y3RBcnJheShjYWxsRnJhbWUsIHRoaXNPYmosIDApOwogICAgICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2ll
c0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzcGVj
aWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpCiAg
ICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTExMDgsMjMgKzExMDgsMjMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXND
b25zdHJ1Y3RSZXN1bHQ6OkNyZWF0ZWRPYmplY3QpCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVj
aWVzUmVzdWx0LnNlY29uZDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpOworICAgICAgICAgICAgcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzZXRMZW5ndGgoZXhlYywgdm0sIHJlc3VsdCwgMCk7CisgICAgICAgIHNldExlbmd0
aChjYWxsRnJhbWUsIHZtLCByZXN1bHQsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICBzZXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmosIGxlbmd0aCk7CisgICAgICAgIHNldExl
bmd0aChjYWxsRnJhbWUsIHZtLCB0aGlzT2JqLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYWN0dWFsU3RhcnQg
PSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7Cisg
ICAgdW5zaWduZWQgYWN0dWFsU3RhcnQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9y
RW5kKGNhbGxGcmFtZSwgMCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIGFjdHVhbERlbGV0ZUNvdW50ID0g
bGVuZ3RoIC0gYWN0dWFsU3RhcnQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEp
IHsKLSAgICAgICAgZG91YmxlIGRlbGV0ZUNvdW50ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MSkudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+
IDEpIHsKKyAgICAgICAgZG91YmxlIGRlbGV0ZUNvdW50ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChkZWxldGVDb3VudCA8
IDApCiAgICAgICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7CkBAIC0xMTM0LDgzICsxMTM0
LDgzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVsZXRlQ291bnQpOwogICAgIH0KIAotICAgIHN0ZDo6cGFpcjxTcGVj
aWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29u
c3RydWN0QXJyYXkoZXhlYywgdGhpc09iaiwgYWN0dWFsRGVsZXRlQ291bnQpOworICAgIHN0ZDo6
cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBz
cGVjaWVzQ29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCB0aGlzT2JqLCBhY3R1YWxEZWxldGVDb3Vu
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IChzcGVjaWVz
UmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikpOwogICAg
IGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2Vw
dGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAog
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBudWxscHRyOwotICAgIGJvb2wgb2tUb0RvRmFzdFBhdGgg
PSBzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRo
ICYmIGlzSlNBcnJheSh0aGlzT2JqKSAmJiBsZW5ndGggPT0gdG9MZW5ndGgoZXhlYywgdGhpc09i
aik7CisgICAgYm9vbCBva1RvRG9GYXN0UGF0aCA9IHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3Bl
Y2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgaXNKU0FycmF5KHRoaXNPYmopICYmIGxl
bmd0aCA9PSB0b0xlbmd0aChjYWxsRnJhbWUsIHRoaXNPYmopOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChMSUtFTFkob2tUb0RvRmFz
dFBhdGgpKQotICAgICAgICByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmV4
ZWMsIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCk7CisgICAgICAgIHJlc3VsdCA9IGFz
QXJyYXkodGhpc09iaiktPmZhc3RTbGljZSgqY2FsbEZyYW1lLCBhY3R1YWxTdGFydCwgYWN0dWFs
RGVsZXRlQ291bnQpOwogCiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgaWYgKHNwZWNpZXNS
ZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6Q3JlYXRlZE9iamVjdCkKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgYWN0dWFsRGVsZXRlQ291bnQpOworICAgICAgICAg
ICAgcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQp
LCBhY3R1YWxEZWxldGVDb3VudCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
IHsKLSAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYWN0dWFsRGVsZXRl
Q291bnQ7ICsraykgewotICAgICAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywg
dGhpc09iaiwgayArIGFjdHVhbFN0YXJ0KTsKKyAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFBy
b3BlcnR5KGNhbGxGcmFtZSwgdGhpc09iaiwgayArIGFjdHVhbFN0YXJ0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCF2KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaywgdiwgMCwgUHV0RGlyZWN0SW5kZXhT
aG91bGRUaHJvdyk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFt
ZSwgaywgdiwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIHVuc2lnbmVkIGl0ZW1Db3VudCA9IHN0ZDo6bWF4PGludD4oZXhlYy0+YXJndW1l
bnRDb3VudCgpIC0gMiwgMCk7CisgICAgdW5zaWduZWQgaXRlbUNvdW50ID0gc3RkOjptYXg8aW50
PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOwogICAgIGlmIChpdGVtQ291bnQg
PCBhY3R1YWxEZWxldGVDb3VudCkgewotICAgICAgICBzaGlmdDxKU0FycmF5OjpTaGlmdENvdW50
Rm9yU3BsaWNlPihleGVjLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291bnQs
IGl0ZW1Db3VudCwgbGVuZ3RoKTsKKyAgICAgICAgc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNwbGljZT4oY2FsbEZyYW1lLCB0aGlzT2JqLCBhY3R1YWxTdGFydCwgYWN0dWFsRGVsZXRlQ291
bnQsIGl0ZW1Db3VudCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChpdGVtQ291bnQgPiBhY3R1YWxE
ZWxldGVDb3VudCkgewotICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxp
Y2U+KGV4ZWMsIHRoaXNPYmosIGFjdHVhbFN0YXJ0LCBhY3R1YWxEZWxldGVDb3VudCwgaXRlbUNv
dW50LCBsZW5ndGgpOworICAgICAgICB1bnNoaWZ0PEpTQXJyYXk6OlNoaWZ0Q291bnRGb3JTcGxp
Y2U+KGNhbGxGcmFtZSwgdGhpc09iaiwgYWN0dWFsU3RhcnQsIGFjdHVhbERlbGV0ZUNvdW50LCBp
dGVtQ291bnQsIGxlbmd0aCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgaXRl
bUNvdW50OyArK2spIHsKLSAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElubGluZShleGVjLCBr
ICsgYWN0dWFsU3RhcnQsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAyKSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoY2FsbEZyYW1lLCBrICsgYWN0dWFsU3Rh
cnQsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAg
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBzZXRMZW5ndGgoZXhlYywgdm0sIHRoaXNPYmos
IGxlbmd0aCAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaXRlbUNvdW50KTsKKyAgICBzZXRMZW5ndGgo
Y2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgbGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVt
Q291bnQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQu
NC4xMwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICBkb3VibGUgZG91YmxlTGVuZ3RoID0gdG9MZW5n
dGgoZXhlYywgdGhpc09iaik7CisgICAgZG91YmxlIGRvdWJsZUxlbmd0aCA9IHRvTGVuZ3RoKGNh
bGxGcmFtZSwgdGhpc09iaik7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZG91YmxlTGVuZ3RoOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
dW5zaWduZWQgbnJBcmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIG5y
QXJncyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChuckFyZ3MpIHsKICAg
ICAgICAgaWYgKFVOTElLRUxZKGRvdWJsZUxlbmd0aCArIHN0YXRpY19jYXN0PGRvdWJsZT4obnJB
cmdzKSA+IG1heFNhZmVJbnRlZ2VyKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJDYW5ub3Qgc2hpZnQgdG8gb2Zmc2V0IGdyZWF0ZXIgdGhhbiAo
MiAqKiA1MykgLSAxIl9zKTsKLSAgICAgICAgdW5zaGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9y
U2hpZnQ+KGV4ZWMsIHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYW5ub3Qgc2hpZnQg
dG8gb2Zmc2V0IGdyZWF0ZXIgdGhhbiAoMiAqKiA1MykgLSAxIl9zKTsKKyAgICAgICAgdW5zaGlm
dDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGNhbGxGcmFtZSwgdGhpc09iaiwgMCwgMCwg
bnJBcmdzLCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJn
czsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgaywgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0aGlzT2JqLT5wdXRCeUlu
ZGV4SW5saW5lKGNhbGxGcmFtZSwgaywgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKSwg
dHJ1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIH0KICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGxlbmd0aCArIG5yQXJn
cyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHB1dExlbmd0aChleGVjLCB2bSwgdGhpc09i
aiwgcmVzdWx0KTsKKyAgICBwdXRMZW5ndGgoY2FsbEZyYW1lLCB2bSwgdGhpc09iaiwgcmVzdWx0
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTEzMTUsMzYg
KzEzMTUsMzYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGZhc3RJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBKU0FycmF5KiBhcnJheSwgdW5zaWcKICAgICB9CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQu
NC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlz
KGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2Rl
KS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChleGVj
LCB0aGlzT2JqZWN0KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0b0xlbmd0aChjYWxsRnJhbWUs
IHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhl
YywgMSwgbGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoY2FsbEZyYW1lLCAxLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc09iamVjdCkpIHsKLSAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBmYXN0SW5kZXhPZjxJbmRleE9mRGlyZWN0aW9uOjpGb3J3YXJkPihleGVjLCB2
bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hFbGVtZW50LCBpbmRleCk7Cisg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZmFzdEluZGV4T2Y8SW5kZXhPZkRpcmVjdGlvbjo6Rm9y
d2FyZD4oY2FsbEZyYW1lLCB2bSwgYXNBcnJheSh0aGlzT2JqZWN0KSwgbGVuZ3RoLCBzZWFyY2hF
bGVtZW50LCBpbmRleCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQogCiAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7
Ci0gICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmplY3QsIGluZGV4
KTsKKyAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJvcGVydHkoY2FsbEZyYW1lLCB0aGlzT2JqZWN0
LCBpbmRleCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgIGlmICghZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBib29sIGlzRXF1YWwg
PSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBzZWFyY2hFbGVtZW50LCBlKTsKKyAgICAgICAg
Ym9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoY2FsbEZyYW1lLCBzZWFyY2hFbGVt
ZW50LCBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAg
ICAgaWYgKGlzRXF1YWwpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGluZGV4KSk7CkBAIC0xMzUzLDI0ICsxMzUzLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40
LjE1Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGV4ZWMs
IHRoaXNPYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvTGVuZ3RoKGNhbGxGcmFtZSwg
dGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCAhbGVu
Z3RoKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAg
ICB1bnNpZ25lZCBpbmRleCA9IGxlbmd0aCAtIDE7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA+PSAyKSB7Ci0gICAgICAgIEpTVmFsdWUgZnJvbVZhbHVlID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMSk7Ci0gICAgICAgIGRvdWJsZSBmcm9tRG91YmxlID0gZnJvbVZhbHVlLnRvSW50
ZWdlcihleGVjKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewor
ICAgICAgICBKU1ZhbHVlIGZyb21WYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MSk7CisgICAgICAgIGRvdWJsZSBmcm9tRG91YmxlID0gZnJvbVZhbHVlLnRvSW50ZWdlcihjYWxs
RnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICBpZiAoZnJvbURvdWJsZSA8IDApIHsKICAgICAgICAgICAgIGZyb21Eb3VibGUgKz0gbGVuZ3Ro
OwpAQCAtMTM4MSwxMCArMTM4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnJvbURvdWJsZSk7CiAgICAgfQogCi0gICAgSlNW
YWx1ZSBzZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzZWFy
Y2hFbGVtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAogICAgIGlmIChpc0pTQXJyYXko
dGhpc09iamVjdCkpIHsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBmYXN0SW5kZXhPZjxJbmRl
eE9mRGlyZWN0aW9uOjpCYWNrd2FyZD4oZXhlYywgdm0sIGFzQXJyYXkodGhpc09iamVjdCksIGxl
bmd0aCwgc2VhcmNoRWxlbWVudCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZh
c3RJbmRleE9mPEluZGV4T2ZEaXJlY3Rpb246OkJhY2t3YXJkPihjYWxsRnJhbWUsIHZtLCBhc0Fy
cmF5KHRoaXNPYmplY3QpLCBsZW5ndGgsIHNlYXJjaEVsZW1lbnQsIGluZGV4KTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzOTIsMTEgKzEz
OTIsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJ
bmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGRvIHsKICAgICAgICAgQVNTRVJUKGluZGV4
IDwgbGVuZ3RoKTsKLSAgICAgICAgSlNWYWx1ZSBlID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09i
amVjdCwgaW5kZXgpOworICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShjYWxsRnJhbWUs
IHRoaXNPYmplY3QsIGluZGV4KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGJv
b2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIHNlYXJjaEVsZW1lbnQsIGUp
OworICAgICAgICBib29sIGlzRXF1YWwgPSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUs
IHNlYXJjaEVsZW1lbnQsIGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgICAgICBpZiAoaXNFcXVhbCkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKQEAgLTE1MDAsMTMgKzE1MDAsMTMgQEAgQUxXQVlTX0lO
TElORSB2b2lkIGNvcHlFbGVtZW50cyhUKiBidWZmZXIsIHVuc2lnbmVkIG9mZnNldCwgdm9pZCog
c291cmNlLCB1bnNpZ24KICAgICAgICAgY2xlYXJFbGVtZW50PFQ+KGJ1ZmZlcltpICsgb2Zmc2V0
XSk7CiB9OwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRl
RnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlYy0+
YXJndW1lbnRDb3VudCgpID09IDIpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNT
RVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDIpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNBcnJheSogZmlyc3RBcnJheSA9IGpzQ2FzdDxKU0Fy
cmF5Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgCiAgICAgLy8gVGhp
cyBjb2RlIGFzc3VtZXMgdGhhdCBuZWl0aGVyIGFycmF5IGhhcyBzZXQgU3ltYm9sLmlzQ29uY2F0
U3ByZWFkYWJsZS4gSWYgdGhlIGZpcnN0IGFycmF5CiAgICAgLy8gaGFzIGluZGV4ZWQgYWNjZXNz
b3JzIHRoZW4gb25lIG9mIHRob3NlIGFjY2Vzc29ycyBtaWdodCBjaGFuZ2UgdGhlIHZhbHVlIG9m
IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUKQEAgLTE1MTUsMTQgKzE1MTUsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHko
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKIAogICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdGhlIHNwZWNpZXMgY29uc3RydWN0b3IgaGVy
ZSBzaW5jZSBjaGVja2luZyBpdCBpbiB0aGUgSlMgd3JhcHBlciBpcyB0b28gZXhwZW5zaXZlIGZv
ciB0aGUgbm9uLW9wdGltaXppbmcgdGllcnMuCi0gICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dh
dGNocG9pbnRJc1ZhbGlkKGV4ZWMsIGZpcnN0QXJyYXkpOworICAgIGJvb2wgaXNWYWxpZCA9IHNw
ZWNpZXNXYXRjaHBvaW50SXNWYWxpZChjYWxsRnJhbWUsIGZpcnN0QXJyYXkpOwogICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKFVOTElLRUxZKCFpc1ZhbGlkKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBKU1ZhbHVlIHNlY29u
ZCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgc2Vjb25kID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBpZiAoIWlzSlNBcnJheShzZWNvbmQp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbmNhdEFwcGVuZE9uZShleGVj
LCB2bSwgZmlyc3RBcnJheSwgc2Vjb25kKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY29uY2F0QXBwZW5kT25lKGNhbGxGcmFtZSwgdm0sIGZpcnN0QXJyYXksIHNlY29uZCkp
OwogCiAgICAgSlNBcnJheSogc2Vjb25kQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KHNlY29uZCk7
CiAgICAgCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Y2hlY2tlZFJlc3VsdFNpemUgKz0gc2Vjb25kQXJyYXlTaXplOwogCiAgICAgaWYgKFVOTElLRUxZ
KGNoZWNrZWRSZXN1bHRTaXplLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICB9CiAKQEAgLTE1NDUsMTQgKzE1NDUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAg
IEluZGV4aW5nVHlwZSBzZWNvbmRUeXBlID0gc2Vjb25kQXJyYXktPmluZGV4aW5nVHlwZSgpOwog
ICAgIEluZGV4aW5nVHlwZSB0eXBlID0gZmlyc3RBcnJheS0+bWVyZ2VJbmRleGluZ1R5cGVGb3JD
b3B5aW5nKHNlY29uZFR5cGUpOwogICAgIGlmICh0eXBlID09IE5vbkFycmF5IHx8ICFmaXJzdEFy
cmF5LT5jYW5GYXN0Q29weSh2bSwgc2Vjb25kQXJyYXkpIHx8IHJlc3VsdFNpemUgPj0gTUlOX1NQ
QVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIHJlc3VsdFNpemUpOworICAgICAgICBKU0FycmF5KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgbnVsbHB0ciwgcmVzdWx0U2l6
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgICAgIGJvb2wgc3VjY2VzcyA9IG1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0
LCAwLCBmaXJzdEFycmF5LCBmaXJzdEFycmF5U2l6ZSk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9
IG1vdmVFbGVtZW50cyhjYWxsRnJhbWUsIHZtLCByZXN1bHQsIDAsIGZpcnN0QXJyYXksIGZpcnN0
QXJyYXlTaXplKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkg
PT0gc3VjY2Vzcyk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpCiAgICAgICAgICAg
ICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICAgICAgc3VjY2VzcyA9IG1vdmVFbGVtZW50
cyhleGVjLCB2bSwgcmVzdWx0LCBmaXJzdEFycmF5U2l6ZSwgc2Vjb25kQXJyYXksIHNlY29uZEFy
cmF5U2l6ZSk7CisgICAgICAgIHN1Y2Nlc3MgPSBtb3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwg
cmVzdWx0LCBmaXJzdEFycmF5U2l6ZSwgc2Vjb25kQXJyYXksIHNlY29uZEFycmF5U2l6ZSk7CiAg
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpID09IHN1Y2Nlc3MpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKQogICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CkBAIC0xNTYwLDE2ICsxNTYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAotICAg
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5
cGUpOworICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24odHlwZSk7CiAgICAgaWYg
KFVOTElLRUxZKGhhc0FueUFycmF5U3RvcmFnZShyZXN1bHRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCi0gICAg
QVNTRVJUKCFsZXhpY2FsR2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpOworICAgIEFT
U0VSVCghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpOwogICAgIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUgaW5pdGlhbGl6YXRpb25TY29wZSh2bSk7CiAgICAgSlNBcnJheSogcmVz
dWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoaW5pdGlhbGl6
YXRpb25TY29wZSwgcmVzdWx0U3RydWN0dXJlLCByZXN1bHRTaXplKTsKICAgICBpZiAoVU5MSUtF
TFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTE1ODgsMjQgKzE1ODcs
MjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmND
b25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJp
dmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAzKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPT0gMyk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNBcnJheSogcmVzdWx0QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICBKU0FycmF5KiBvdGhlckFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAgSlNWYWx1ZSBzdGFy
dFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNBcnJheSogcmVzdWx0
QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIEpTQXJyYXkqIG90aGVyQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgQVNTRVJUKHN0YXJ0VmFsdWUuaXNVSW50MzJB
c0FueUludCgpKTsKICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gc3RhcnRWYWx1ZS5hc1VJbnQz
MkFzQW55SW50KCk7Ci0gICAgYm9vbCBzdWNjZXNzID0gcmVzdWx0QXJyYXktPmFwcGVuZE1lbWNw
eShleGVjLCB2bSwgc3RhcnRJbmRleCwgb3RoZXJBcnJheSk7CisgICAgYm9vbCBzdWNjZXNzID0g
cmVzdWx0QXJyYXktPmFwcGVuZE1lbWNweShjYWxsRnJhbWUsIHZtLCBzdGFydEluZGV4LCBvdGhl
ckFycmF5KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3Vj
Y2Vzcyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIG1vdmVFbGVtZW50cyhleGVjLCB2
bSwgcmVzdWx0QXJyYXksIHN0YXJ0SW5kZXgsIG90aGVyQXJyYXksIG90aGVyQXJyYXktPmxlbmd0
aCgpKTsKKyAgICBtb3ZlRWxlbWVudHMoY2FsbEZyYW1lLCB2bSwgcmVzdWx0QXJyYXksIHN0YXJ0
SW5kZXgsIG90aGVyQXJyYXksIG90aGVyQXJyYXktPmxlbmd0aCgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAppbmRleCA3NWFjOWQyYWQ0YWRhNmUzODNhZmQ5
NDgwNTU0ZTRmODQ2NmU4NGZiLi42YjJkZjYzYWViZDFiMTYwNzI4YjU1YjgwNGQxOGY2Njc1OWM3
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmgKQEAgLTUwLDEwICs1MCwxMCBAQCBjbGFzcyBBcnJheVByb3RvdHlwZSBmaW5hbCA6IHB1Ymxp
YyBKU0FycmF5IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
KTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGVj
aWVzQ3JlYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1ZhbHVlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBl
bmRNZW1jcHkoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU3BlY2llc0NyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBjNzc4
YTAwYzg5MGE5OGFjNDJlZDBhYjA4MGQ5ZjY0NzExOTNhN2MwLi43YjhmYWFiZDAzYzllY2RjYjUx
NjNjZTYzNWE0MTZiNGVhOWJiZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDE2ICsz
NiwxNiBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKSB9
OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywg
anNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cisg
ICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworICAgIEFyZ0xpc3QgYXJncyhjYWxs
RnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmMpKTsKIH0KIAogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCmluZGV4IDlhMzkzODc2ZThlMzUzMWViMjk3YjJhNGM1NDI2YjUwODdi
MDg1MmQuLjhmN2E4MmQxZDIwNTk0MzdjMmJhNjFhNjEyYTE2YmZlNGMxYjE3YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxG
dW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFy
Z3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKKyAgICBBcmdM
aXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEZ1bmN0aW9uKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkFzeW5jR2VuZXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywg
anNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJh
dG9yKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOwogfQogCiBBc3luY0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCAzNjhlYThmYTZjY2I5NzZlMWM1
MWQ4ZTBiNDc2NTZmZjI1OWQzMjA2Li5hNmQwOTc0NTdlOTQzOTMyMzIyMDA0NzY5YTkyYjk1MTRh
NTljMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNz
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcApAQCAtNTIsNyArNTIsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoQXRvbWljc09iamVjdCk7CiAgICAgbWFjcm8oeG9yLCBYb3IsIDMpCiAKICNkZWZp
bmUgREVDTEFSRV9GVU5DX1BST1RPKGxvd2VyTmFtZSwgdXBwZXJOYW1lLCBjb3VudCkgICAgICAg
ICAgICAgICAgIFwKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5j
ICMjIHVwcGVyTmFtZShFeGVjU3RhdGUqKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGF0b21pY3NGdW5jICMjIHVwcGVyTmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogRk9SX0VBQ0hfQVRPTUlDU19GVU5DKERFQ0xBUkVfRlVOQ19QUk9UTykKICN1bmRlZiBERUNM
QVJFX0ZVTkNfUFJPVE8KIApAQCAtMTg2LDEyICsxODYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgYXRv
bWljT3BlcmF0aW9uV2l0aEFyZ3MoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTVmFs
dWUqIGEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLUVuY29kZWRKU1ZhbHVlIGF0b21p
Y09wZXJhdGlvbldpdGhBcmdzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRnVuYyYgZnVuYykKK0Vu
Y29kZWRKU1ZhbHVlIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBGdW5jJiBmdW5jKQogewogICAg
IEpTVmFsdWUgYXJnc1syICsgRnVuYzo6bnVtRXh0cmFBcmdzXTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAyICsgRnVuYzo6bnVtRXh0cmFBcmdzOyBpLS07KQotICAgICAgICBhcmdzW2ldID0gZXhl
Yy0+YXJndW1lbnQoaSk7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMt
PnZtKCksIGV4ZWMsIGFyZ3MsIGZ1bmMpOworICAgICAgICBhcmdzW2ldID0gY2FsbEZyYW1lLT5h
cmd1bWVudChpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoZ2xvYmFsT2Jq
ZWN0LT52bSgpLCBjYWxsRnJhbWUsIGFyZ3MsIGZ1bmMpOwogfQogCiBzdHJ1Y3QgQWRkRnVuYyB7
CkBAIC0zMTMsODAgKzMxMyw4MCBAQCBFbmNvZGVkSlNWYWx1ZSBpc0xvY2tGcmVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBhcmcpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQWRkKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNBZGQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0
b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIEFkZEZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21p
Y09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBBZGRGdW5jKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQW5kKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNBbmQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIEFuZEZ1bmMoKSk7CisgICAgcmV0
dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBBbmRG
dW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jQ29t
cGFyZUV4Y2hhbmdlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXRvbWljc0Z1bmNDb21wYXJlRXhjaGFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldp
dGhBcmdzKGV4ZWMsIENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09w
ZXJhdGlvbldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBDb21wYXJlRXhjaGFuZ2VG
dW5jKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jRXhj
aGFuZ2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9t
aWNzRnVuY0V4Y2hhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBF
eGNoYW5nZUZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBFeGNoYW5nZUZ1bmMoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNJc0xvY2tGcmVlKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNJc0xvY2tGcmVlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGlzTG9ja0ZyZWUo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBpc0xvY2tGcmVlKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXRvbWljc0Z1bmNMb2FkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXRvbWljc0Z1bmNMb2FkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRo
QXJncyhleGVjLCBMb2FkRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFy
Z3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIExvYWRGdW5jKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jT3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY09yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBhdG9taWNPcGVy
YXRpb25XaXRoQXJncyhleGVjLCBPckZ1bmMoKSk7CisgICAgcmV0dXJuIGF0b21pY09wZXJhdGlv
bldpdGhBcmdzKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBPckZ1bmMoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNTdG9yZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jU3RvcmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGF0b21pY09wZXJhdGlvbldpdGhBcmdzKGV4ZWMsIFN0b3JlRnVuYygpKTsKKyAgICByZXR1cm4g
YXRvbWljT3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIFN0b3JlRnVu
YygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1N1YihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5j
U3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhleGVjLCBTdWJGdW5jKCkpOwor
ICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyhjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgU3ViRnVuYygpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNz
RnVuY1dhaXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
dG9taWNzRnVuY1dhaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIAotICAgIEpTSW50MzJBcnJheSogdHlwZWRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNJ
bnQzMkFycmF5Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU0ludDMyQXJyYXkqIHR5
cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIXR5cGVkQXJyYXkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3QgYmUgYW4gSW50
MzJBcnJheS4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAi
VHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IGJlIGFuIEludDMyQXJyYXkuIl9zKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAg
CiAgICAgaWYgKCF0eXBlZEFycmF5LT5pc1NoYXJlZCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IHdyYXAgYSBT
aGFyZWRBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdhaXQvd2FrZSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJh
eUJ1ZmZlci4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRhdGVkQWNjZXNz
SW5kZXgodm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCB0eXBlZEFycmF5KTsKKyAgICB1bnNp
Z25lZCBhY2Nlc3NJbmRleCA9IHZhbGlkYXRlZEFjY2Vzc0luZGV4KHZtLCBjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSksIHR5cGVkQXJyYXkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCiAgICAgaW50
MzJfdCogcHRyID0gdHlwZWRBcnJheS0+dHlwZWRWZWN0b3IoKSArIGFjY2Vzc0luZGV4OwogICAg
IAotICAgIGludDMyX3QgZXhwZWN0ZWRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIo
ZXhlYyk7CisgICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgy
KS50b0ludDMyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKLSAgICBkb3VibGUgdGltZW91dElu
TWlsbGlzZWNvbmRzID0gZXhlYy0+YXJndW1lbnQoMykudG9OdW1iZXIoZXhlYyk7CisgICAgZG91
YmxlIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMykudG9OdW1i
ZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgIAogICAgIGlmICghdm0ubV90eXBlZEFycmF5Q29u
dHJvbGxlci0+aXNBdG9taWNzV2FpdEFsbG93ZWRPbkN1cnJlbnRUaHJlYWQoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkF0b21pY3Mud2FpdCBjYW5ub3QgYmUgY2Fs
bGVkIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkLiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJBdG9taWNzLndhaXQgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRo
ZSBjdXJyZW50IHRocmVhZC4iX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKQEAgLTM5OCw3ICszOTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGF0b21pY3NGdW5jV2FpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Ly8gICAgIGEuIExldCBxIGJlID8gVG9OdW1iZXIodGltZW91dCkuCiAgICAgLy8gICAgIGIuIElm
IHEgaXMgTmFOIHRoZW4gbGV0IHQgYmUgK2luZiwgb3RoZXJ3aXNlIGxldCB0IGJlIG1heCgwLCBx
KS4KICAgICAvLwotICAgIC8vIGV4ZWMtPmFyZ3VtZW50KDMpIHJldHVybnMgdW5kZWZpbmVkIGlm
IGl0J3Mgbm90IHByb3ZpZGVkIGFuZCBUb051bWJlcih1bmRlZmluZWQpIHJldHVybnMgTmFOLAor
ICAgIC8vIGNhbGxGcmFtZS0+YXJndW1lbnQoMykgcmV0dXJucyB1bmRlZmluZWQgaWYgaXQncyBu
b3QgcHJvdmlkZWQgYW5kIFRvTnVtYmVyKHVuZGVmaW5lZCkgcmV0dXJucyBOYU4sCiAgICAgLy8g
c28gTmFOIGlzIHRoZSBvbmx5IHNwZWNpYWwgY2FzZS4KICAgICBpZiAoIXN0ZDo6aXNuYW4odGlt
ZW91dCkpCiAgICAgICAgIHRpbWVvdXQgPSBzdGQ6Om1heCgwX3MsIHRpbWVvdXQpOwpAQCAtNDI4
LDMxICs0MjgsMzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1dh
aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIHJlc3VsdFN0cmluZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGF0
b21pY3NGdW5jV2FrZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGF0b21pY3NGdW5jV2FrZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgCi0gICAgSlNJbnQzMkFycmF5KiB0eXBlZEFycmF5ID0ganNEeW5hbWljQ2Fz
dDxKU0ludDMyQXJyYXkqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTSW50MzJBcnJh
eSogdHlwZWRBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghdHlwZWRBcnJheSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L3dha2UgbXVzdCBiZSBh
biBJbnQzMkFycmF5LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3QgYmUgYW4gSW50MzJBcnJheS4iX3Mp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIXR5cGVkQXJyYXktPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3Qgd3Jh
cCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC93YWtlIG11c3Qgd3JhcCBhIFNoYXJl
ZEFycmF5QnVmZmVyLiJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYWNjZXNzSW5kZXggPSB2YWxpZGF0ZWRB
Y2Nlc3NJbmRleCh2bSwgZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIHR5cGVkQXJyYXkpOworICAg
IHVuc2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRhdGVkQWNjZXNzSW5kZXgodm0sIGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdHlwZWRBcnJheSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAg
ICBpbnQzMl90KiBwdHIgPSB0eXBlZEFycmF5LT50eXBlZFZlY3RvcigpICsgYWNjZXNzSW5kZXg7
CiAgICAgCi0gICAgSlNWYWx1ZSBjb3VudFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMik7CisgICAg
SlNWYWx1ZSBjb3VudFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICB1bnNpZ25l
ZCBjb3VudCA9IFVJTlRfTUFYOwogICAgIGlmICghY291bnRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
Ci0gICAgICAgIGludDMyX3QgY291bnRJbnQgPSBjb3VudFZhbHVlLnRvSW50MzIoZXhlYyk7Cisg
ICAgICAgIGludDMyX3QgY291bnRJbnQgPSBjb3VudFZhbHVlLnRvSW50MzIoY2FsbEZyYW1lKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKTsKICAgICAgICAgY291bnQgPSBzdGQ6Om1heCgwLCBjb3VudEludCk7CiAgICAg
fQpAQCAtNDYwLDkgKzQ2MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWlj
c0Z1bmNXYWtlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KHB0ciwgY291bnQpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXRvbWljc0Z1bmNYb3IoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhdG9taWNzRnVuY1hvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYXRv
bWljT3BlcmF0aW9uV2l0aEFyZ3MoZXhlYywgWG9yRnVuYygpKTsKKyAgICByZXR1cm4gYXRvbWlj
T3BlcmF0aW9uV2l0aEFyZ3MoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIFhvckZ1bmMoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0FkZChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGluZGV4LCBF
bmNvZGVkSlNWYWx1ZSBvcGVyYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDE5YTMyNWUyYjRjYTM3NWIxMWMzYjUx
ZmY5NThhMTYwMWVkYTkyMmMuLjlhYTY1ODdhMTE3NmE3ODc2ZGE2MzY3NzdlNjBkNzIyNWQzYzQ2
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWlu
dE4oRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJ
bnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
aWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTU3LDcgKzU3LDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEJpZ0ludENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
ICZiaWdJbnQKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBCaWdJbnRDb25zdHJ1Y3Rvcjo6QmlnSW50Q29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVj
dHVyZSwgY2FsbEJpZ0ludENvbnN0cnVjdG9yLCBudWxscHRyKQpAQCAtMTEwLDE4ICsxMTAsMTgg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgYXJndW1lbnQpCiAgICAgfSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTVmFsdWUg
dmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1
ZS50b1ByaW1pdGl2ZShzdGF0ZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghaXNTYWZl
SW50ZWdlcihwcmltaXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiTm90IHNhZmUgaW50ZWdlciJfcykpOwogICAgICAgICAK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBpZiAocHJpbWl0aXZlLmlzSW50MzIo
KSkKQEAgLTEzMywxMiArMTMzLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKICAgICB9CiAgICAgCi0gICAgRW5jb2Rl
ZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoKnN0YXRlLCBwcmltaXRpdmUpOworICAgIEVuY29k
ZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KCpjYWxsRnJhbWUsIHByaW1pdGl2ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1
Y3RvckZ1bmNBc1VpbnROKEV4ZWNTdGF0ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogewogICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQuYXNJ
bnROIGFuZCBCaWdJbnQuYXNVaW50TgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODExNDQKQEAgLTE0Niw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oRXhlY1N0YXRlKikKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEV4ZWNTdGF0ZSopCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgLy8gRklYTUU6IFtFU05leHRdW0Jp
Z0ludF0gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggNGYx
ZTI1YTcwN2MyZWI2ODExZGZhYzhhOWM3YTlhYjRmYmM0NGYyMC4uYmEwY2U3MzkxNzAwMzZmNWM5
MWIzMTVlZTMzNDg0OGE1NmFkYTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC00MSw5ICs0MSw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVPZihFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3Rv
RnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiB9CiAKQEAgLTkwLDQyICs5MCw0NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU0JpZ0lu
dCogdG9UaGlzQmlnSW50VmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEpTVmFsdWUgYmlnSW50UHJv
dG9GdW5jVG9TdHJpbmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2bSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1
ZSh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3Qg
YmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKLSAgICAKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJp
Z0ludCBvciBCaWdJbnRPYmplY3QiX3MpOworCiAgICAgQVNTRVJUKHZhbHVlKTsKIAotICAgIGlu
dDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksIHNjb3BlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKKyAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFRvU3RyaW5nUmFkaXhB
cmd1bWVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHNjb3BlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgU3RyaW5nIHJlc3VsdFN0cmlu
ZyA9IHZhbHVlLT50b1N0cmluZyhzdGF0ZSwgcmFkaXgpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSB2
YWx1ZS0+dG9TdHJpbmcoY2FsbEZyYW1lLCByYWRpeCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKHJlc3VsdFN0cmlu
Zy5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLnNtYWxs
U3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcocmVzdWx0U3RyaW5nWzBdKSk7CisgICAgICAg
IHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHJlc3VsdFN0cmlu
Z1swXSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcmVzdWx0U3RyaW5nKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcmVz
dWx0U3RyaW5nKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90
b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludFByb3RvRnVuY1Rv
U3RyaW5nSW1wbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZyhzdGF0ZSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
aWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7Ci0gICAgaWYgKEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBzdGF0
ZS0+dGhpc1ZhbHVlKCkpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBp
ZiAoSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJ
bnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2Jq
ZWN0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ZWI5NjAwNzcw
YzY0YzQyMmYxMWU0MTViZWQ4ZDg4Zjk4ODVmOTgyLi41OTliODg1NGU4ZjVhOWE1MTA4YWVlYzAz
MDZmYWI0NDhkMDZiNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDE4ICszMiwxOCBAQCBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIGNvbnN0
IENsYXNzSW5mbyBCb29sZWFuQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCb29sZWFu
Q29uc3RydWN0b3IpIH07CiAKIC8vIEVDTUEgMTUuNi4xCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCb29sZWFuQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihleGVjLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvQm9vbGVhbihjYWxsRnJhbWUpKSk7CiB9CiAKIC8vIEVDTUEgMTUuNi4yCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdpdGhCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgYm9vbGVhbiA9IGpzQm9vbGVhbihl
eGVjLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykpOwotICAgIFN0cnVjdHVyZSogYm9vbGVh
blN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4
ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwor
ICAgIEpTVmFsdWUgYm9vbGVhbiA9IGpzQm9vbGVhbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
Qm9vbGVhbihjYWxsRnJhbWUpKTsKKyAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5TdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBCb29sZWFuT2JqZWN0KiBvYmogPSBCb29sZWFuT2JqZWN0OjpjcmVhdGUodm0sIGJvb2xlYW5T
dHJ1Y3R1cmUpOwogICAgIG9iai0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwgYm9vbGVhbik7CkBAIC02
Miw5ICs2Miw5IEBAIHZvaWQgQm9vbGVhbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiB9CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGltbWVk
aWF0ZUJvb2xlYW5WYWx1ZSkKK0pTT2JqZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0
ZUJvb2xlYW4oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBpbW1lZGlhdGVCb29sZWFuVmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0g
Qm9vbGVhbk9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmJvb2xlYW5PYmplY3RTdHJ1
Y3R1cmUoKSk7CiAgICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKHZtLCBpbW1lZGlhdGVCb29sZWFu
VmFsdWUpOwogICAgIHJldHVybiBvYmo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IDA2ZjlmZDMwYWQ1Mjc4OTgwYTUzMTI4
NDdkMzZhZjA1NmMxMjc5YzYuLjNmOWI1ZGZkYmZkODU0ZDQ0MWQ3YjY5MjEwNGFjMzc4NDk2MzQw
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJv
dG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVu
Y1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02NSwxMSAr
NjUsMTEgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmco
KSk7CiAKQEAgLTc4LDcgKzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8Qm9vbGVhbk9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpID09IGpz
Qm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0uc21hbGxT
dHJpbmdzLmZhbHNlU3RyaW5nKCkpOwpAQCAtODcsMTcgKzg3LDE3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1
ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVh
blByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVl
KTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJvb2xlYW5PYmplY3Qq
Pih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKaW5kZXggMDhmNzlkZjRkNjc4MDEzNDQ0YTZhNjM5YWI0
ZmZhNDlhZTcxYjVhMC4uZTk3MTQ4ODUyZDBiOGU2NzQ1NDc4ZWZmOTIwNTMzYTRjNWIzYWY2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCkBAIC0zMywxMiArMzMs
MTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEFyZ0xp
c3Q7CiBjbGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTU2NvcGU7Cit1c2luZyBFeGVjU3Rh
dGUgPSBDYWxsRnJhbWU7CiAKIGVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZCB7CiAgICAg
Tm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggZDVkNmY3ZTI0MDBkYjdjOTBlZDFmMzY5ZWJmODMyNzgyNmQ5NGExYi4uMWY3NWNi
NTA5ZWE2MzVhYmUyMzc1NTEwNzVhMmExNTQyNTJlM2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTMwNiw3ICszMDYsOCBAQCBp
bmxpbmUgSlNBcnJheSogYWxsb2NhdGVOZXdBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0ltbXV0YWJsZQogCiB9IC8vIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMK
IAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0g
Q2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCiAjZGVmaW5lIFNMT1dfUEFUSApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IGIxZThlMjliNTAy
Yzc3MzBiMTNiNjMwYmMzOTdiZjkxMTYzZWIzOGEuLjIxNmQ2NmRjNzE4Y2IyZmE5NTM2ZDk5ZWI2
OTgyZTM4YjZjNmU0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKQEAgLTMxLDE0ICszMSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNv
ZGVDYWNoZUVycm9yOwogY2xhc3MgQ2FjaGVkQnl0ZWNvZGU7CitjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBFeGNlcHRpb247Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNz
IFBhcnNlckVycm9yOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFN5bWJvbDsKIGNsYXNzIFZN
OwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiAKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oCmluZGV4IDE5
OGVmZjNhMzZmMjBjMTc3MTU3MzU4MjE0NjJmMTM4MGU3NTUxMTUuLjk4MzhkOTUyODNkMDgzN2Y1
MTY3ZmU5MmIzY2UxNGUzZWE2YWY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zb2xlQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDggQEAgY2xhc3MgU2NyaXB0QXJndW1l
bnRzOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZy
YW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBDb25zb2xlQ2xpZW50
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5jcHAKaW5kZXggN2Y0Y2Y3ZTQ2M2ZlYzliM2Q1NTYxNzZjYzM1M2NiOGFiMDIwZDhiNi4u
NmE3MjEzMWY2MjY5Nzc2ZWIyZWFlOTY4Y2JkYWM2MGFhZjA3M2RkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKQEAgLTQ4LDMyICs0OCwz
MiBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ29uc29sZU9i
amVjdCk7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNEZWJ1ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNFcnJvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNXYXJuKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGFibGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQXNzZXJ0KEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY0NvdW50UmVzZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5k
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lTG9n
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1RpbWVFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0dyb3VwQ29sbGFwc2VkKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwRW5kKEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNSZWNvcmRFbmQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dh
cm4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0RpcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNBc3NlcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNUaW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1RpbWVFbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXAo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0dyb3VwQ29sbGFwc2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNv
cmRFbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBDb25zb2xlT2JqZWN0OjpzX2luZm8g
PSB7ICJDb25zb2xlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShDb25zb2xlT2JqZWN0KSB9OwogCkBAIC0xMjYsMzA5ICsxMjYsMzA5IEBAIHN0
YXRpYyBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsCiAgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChFeGVjU3Rh
dGUqIGV4ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25z
b2xlTG9nV2l0aExldmVsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xp
ZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAg
Q29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAg
ICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBjbGllbnQtPmxvZ1dpdGhMZXZlbChleGVjLCBJbnNwZWN0b3I6OmNyZWF0
ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSwgbGV2ZWwpOworICAgIGNsaWVudC0+bG9nV2l0aExl
dmVsKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1l
LCAwKSwgbGV2ZWwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNEZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jRGVidWcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2ZWwo
ZXhlYywgTWVzc2FnZUxldmVsOjpEZWJ1Zyk7CisgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2
ZWwoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIE1lc3NhZ2VMZXZlbDo6RGVidWcpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3Io
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IpOworICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGNhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6OkVycm9yKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0xvZyhFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jTG9nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGV4ZWMsIE1lc3NhZ2VMZXZlbDo6
TG9nKTsKKyAgICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChjYWxsRnJhbWUsIGdsb2JhbE9i
amVjdCwgTWVzc2FnZUxldmVsOjpMb2cpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gY29uc29sZUxvZ1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6OkluZm8pOworICAgIHJl
dHVybiBjb25zb2xlTG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdl
TGV2ZWw6OkluZm8pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jV2FybihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gY29uc29sZUxv
Z1dpdGhMZXZlbChleGVjLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcpOworICAgIHJldHVybiBjb25z
b2xlTG9nV2l0aExldmVsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAg
IGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgY2xpZW50LT5jbGVhcihleGVjKTsKKyAgICBjbGllbnQtPmNsZWFyKGNhbGxG
cmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpcihF
eGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jRGlyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50
LT5kaXIoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwor
ICAgIGNsaWVudC0+ZGlyKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVu
dHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0RpclhNTChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyWE1MKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVu
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAg
IGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgY2xpZW50LT5kaXJYTUwoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRB
cmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+ZGlyWE1MKGNhbGxGcmFtZSwgSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNv
bnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3Qt
PmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+dGFibGUoZXhlYywgSW5z
cGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dGFi
bGUoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjYWxsRnJhbWUs
IDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1RyYWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNs
aWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xp
ZW50LT50cmFjZShleGVjLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAw
KSk7CisgICAgY2xpZW50LT50cmFjZShjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNBc3NlcnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBib29sIGNvbmRpdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvQm9vbGVhbihleGVj
KTsKKyAgICBib29sIGNvbmRpdGlvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFu
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBpZiAoY29uZGl0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5hc3NlcnRpb24oZXhlYywgSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOworICAgIGNsaWVudC0+YXNzZXJ0
aW9uKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1l
LCAxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+
Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZh
dWx0TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JEZWZhdWx0TGFi
ZWxTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+Y291bnQoZXhlYywgbGFiZWwpOworICAgIGNs
aWVudC0+Y291bnQoY2FsbEZyYW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgYXV0byog
Y2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICBhdXRvKiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBp
ZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIAotICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGV4ZWMpOwor
ICAgIGF1dG8gbGFiZWwgPSB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBj
bGllbnQtPmNvdW50UmVzZXQoZXhlYywgbGFiZWwpOworICAgIGNsaWVudC0+Y291bnRSZXNldChj
YWxsRnJhbWUsIGxhYmVsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVu
dCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGll
bnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAg
ICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBh
cmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoIWFyZ3NDb3Vu
dCkgewotICAgICAgICBjbGllbnQtPnByb2ZpbGUoZXhlYywgU3RyaW5nKCkpOworICAgICAgICBj
bGllbnQtPnByb2ZpbGUoY2FsbEZyYW1lLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiB0
aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKSk7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSh2YWx1ZVRvU3RyaW5nV2l0aFVu
ZGVmaW5lZE9yTnVsbENoZWNrKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
Y2xpZW50LT5wcm9maWxlKGV4ZWMsIHRpdGxlKTsKKyAgICBjbGllbnQtPnByb2ZpbGUoY2FsbEZy
YW1lLCB0aXRsZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1Byb2ZpbGVFbmQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGVFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGll
bnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xp
ZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0g
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3Qg
YXJnc0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKCFhcmdzQ291
bnQpIHsKLSAgICAgICAgY2xpZW50LT5wcm9maWxlRW5kKGV4ZWMsIFN0cmluZygpKTsKKyAgICAg
ICAgY2xpZW50LT5wcm9maWxlRW5kKGNhbGxGcmFtZSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUodmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSkpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUodmFsdWVUb1N0cmlu
Z1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIGNsaWVudC0+cHJvZmlsZUVuZChleGVjLCB0aXRsZSk7CisgICAgY2xpZW50LT5wcm9m
aWxlRW5kKGNhbGxGcmFtZSwgdGl0bGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBz
aG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDb25z
b2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNvbnNvbGVD
bGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNv
bGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1
bWVudENvdW50KCk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOwogICAgIGlmICghYXJnc0NvdW50KSB7Ci0gICAgICAgIGNsaWVudC0+dGFrZUhlYXBT
bmFwc2hvdChleGVjLCBTdHJpbmcoKSk7CisgICAgICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hv
dChjYWxsRnJhbWUsIFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9T
dHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsK
KyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxs
Q2hlY2soY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBjbGllbnQtPnRha2VI
ZWFwU25hcHNob3QoZXhlYywgdGl0bGUpOworICAgIGNsaWVudC0+dGFrZUhlYXBTbmFwc2hvdChj
YWxsRnJhbWUsIHRpdGxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJv
dG9GdW5jVGltZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShleGVjLT52bSgpKTsKLSAgICBhdXRvKiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8qIGNsaWVudCA9IGdsb2Jh
bE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYXV0byBsYWJlbCA9IHZh
bHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoZXhlYyk7CisgICAgYXV0byBsYWJlbCA9IHZhbHVlT3JE
ZWZhdWx0TGFiZWxTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGNsaWVudC0+dGltZShleGVjLCBsYWJlbCk7
CisgICAgY2xpZW50LT50aW1lKGNhbGxGcmFtZSwgbGFiZWwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGF1dG8q
IGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7
CisgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAg
aWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhleGVjKTsK
KyAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
Y2xpZW50LT50aW1lTG9nKGV4ZWMsIGxhYmVsLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhleGVjLCAxKSk7CisgICAgY2xpZW50LT50aW1lTG9nKGNhbGxGcmFtZSwgbGFiZWwsIElu
c3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5kKEV4ZWNTdGF0ZSogZXhl
YykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNU
aW1lRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwot
ICAgIGF1dG8qIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNs
aWVudCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVj
dC0+dm0oKSk7CisgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50
KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmlu
ZyhleGVjKTsKKyAgICBhdXRvIGxhYmVsID0gdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgY2xpZW50LT50aW1lRW5kKGV4ZWMsIGxhYmVsKTsKKyAgICBjbGllbnQtPnRpbWVF
bmQoY2FsbEZyYW1lLCBsYWJlbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1RpbWVTdGFtcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGll
bnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgp
OworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVu
dCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT50aW1lU3RhbXAoZXhlYywgSW5zcGVjdG9yOjpj
cmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+dGltZVN0YW1wKGNh
bGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNHcm91cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNvbnNvbGVDbGllbnQoKTsKKyAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQg
PSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNsaWVudC0+
Z3JvdXAoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwor
ICAgIGNsaWVudC0+Z3JvdXAoY2FsbEZyYW1lLCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhjYWxsRnJhbWUsIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xl
UHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENv
bnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29s
ZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29u
c29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5ncm91cENvbGxhcHNlZChleGVj
LCBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAwKSk7CisgICAgY2xpZW50
LT5ncm91cENvbGxhcHNlZChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1l
bnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNHcm91cEVuZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCog
Y2xpZW50ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7Cisg
ICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7
CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKLSAgICBjbGllbnQtPmdyb3VwRW5kKGV4ZWMsIEluc3BlY3Rvcjo6Y3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsIDApKTsKKyAgICBjbGllbnQtPmdyb3VwRW5kKGNhbGxGcmFt
ZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+Y29uc29sZUNsaWVudCgpOworICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGds
b2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5yZWNv
cmQoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAg
IGNsaWVudC0+cmVjb3JkKGNhbGxGcmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVu
dHMoY2FsbEZyYW1lLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1JlY29yZEVuZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIENvbnNvbGVDbGllbnQq
IGNsaWVudCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y29uc29sZUNsaWVudCgpOwor
ICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgp
OwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCi0gICAgY2xpZW50LT5yZWNvcmRFbmQoZXhlYywgSW5zcGVjdG9yOjpjcmVh
dGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOworICAgIGNsaWVudC0+cmVjb3JkRW5kKGNhbGxG
cmFtZSwgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoY2FsbEZyYW1lLCAwKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1NjcmVlbnNob3QoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1NjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5jb25zb2xlQ2xpZW50KCk7CisgICAgQ29uc29sZUNsaWVudCog
Y2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBj
bGllbnQtPnNjcmVlbnNob3QoZXhlYywgSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMo
ZXhlYywgMCkpOworICAgIGNsaWVudC0+c2NyZWVuc2hvdChjYWxsRnJhbWUsIEluc3BlY3Rvcjo6
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGNhbGxGcmFtZSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCA1OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNjMWFk
MjU5M2Y5MzEwODBkLi45NjczNTg1MTRiMWQ4MzA0ZTkyYmRjNjkwM2E0ZGMwZmI1ZWU0MzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCkBAIC0z
NSwxMCArMzUsMTEgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcmdMaXN0OwotY2xhc3Mg
RXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwog
Y2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1Njb3BlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZy
YW1lOwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdFR5cGUgOiB1bnNpZ25lZCB7CiAgICAgTm9uZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGY2YjhmZWUwNmE3YmNlMjAwNTVhMzQ5Nzc4NGRhZjI3OWJmMGRlY2YuLmYwYzViMjA5
OTlkYzRlMTFiNWEwNmVhMjg0YjQ1MjBlMWUzYzVlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNDUsOCArNDUsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFy
c2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhl
Y1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
VVRDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVOb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02
OCw4ICs2OSw4IEBAIGNvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mCiAKIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShEYXRlQ29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBjYWxsRGF0ZSwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcikKQEAgLTE1MCwzOCArMTUx
LDQzIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuCiAgICAgcmV0dXJuIERhdGVJbnN0YW5jZTo6
Y3JlYXRlKHZtLCBkYXRlU3RydWN0dXJlLCB2YWx1ZSk7CiB9CiAgICAgCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhEYXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RGF0ZShleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGV4ZWMtPm5l
d1RhcmdldCgpLCBhcmdzKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3REYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBhcmdzKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4yCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEdyZWdvcmlhbkRh
dGVUaW1lIHRzOwogICAgIG1zVG9HcmVnb3JpYW5EYXRlVGltZSh2bSwgV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCksIFdURjo6TG9jYWxUaW1lLCB0cyk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZvcm1h
dERhdGVUaW1lKHRzLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBmYWxzZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFN0cmluZyBkYXRlU3RyID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGRhdGVTdHIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGV4ZWMsIHZtLCBkYXRl
U3RyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihwYXJzZURhdGUoY2FsbEZyYW1lLCB2bSwgZGF0ZVN0cikpKSk7Cit9CisKK0pTVmFs
dWUgZGF0ZU5vd0ltcGwoKQoreworICAgIHJldHVybiBqc051bWJlcihqc0N1cnJlbnRUaW1lKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKikK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc0N1cnJl
bnRUaW1lKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4
ZWNTdGF0ZSogZXhlYykgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBkb3VibGUgbXMgPSBt
aWxsaXNlY29uZHNGcm9tQ29tcG9uZW50cyhleGVjLCBBcmdMaXN0KGV4ZWMpLCBXVEY6OlVUQ1Rp
bWUpOworICAgIGRvdWJsZSBtcyA9IG1pbGxpc2Vjb25kc0Zyb21Db21wb25lbnRzKGNhbGxGcmFt
ZSwgQXJnTGlzdChjYWxsRnJhbWUpLCBXVEY6OlVUQ1RpbWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIodGltZUNsaXAobXMpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggYzE2MjUwZDM5OTcyMTMx
ZDMyOTMwY2Q5YjRmMDMxNmQzZDM1MDdmNC4uYmVjNDBhNWMzMDhmODI5OTQ3YjI2NWRmODQ3NDMx
MmEzOTUyMjg5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRGF0ZUNvbnN0cnVjdG9yIGZpbmFs
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdERh
dGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG5ld1RhcmdldCwgY29uc3Qg
QXJnTGlzdCYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0
YXRlKik7CitKU1ZhbHVlIGRhdGVOb3dJbXBsKCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCAx
ODUyMmQxMDA0NGRlMTNhNTAyOWM2NTc2MzQ5MjA1M2M5YWJjOTczLi45MTc3MTZkMWUxNjgwODg5
NzI1ZTM1NWEyMzdmNTFlZjA2OWRiZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtNzEsNTAgKzcxLDUwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRIb3VycyhFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxp
U2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY0dldE1pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVU
Q0RhdGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRz
KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0VVRDTWludXRlcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVs
bFllYXIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNTZXRIb3VycyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbnV0ZXMoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNb250aChFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRUaW1lKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0VVRDRGF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDSG91cnMoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaWxsaXNlY29u
ZHMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0VVRDTW9udGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmlu
ZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlRGF0ZVN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVUaW1lU3RyaW5nKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Qcmlt
aXRpdmVTeW1ib2woRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pT
T04oRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXREYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZ
ZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZz
ZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVU
Q01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRV
VENTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWludXRlcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldFRpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1NldFVUQ0Z1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENIb3VycyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0VVRDTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNaW51dGVzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0WWVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
UHJpbWl0aXZlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9UaW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9JU09TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiB9CiAKQEAgLTUyNSwzMSArNTI1LDMxIEBAIHZvaWQgRGF0ZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAv
LyBGdW5jdGlvbnMKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBjb25zdCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBm
b3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRD
VmFyaWFudCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2FsbEZyYW1lLCBEYXRl
VGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGNvbnN0IGJvb2wg
YXNVVENWYXJpYW50ID0gdHJ1ZTsKLSAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVj
LCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOworICAgIHJldHVybiBm
b3JtYXRlRGF0ZUluc3RhbmNlKGNhbGxGcmFtZSwgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSwg
YXNVVENWYXJpYW50KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAKICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIERhdGUi
X3MpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIkludmFsaWQgRGF0ZSJfcykpOwogCi0gICAgY29uc3Qg
R3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVn
b3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJh
bWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykp
KTsKICAgICAvLyBNYXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAo
bWF4LiBkaWdpdHMgaW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRo
LCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlz
ZWNvbmRzKQpAQCAtNTczLDMwNiArNTczLDMwNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZyhidWZmZXIsIGNo
YXJhY3RlcnNXcml0dGVuKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBm
YWxzZTsKLSAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1h
dERhdGUsIGFzVVRDVmFyaWFudCk7CisgICAgcmV0dXJuIGZvcm1hdGVEYXRlSW5zdGFuY2UoY2Fs
bEZyYW1lLCBEYXRlVGltZUZvcm1hdERhdGUsIGFzVVRDVmFyaWFudCk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1RpbWVT
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBjb25z
dCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOwotICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3Rh
bmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0VGltZSwgYXNVVENWYXJpYW50KTsKKyAgICByZXR1cm4g
Zm9ybWF0ZURhdGVJbnN0YW5jZShjYWxsRnJhbWUsIERhdGVUaW1lRm9ybWF0VGltZSwgYXNVVENW
YXJpYW50KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVy
bmFsTnVtYmVyKCksIExvY2FsZURhdGVBbmRUaW1lKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShmb3JtYXRMb2NhbGVEYXRlKGNhbGxGcmFtZSwgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2Jq
LT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZURhdGVTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9M
b2NhbGVEYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURh
dGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2Nh
bGVEYXRlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGNh
bGxGcmFtZSwgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2Nh
bGVEYXRlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFu
Y2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCksIExvY2FsZVRpbWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoY2FsbEZyYW1lLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCksIExvY2FsZVRpbWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2woRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9QcmltaXRp
dmVTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0
ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4g
b2JqZWN0LiIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wg
dG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4odGhpc1ZhbHVlKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJp
bWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwogCi0gICAgSlNWYWx1ZSBoaW50
VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIHR5cGUgPSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoZXhlYywgaGludFZhbHVlKTsK
KyAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CisgICAgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVU
eXBlKGNhbGxGcmFtZSwgaGludFZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmICh0eXBlID09IE5vUHJlZmVyZW5jZSkKICAg
ICAgICAgdHlwZSA9IFByZWZlclN0cmluZzsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPm9yZGluYXJ5VG9QcmltaXRpdmUoZXhlYywg
dHlwZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
aGlzT2JqZWN0LT5vcmRpbmFyeVRvUHJpbWl0aXZlKGNhbGxGcmFtZSwgdHlwZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRU
aW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNEYXRlT2JqLT5pbnRl
cm5hbE51bWJlcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY0dldEZ1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUo
ZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVn
b3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT55
ZWFyKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVU
QyhleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUg
PSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FsbEZyYW1lKTsKICAgICBpZiAo
IWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFO
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRp
bWUtPnllYXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOwor
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0
ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGgoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENN
b250aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRVVENNb250aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogdGhp
c0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlh
bkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOworICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0
ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+bW9udGgoKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRl
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldERhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2Jq
ID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGlt
ZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRV
VENEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpz
RHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRh
dGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWlj
Q2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2Fs
bEZyYW1lKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPndlZWtEYXkoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0
ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9i
aikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxG
cmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdyZWdvcmlhbkRhdGVUaW1lLT53ZWVrRGF5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5z
dGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZShleGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPmhvdXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRVVENIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+
KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFu
RGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVU
aW1lVVRDKGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRl
VGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAg
IGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5E
YXRlVGltZS0+aG91cigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldE1pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZt
LCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1l
KGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3Jl
Z29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+
bWludXRlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDTWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0s
IHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVV
VEMoZXhlYyk7CisgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1l
ID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhbGxGcmFtZSk7CiAgICAgaWYg
KCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05h
TigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVU
aW1lLT5taW51dGUoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVU
aW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShl
eGVjKTsKKyAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FsbEZyYW1lKTsKICAgICBpZiAoIWdyZWdv
cmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPnNl
Y29uZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KGV4ZWMpOworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9
IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWxsRnJhbWUpOwogICAgIGlmICgh
Z3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGlt
ZS0+c2Vjb25kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5j
ZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgZG91YmxlIG1pbGxp
ID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKHN0ZDo6aXNuYW4obWls
bGkpKQpAQCAtODgzLDE0ICs4ODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1zKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNl
Y29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNE
eW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKIAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwog
ICAgIGlmIChzdGQ6OmlzbmFuKG1pbGxpKSkKQEAgLTkwMSwzMSArOTAxLDMxIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtcykpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9u
ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMp
OworICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWxsRnJhbWUpOwogICAgIGlmICghZ3JlZ29yaWFu
RGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtZ3JlZ29yaWFuRGF0ZVRpbWUtPnV0Y09m
ZnNldCgpIC8gbWludXRlc1BlckhvdXIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBkb3VibGUgbWlsbGkgPSB0
aW1lQ2xpcChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CisgICAgZG91YmxlIG1p
bGxpID0gdGltZUNsaXAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxOdW1iZXIobWlsbGkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIobWlsbGkpKTsKQEAgLTEwMTQsODYgKzEwMTQsODYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKEV4ZWNTdGF0ZSogZXhl
YywgaW50IG51bUFyZ3NUb1VzZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNTZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdz
KGV4ZWMsIDEsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGlt
ZUFyZ3MoY2FsbEZyYW1lLCAxLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENN
aWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMSwgV1RGOjpVVENUaW1lKTsK
KyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAxLCBXVEY6OlVU
Q1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNT
ZXRTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoZXhlYywgMiwgV1RG
OjpMb2NhbFRpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJh
bWUsIDIsIFdURjo6TG9jYWxUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENTZWNvbmRzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJv
bVRpbWVBcmdzKGV4ZWMsIDIsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgMiwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TWludXRlcyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRNaW51dGVz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNl
dE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMsIDMsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1
cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoY2FsbEZyYW1lLCAzLCBXVEY6OkxvY2FsVGltZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01p
bnV0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0VVRDTWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhleGVjLCAzLCBXVEY6
OlVUQ1RpbWUpOworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhjYWxsRnJhbWUs
IDMsIFdURjo6VVRDVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1NldEhvdXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldEhvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKGV4ZWMs
IDQsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3Mo
Y2FsbEZyYW1lLCA0LCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0hvdXJzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKGV4ZWMsIDQsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1Zh
bHVlRnJvbVRpbWVBcmdzKGNhbGxGcmFtZSwgNCwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5l
d1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDEsIFdURjo6TG9jYWxUaW1lKTsKKyAgICByZXR1cm4g
c2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAxLCBXVEY6OkxvY2FsVGltZSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0RhdGUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jU2V0VVRDRGF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhleGVjLCAxLCBXVEY6OlVUQ1RpbWUp
OworICAgIHJldHVybiBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDEsIFdURjo6
VVRDVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1NldE1vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldE1vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKGV4ZWMsIDIsIFdURjo6
TG9jYWxUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1l
LCAyLCBXVEY6OkxvY2FsVGltZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURhdGVB
cmdzKGV4ZWMsIDIsIFdURjo6VVRDVGltZSk7CisgICAgcmV0dXJuIHNldE5ld1ZhbHVlRnJvbURh
dGVBcmdzKGNhbGxGcmFtZSwgMiwgV1RGOjpVVENUaW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3
VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMywgV1RGOjpMb2NhbFRpbWUpOworICAgIHJldHVybiBz
ZXROZXdWYWx1ZUZyb21EYXRlQXJncyhjYWxsRnJhbWUsIDMsIFdURjo6TG9jYWxUaW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDRnVsbFll
YXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jU2V0VVRDRnVsbFllYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoZXhlYywgMywgV1RGOjpV
VENUaW1lKTsKKyAgICByZXR1cm4gc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoY2FsbEZyYW1lLCAz
LCBXVEY6OlVUQ1RpbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KSB7IAorICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsgCiAgICAgICAgIHRo
aXNEYXRlT2JqLT5zZXRJbnRlcm5hbE51bWJlcihQTmFOKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKICAgICB9CkBAIC0xMTA5LDExICsxMTA5LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQ
ZXJTZWNvbmQpOwogICAgICAgICBtcyA9IG1pbGxpIC0gc2VjcyAqIG1zUGVyU2Vjb25kOwotICAg
ICAgICBpZiAoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIG90aGVyID0gdGhpc0RhdGVPYmotPmdy
ZWdvcmlhbkRhdGVUaW1lKGV4ZWMpKQorICAgICAgICBpZiAoY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIG90aGVyID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSkpCiAg
ICAgICAgICAgICBncmVnb3JpYW5EYXRlVGltZS5jb3B5RnJvbSgqb3RoZXIpOwogICAgIH0KIAot
ICAgIGRvdWJsZSB5ZWFyID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJlc2VydmVOYU4o
ZXhlYyk7CisgICAgZG91YmxlIHllYXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdl
clByZXNlcnZlTmFOKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHllYXIpKSB7CiAgICAg
ICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbE51bWJlcihQTmFOKTsKQEAgLTExMjcsMTYgKzEx
MjcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVh
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihy
ZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlz
RGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAKLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CisgICAgY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdy
ZWdvcmlhbkRhdGVUaW1lKGNhbGxGcmFtZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKIApAQCAtMTE0NCwyOCAr
MTE0NCwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRZ
ZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkgLSAxOTAwKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChleGVjKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgSlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlck51
bWJlcik7CisgICAgSlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGNhbGxG
cmFtZSwgUHJlZmVyTnVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAodGltZVZhbHVlLmlzTnVtYmVyKCkgJiYgIXN0ZDo6aXNm
aW5pdGUodGltZVZhbHVlLmFzTnVtYmVyKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKIAotICAgIEpTVmFsdWUgdG9JU09WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnRvSVNPU3RyaW5nKTsKKyAgICBKU1ZhbHVlIHRvSVNPVmFs
dWUgPSBvYmplY3QtPmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnRvSVNPU3RyaW5n
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
dG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rp
b24iX3MpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgYXNPYmplY3QodG9JU09WYWx1ZSksIGNh
bGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmgKaW5kZXggMDBiZTI2NmY1YzM4YTYzNTUyNmViNDYxOTM5YjY1MGFmN2JmOWQ3
My4uY2FjNWFiNWVkYjZjMjQ0N2QxMzVjYmE3YmY3YTY0NjE0Y2ExMWY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaApAQCAtNTIsNiArNTIsNiBA
QCBjbGFzcyBEYXRlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZShFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRT
cGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCmluZGV4IGIzMDQ2NjA1OWFlNjU1M2Q3ZGY1YmJmMTk3
ZWNlYjA2MmVlMmMyYTAuLjVjZmJmYmZjYmRmNjBlYjdlNmQ3MWZlYTY4ZWQ1ZTIzZmM5OGMyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCkBAIC0zMyw5ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lz
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBlc1NwZWNJc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3IoZXhlYy0+dm0oKSk7CisgICAgYm9vbCBpc0Nv
bnN0cnVjdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9y
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oaXNDb25zdHJ1Y3RvcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgKaW5k
ZXggODA4ZDdmODgzYmZmNDliNThjZmRiZTVkNzJjMTQ2MTE1M2I3YjJmYy4uYjZhMWNlYzdjYjEz
YTJhYjY5ZGQ4ZDMyOGYzYjE4ODM2NWQyMzMxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuaApAQCAtMjksNiArMjksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmgKaW5kZXggYzA0YmM1NWNlM2NhNTRhYjkzZGY5OTQzYjM2ZTY0MjFmZTIy
ZjI2NC4uN2I4ZDUyMWMyYjkxMTZmZjIwZjBhYjhlMDExMTUzYWNhM2Y1NjAxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC0zMywxMiArMzMsMTMgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFZN
OwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFNvdXJjZUNv
ZGU7CiBjbGFzcyBTdHJ1Y3R1cmU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8v
IEV4ZWNTdGF0ZSB3cmFwcGVycy4KIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGRh
NjkxMTZiNDY0NjY1N2M4ODdjYjVkMjg5YzU0MmU4NzgyZjBiZWUuLjNlYzYzNzc2YzkwOTAwNTJk
Njk2YWNkYTk2OWUxOTAwMTU2NzY0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBAIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShFcnJvckNvbnN0cnVjdG9yKTsKIAogY29u
c3QgQ2xhc3NJbmZvIEVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckNv
bnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxF
cnJvckNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKQpAQCAtNDcsMjYgKzQ3
LDI2IEBAIHZvaWQgRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFcnJv
clByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUpCiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3Iu
cHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgZXJyb3JQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051bWJlcihn
bG9iYWxPYmplY3Qodm0pLT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZU9yKE9wdGlvbnM6OmRlZmF1
bHRFcnJvclN0YWNrVHJhY2VMaW1pdCgpKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCgp
LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZU9yKE9wdGlvbnM6OmRlZmF1bHRFcnJvclN0YWNrVHJh
Y2VMaW1pdCgpKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9u
ZSkpOwogfQogCiAvLyBFQ01BIDE1LjkuMwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVj
LT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dCh2bSktPmVycm9yU3RydWN0dXJlKCkpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5u
ZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywg
ZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3Rh
bmNlOjpjcmVhdGUoY2FsbEZyYW1lLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwg
VHlwZU5vdGhpbmcsIGZhbHNlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhl
Yy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52
bSgpKS0+ZXJyb3JTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwg
VHlwZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5lcnJvclN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0
YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIs
IFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCiBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNzksOSArNzksOSBAQCBi
b29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgICAgICAgICAgZG91YmxlIGVmZmVjdGl2ZUxpbWl0
ID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3RkOjpt
YXgoMC4sIGVmZmVjdGl2ZUxpbWl0KTsKICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3Rk
OjptaW4oZWZmZWN0aXZlTGltaXQsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3Qodm0pLT5zZXRTdGFja1RyYWNlTGltaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVmZmVj
dGl2ZUxpbWl0KSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0
U3RhY2tUcmFjZUxpbWl0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihlZmZlY3RpdmVMaW1pdCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSkt
PnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOwogICAg
IH0KIAogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
CiAgICAgRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVj
dG9yKj4oY2VsbCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
PnN0YWNrVHJhY2VMaW1pdCkKLSAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+
c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKIAogICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
Y3BwCmluZGV4IDkyMmNmNGMzNmNiNmFiNTkwYzk4ZTlmNzAxODBhZDM2NTA4OTZhZmIuLjYxYzRm
NDFhMGZhMzgwM2MxNGQwZmM0ZmNhZDFmMDAwNzkxMjBmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RShFcnJvclByb3RvdHlwZSk7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNzEsMjcgKzcxLDI3IEBAIHZvaWQgRXJyb3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBuYW1lKQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gRUNNQS0yNjIgNS4xLCAxNS4xMS40LjQKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhl
IHRoaXMgdmFsdWUuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAv
LyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlv
bi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3QodGhp
c1ZhbHVlKTsKIAogICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9uIQotICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBTdHJpbmdSZWN1cnNp
b25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2JqKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAg
ICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1
ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwog
CiAgICAgLy8gMy4gTGV0IG5hbWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldF1d
IGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnQgIm5hbWUiLgotICAgIEpTVmFsdWUg
bmFtZSA9IHRoaXNPYmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKKyAgICBK
U1ZhbHVlIG5hbWUgPSB0aGlzT2JqLT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIC8vIDQuIElmIG5hbWUgaXMgdW5kZWZpbmVkLCB0aGVuIGxldCBuYW1lIGJlICJFcnJv
ciI7IGVsc2UgbGV0IG5hbWUgYmUgVG9TdHJpbmcobmFtZSkuCkBAIC05OSwxMiArOTksMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBuYW1lU3Ry
aW5nID0gIkVycm9yIl9zOwogICAgIGVsc2UgewotICAgICAgICBuYW1lU3RyaW5nID0gbmFtZS50
b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUudG9XVEZTdHJpbmco
Y2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgfQogCiAgICAgLy8gNS4gTGV0IG1zZyBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudCAibWVz
c2FnZSIuCi0gICAgSlNWYWx1ZSBtZXNzYWdlID0gdGhpc09iai0+Z2V0KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPm1lc3NhZ2UpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IHRoaXNPYmotPmdldChj
YWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gKHNpYykKQEAgLTExNCw3
ICsxMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCiAg
ICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVz
c2FnZVN0cmluZyA9IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIG1lc3NhZ2VT
dHJpbmcgPSBtZXNzYWdlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIApAQCAtMTI3LDcg
KzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFt
ZS5pc1N0cmluZygpID8gbmFtZSA6IGpzU3RyaW5nKHZtLCBuYW1lU3RyaW5nKSk7CiAKICAgICAv
LyAxMC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY29uY2F0ZW5hdGluZyBuYW1lLCAiOiIsIGEgc2lu
Z2xlIHNwYWNlIGNoYXJhY3RlciwgYW5kIG1zZy4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIG5hbWVTdHJp
bmcsICI6ICIsIG1lc3NhZ2VTdHJpbmcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsIG5hbWVT
dHJpbmcsICI6ICIsIG1lc3NhZ2VTdHJpbmcpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCmluZGV4IGM2
OTRiNTc2NmM0MGUxMjA5Yjc0NjcwNmZiNzI2MjhiNzc0ZTIxYjAuLmQxOGY5YTc0NTQ2NzRjZjdl
MTA0NWZlMzQ2MDk2OTdhNDdlZTE3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25GdXp6LmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIFRocm93U2NvcGU7
Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIC8vIENhbGwgdGhpcyBvbmx5IGlmIHlv
dSBrbm93IHRoYXQgZXhjZXB0aW9uIGZ1enppbmcgaXMgZW5hYmxlZC4KIHZvaWQgZG9FeGNlcHRp
b25GdXp6aW5nKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBjaGFyKiB3aGVyZSwgY29u
c3Qgdm9pZCogcmV0dXJuUEMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkOGJjY2NkYThiZWQ2OTcwM2VmMjAw
ZmFkZjVjYjZkYmUwMGM1Njc2Li42Y2ZjNGJlZTMwNDZmZjg5MWUzNjcxNGQ5ZGI3MjcyZjA0OTRl
Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcApAQCAtMzgsMTcgKzM4LDE3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIEZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkNvbnN0
cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb24sIGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNh
bGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpG
dW5jdGlvbiwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwogfQogCiAvLyBFQ01BIDE1LjMuMSBU
aGUgRnVuY3Rpb24gQ29uc3RydWN0b3IgQ2FsbGVkIGFzIGEgRnVuY3Rpb24KLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlv
bkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4o
ZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncykpOworICAg
IEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGFyZ3MpKTsKIH0KIAogRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpAQCAtMTg5LDcgKzE4OSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBD
b25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdU
YXJnZXQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgYXJncywgdm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3VzLCBleGVjLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4oKSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUsIG5ld1RhcmdldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCA5NjE5YzAwZjEyMjQ5OGQwMTZiYmRk
ZTA5OTczYmVjNWFhNDM1ZWIyLi4yNTI2MGQ5OTM2OWI5NDUyMDk4ZjAzMDAzYzRkNWQ2YTY0NWZj
NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCkBAIC0zNywxMCArMzcsMTAgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKEZ1bmN0aW9uUHJvdG90eXBlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1
bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5cGUpIH07
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIC8vIEVDTUEgMTUuMy40Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsRnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTc2LDE2ICs3NiwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjppbml0UmVzdHJpY3Rl
ZFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzLCBlcnJvckdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTRnVuY3Rp
b24+KHZtKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4odGhpc1ZhbHVlKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rp
b24tPm5hbWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhjYWxsRnJhbWUsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSh2bSksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAKICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNDbGFzcygpKQpAQCAtMTM0LDIxICsxMzQsMjEgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5nZXRSYW5nZSgKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFy
dE9mZnNldCgpLAogICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0
KCkgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgc291cmNlKSkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2
aWFsU3RyaW5nKGNhbGxGcmFtZSwgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwg
c291cmNlKSkpOwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SW50ZXJuYWxG
dW5jdGlvbj4odm0pKSB7CiAgICAgICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganND
YXN0PEludGVybmFsRnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1c
bn0iKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShqc01ha2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uICIsIGZ1bmN0aW9u
LT5uYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQogCiAgICAg
aWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkK
LSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZv
KHZtKS0+Y2xhc3NOYW1lLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2
bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9CiAK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBmM2ZlY2IzZGUzNGJhMzk5NjA0MGQy
YjQ4ODM0NDViYjVhMmVlMDQ4Li42NDYyODZkNjQzYzM2MTI5ZGMzMWRlYTAyOTBkNTAzOGQ1ODI5
YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBAIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBB
cmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJhbWUsIGdsb2JhbE9iamVj
dCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEFyZ0xp
c3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0
aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpH
ZW5lcmF0b3IsIGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFt
ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihjYWxsRnJh
bWUsIGdsb2JhbE9iamVjdCwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0
b3IsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmlu
ZGV4IDlhZDEyMGNkZjQ3OWM5ODNlOTNiZGNkMjQwZmI1NzA2NDk4ZDY3ZjcuLjAyYTNiNWI4Nzg4
MjQ3OTJmMmZkYTQwOTZlNmM5YjExZTVmYWJkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTI5LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIAogQUxXQVlTX0lOTElORSBib29sIGlzSW5kZXgodWludDMyX3QgaW5kZXgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAppbmRleCA2NWU5YTE3NzE5OWM5MTk0
ZDAwZDBlNDI5MmNiNDQxOTg0NjRlNWNiLi41ZTI0OTljOTNlYzk1MDBjMTMzZTc2ZDdhNTc0MDc5
MzRmNzYxYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RMb2coSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04MSwxMiArODEsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmRpc2FibGUoVk0mIHZtKQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRhcmdldCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Cisg
ICAgU3RyaW5nIHZhbHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZGF0YUxvZyh2
YWx1ZSwgIlxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKaW5kZXggMjM4ZTU0MzMzZWFkY2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYzODliMS4uMDA5ODIw
YzJkNzM5ODY5ZjgyNjAzYzljOTQ0MGViOGM3N2IzYTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBOYXRpdmVGdW5jdGlvbgogICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkKICAgICAsIG1fZnVuY3Rpb25Gb3JDYWxsKGZ1bmN0aW9uRm9yQ2FsbCkKICAg
ICAsIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3QoZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgPyBmdW5jdGlv
bkZvckNvbnN0cnVjdCA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKQorICAgICwgbV9n
bG9iYWxPYmplY3Qodm0sIHRoaXMsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiB7CiAgICAg
Ly8gZXhlYy0+dm0oKSB3YW50cyBjYWxsZWVzIHRvIG5vdCBiZSBsYXJnZSBhbGxvY2F0aW9ucy4K
ICAgICBSRUxFQVNFX0FTU0VSVCghaXNMYXJnZUFsbG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggYWJmMDFjY2Iy
N2IyNmJhN2Y2M2I0ZTNiOThlMjY5YmIzNjk2ZjgyMC4uYWEyZTk1YThjMjM5ZmY5MzJiYjZiMGJl
ZDA2MTMxNTY2NGYwNTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaApAQCAtNzYsNiArNzYsMTMgQEAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbiA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSW50ZXJuYWxGdW5jdGlvbiwgbV9mdW5jdGlvbkZvckNvbnN0cnVjdCk7CiAg
ICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbE9iamVjdCgpCisgICAg
eworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZ2xv
YmFsT2JqZWN0KTsKKyAgICB9CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KKwogcHJvdGVjdGVkOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24oVk0mLCBTdHJ1Y3R1cmUqLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbkZvckNhbGwsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ29u
c3RydWN0KTsKIApAQCAtOTEsNiArOTgsNyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1
bmN0aW9uRm9yQ2FsbDsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ29u
c3RydWN0OwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9vcmlnaW5hbE5hbWU7CisgICAg
V3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIEFMV0FZ
U19JTkxJTkUgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0LCBTdHJ1Y3R1cmUqIGJhc2VD
bGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcAppbmRleCA0M2Y0NzhlMTk4NGNkZGViZmZkOGJhOTJjODVi
ZWNlNzMwMDAxYTdlLi45MDU5ZTZiMzdhNWEzMTJmMjIzNzE3NDAwYmIwNzJhNjFhNDk3N2I3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBA
IC00OSw4ICs0OSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9y
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEludGxDb2xsYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvLCAmY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGxDb2xsYXRvckNvbnN0cnVjdG9yKSB9OwogCkBAIC04NSwzMyArODUsMzMg
QEAgdm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGwKICAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0
aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxD
b2xsYXRvcihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFss
IG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5k
ZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNl
IGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBP
cmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlw
ZSUpLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KGNvbGxhdG9yKS4KLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0
YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5qc0NhbGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUodm0p
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSk7CiAgICAgQVNTRVJUKGNvbGxhdG9yKTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFs
aXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgogICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgIGNvbGxhdG9yLT5pbml0aWFsaXpl
Q29sbGF0b3IoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJ
bnRsQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlv
bnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVk
LCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBu
ZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5kZWZp
bmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKLSAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY2FsbGVlID0ganND
YXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAog
ICAgIC8vIEZJWE1FOiBDb2xsYXRvciBkb2VzIG5vdCBnZXQgdGhlIHdvcmthcm91bmQgZm9yIEVD
TUEtNDAyIDEuMCBjb21wYXRpYmlsaXR5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKQEAgLTEyMiwyNSArMTIyLDI0IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0
ZSkKICAgICBBU1NFUlQoY29sbGF0b3IpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVD
b2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgY29sbGF0b3ItPmluaXRp
YWxpemVDb2xsYXRvcigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50
KDEpKTsKKyAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRM
b2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEu
IExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcyku
Ci0gICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2Fs
ZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJl
cXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogCiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQocmVxdWVzdGVk
TG9jYWxlcykuCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyglQ29sbGF0b3IlLltbYXZh
aWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2
bSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9y
dGVkTG9jYWxlcygqc3RhdGUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9j
YWxlcygpLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygq
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKSwg
cmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAppbmRleCA3MGYxMWFlMjEzYTdmZjk1ODNlM2I3MWJl
NTM3OGMzOWUxNTQ4YmIwLi4zZWQ5YmViODczMzFkY2Y3NDk4ZDE1MGUwNzMyZDc3NTM4YmI0YTBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW50bENvbGxhdG9yQ29u
c3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKFZNJiB2bSkgY29uc3Qg
eyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKTsgfQorICAgIFN0
cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmpl
Y3QoKS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggY2RmNDg2YjU4NTQ1MDk3OTViMDM3ODI2NjZkMTI1YmZlNzFmNWZkNS4uNWE1NGNhNTg0Njg1
ZTJiNjBjMTQ0MmNjMzZjNzI5YmRmNTMwODQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0zNiw4ICsz
Niw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC03OCw0NSArNzgsNDUgQEAgdm9pZCBJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3Ry
aW5nKHZtLCAiT2JqZWN0IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEwLjMuNCBD
b2xsYXRvciBDb21wYXJlIEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBj
b2xsYXRvciBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0
b3IpIGlzIE9iamVjdCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1d
IGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KLSAgICBJbnRsQ29sbGF0b3IqIGNv
bGxhdG9yID0ganNDYXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAg
SW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBi
ZSB1bmRlZmluZWQuCiAgICAgLy8gNC4gSWYgeSBpcyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVu
ZGVmaW5lZC4KICAgICAvLyA1LiBMZXQgWCBiZSBUb1N0cmluZyh4KS4KLSAgICBKU1N0cmluZyog
eCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSk7CisgICAgSlNTdHJpbmcqIHgg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgLy8gNi4g
UmV0dXJuSWZBYnJ1cHQoWCkuCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KLSAgICBKU1N0
cmluZyogeSA9IHN0YXRlLT5hcmd1bWVudCgxKS50b1N0cmluZyhzdGF0ZSk7CisgICAgSlNTdHJp
bmcqIHkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAg
Ly8gOC4gUmV0dXJuSWZBYnJ1cHQoWSkuCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA5LiBSZXR1cm4gQ29tcGFyZVN0cmluZ3MoY29s
bGF0b3IsIFgsIFkpLgotICAgIGF1dG8geFZpZXdXaXRoU3RyaW5nID0geC0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKHN0YXRlKTsKKyAgICBhdXRvIHhWaWV3V2l0aFN0cmluZyA9IHgtPnZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8geVZpZXdXaXRoU3RyaW5nID0geS0+
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKHN0YXRlKTsKKyAgICBhdXRvIHlWaWV3V2l0aFN0cmlu
ZyA9IHktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqc3Rh
dGUsIHhWaWV3V2l0aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFy
ZVN0cmluZ3MoKmNhbGxGcmFtZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0cmlu
Zy52aWV3KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRv
clByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTAuMy4zIElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBM
ZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCi0gICAgSW50bENvbGxhdG9yKiBj
b2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIHN0YXRlLT50aGlzVmFs
dWUoKSk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENv
bGxhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghY29sbGF0b3Ip
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciJfcykpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKICAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKICAg
ICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZQogICAgICAgICBKU0Z1bmN0aW9u
KiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwg
ImNvbXBhcmUiX3MsIEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CiAKICAg
ICAgICAgLy8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVl
wrspLgotICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwg
ImNvbXBhcmUiX3MpOworICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3Is
IG51bGxwdHIsIDIsICJjb21wYXJlIl9zKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2Jv
dW5kQ29tcGFyZV1dIHRvIGJjLgogICAgICAgICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZt
LCBib3VuZENvbXBhcmUpOwpAQCAtMTM2LDE3ICsxMzYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSog
c3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMC4zLjUgSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRs
Q29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWlj
Q2FzdDxJbnRsQ29sbGF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29s
bGF0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRp
b25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IENvbGxhdG9yIl9zKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRPcHRp
b25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwCmluZGV4IGI1NGVjYjBjYjBlY2NhNjRjM2FmYjhhNmUyMmRiNTQ2YWEz
MzViOTEuLjdhNGIwNzcwZTQ4MTMyOTJlNjJhZTQ2ZmM5MWE0ZWVjNDdlOTkzMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY5LDggKzY5LDggQEAgU3RydWN0dXJlKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50
bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJu
YWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsSW50bERhdGVUaW1lRm9ybWF0LCBjb25zdHJ1
Y3RJbnRsRGF0ZVRpbWVGb3JtYXQpCkBAIC04NSw2MyArODUsNjIgQEAgdm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm8KICAgICBkYXRlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1h
dChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3JtYXQgKFtsb2Nh
bGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQg
aXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0
LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIDIuIExldCBkYXRlVGlt
ZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRl
VGltZUZvcm1hdFByb3RvdHlwZSUpLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1l
Rm9ybWF0KS4KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKS0+ZGF0ZVRp
bWVGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKIAogICAgIC8vIDQu
IFJldHVybiBJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMs
IG9wdGlvbnMpLgogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+
YXJndW1lbnQoMSkpOworICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdCk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3Jt
YXQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywg
b3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRl
ZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2Ug
bGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1
bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqIGNhbGxlZSA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92
aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fy
b3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCpzdGF0ZSwg
c3RhdGUtPnRoaXNWYWx1ZSgpLCBjYWxsZWUsIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2Fj
eUludGxDb25zdHJ1Y3RvcjxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCpjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCksIGNhbGxlZSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0
IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rhcmdl
dCwgJURhdGVUaW1lRm9ybWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJy
dXB0KGRhdGVUaW1lRm9ybWF0KS4KICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGlt
ZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUtPmRhdGVUaW1l
Rm9ybWF0U3RydWN0dXJlKHZtKSk7CiAgICAgICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CiAK
ICAgICAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1
bWVudCgxKSk7CisgICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoKmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CiAgICAgICAgIHJldHVybiBkYXRlVGltZUZvcm1hdDsKICAgICB9KSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JG
dW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExv
Y2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IC8vIDEyLjIuMiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVz
IFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxv
Y2FsZXMgYmUgJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9i
YWxPYmplY3QtPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAogICAgIC8v
IDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxl
cykuCi0gICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3RhdGUs
IGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVudCgxKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0
ZWRMb2NhbGVzKCpjYWxsRnJhbWUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmgKaW5kZXggYzJhOGY1YTJkZmY3NDUzODE1N2NjYzIwMTRmNmI4
ZmEyNTM0Mzk5YS4uMDdlMDc4MDBlYWRlNjJlMTgwNjQwZTJiNjAzNmMxMmNjMmIxNDVkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
CiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPmRhdGVUaW1lRm9y
bWF0U3RydWN0dXJlKCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
KFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4
IDcxNTg1N2I4YTU5ODM5ZjQ2OGZiNGI3NjQxYzYwZmI2MzIwZTdmZjkuLjNhOGYwMWQwMjlhODVh
NGVkMGE2ZjE3YjA3ZmQyMzVlNGZhZTViNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApA
QCAtNDEsMTEgKzQxLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKICNpZiBKU0NfSUNVX0hBU19VRklFTERQT1NJVEVSCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
VG9QYXJ0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIH0KIApAQCAtOTIsNDggKzkyLDQ4IEBAIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9y
bWF0RGF0ZVRpbWUoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDEyLjEuNyBEYXRlVGlt
ZSBGb3JtYXQgRnVuY3Rpb25zIChFQ01BLTQwMikKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRkYXRldGltZQogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0
KiBmb3JtYXQgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgZGF0ZSA9IHN0
YXRlLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGRvdWJsZSB2YWx1ZTsKIAogICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coc3RhdGUpKS50b051bWJlcihz
dGF0ZSk7CisgICAgICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50b051bWJlcihjYWxsRnJhbWUp
OwogICAgIGVsc2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJl
cihzdGF0ZSkpOworICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihj
YWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoKnN0YXRlLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdCgqY2FsbEZyYW1l
LCB2YWx1ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAv
LyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAy
LjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBk
dGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0
aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0
ZikgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0
ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVBy
aXZhdGVOYW1lKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkdGYgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gMi4gUmV0
dXJuSWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoIWR0ZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU0JvdW5k
RnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDMuIElm
IHRoZSBbW2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0
IG9iamVjdCBpcyB1bmRlZmluZWQsCkBAIC0xNDMsNyArMTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhl
Y1N0YXRlKgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5
IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4w
KQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zv
cm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3Vu
ZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQg
PSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0
T2JqZWN0LCBkdGYsIG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOworICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBkdGYsIG51bGxwdHIsIDEsICJmb3JtYXQiX3MpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4g
U2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIGR0Zi0+c2V0Qm91bmRGb3Jt
YXQodm0sIGJvdW5kRm9ybWF0KTsKQEAgLTE1Myw1MiArMTUzLDUyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4
ZWNTdGF0ZSoKIH0KIAogI2lmIEpTQ19JQ1VfSEFTX1VGSUVMRFBPU0lURVIKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRv
UGFydHMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQgSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyAoRUNNQS00MDIgNC4wKQogICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLUludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMKIAotICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhp
c1ZhbHVlKCkpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5
bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCi0g
ICAgSlNWYWx1ZSBkYXRlID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZGF0ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgZG91YmxlIHZhbHVlOwogCiAgICAgaWYgKGRh
dGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZGF0ZU5v
dyhzdGF0ZSkpLnRvTnVtYmVyKHN0YXRlKTsKKyAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgp
LnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0
aW1lQ2xpcChkYXRlLnRvTnVtYmVyKHN0YXRlKSk7CisgICAgICAgIHZhbHVlID0gV1RGOjp0aW1l
Q2xpcChkYXRlLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0
cygqc3RhdGUsIHZhbHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpjYWxsRnJhbWUsIHZhbHVl
KSkpOwogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRh
dGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGli
aWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFkYXRl
VGltZUZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
LmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1
dGVWYWx1ZVByaXZhdGVOYW1lKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkYXRlVGltZUZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAg
ICB9CiAKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3Mp
KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVU
aW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlv
bnMoKmNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcAppbmRleCA4NWNkNjQzZDVlNjM5ODAxMjk5MGI5YWI4ZTQ0YTFkN2QwNWY2ZTcx
Li45ZGU4ZDVlZThmYmZhMjcxY2JiYWZjY2ExMmFiZGYwZDUyZDg2MjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9CiAKQEAgLTY5LDggKzY5LDggQEAgU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4
ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNh
bGxJbnRsTnVtYmVyRm9ybWF0LCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KQpAQCAtODUsNjMg
Kzg1LDYyIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5CiAgICAgbnVtYmVyRm9ybWF0UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDExLjEuMiBJbnRsLk51
bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8v
IDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2
ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAg
Ly8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rvcihu
ZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFi
cnVwdChudW1iZXJGb3JtYXQpLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQo
KSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgp
KS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKHZtKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iq
PihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUodm0pKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBJbnRs
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0s
IHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CiAKICAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMp
LgogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1i
ZXJGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7
CisgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTEuMS4y
IEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjAp
CiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0
aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1Rhcmdl
dC4KICAgICAvLyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLgogCi0gICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBq
c0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwor
ICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICAvLyBG
SVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAx
LjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRs
TnVtYmVyRm9ybWF0Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZN
JiB2bSkgeworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNl
V2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4o
KmNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0gKFZNJiB2bSkg
ewogICAgICAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNv
bnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgogICAgICAgICAv
LyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgogICAgICAgICBJbnRsTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZS0+
bnVtYmVyRm9ybWF0U3RydWN0dXJlKHZtKSk7CiAgICAgICAgIEFTU0VSVChudW1iZXJGb3JtYXQp
OwogCiAgICAgICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6
ZU51bWJlckZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50
KDEpKTsKKyAgICAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwog
ICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0OwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMS4yLjIgSW50
bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChF
Q01BLTQwMiAyLjApCiAKICAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlTnVtYmVy
Rm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3Qg
SGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxOdW1i
ZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CiAKICAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9j
YWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgotICAgIFZlY3RvcjxTdHJp
bmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0g
Y2Fub25pY2FsaXplTG9jYWxlTGlzdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVl
c3RlZExvY2FsZXMsIG9wdGlvbnMpLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCBy
ZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqY2FsbEZyYW1l
LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKaW5k
ZXggYTQ5OWQzZmU2YTcxNTRjYzYzYmZjNWZjNDMxOGZiMjFiNmQwMWIzMC4uMDNhYmViYWVjNDIx
YWQ3YTc4MGI5ZDNlODJmZmZmYTFkZTk5YmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3Ry
dWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9i
YWxPYmplY3Qodm0pLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSog
bnVtYmVyRm9ybWF0U3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCkt
Pm51bWJlckZvcm1hdFN0cnVjdHVyZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAppbmRleCA1NzA5YzkyMmI4NWE3ZTM4MjdkYjc1NzI1ZGVhNzlmOTZiNGFmOWI5Li41
ZDFmODQ0ZThjZDI5ZjUyZmI3MDYwMjVhZGUzYjY1YjQxYTI5MDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcApAQCAtMzksMTEgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0
dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogI2lmIEhBVkUoSUNVX0ZPUk1BVF9ET1VCTEVfRk9SX0ZJRUxEUykKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogI2VuZGlmCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtODksNDQgKzg5LDQ0IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk9iamVjdCIpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVu
Y0Zvcm1hdE51bWJlcihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxMS4zLjQgRm9ybWF0IE51
bWJlciBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRo
aXMgdmFsdWUuCiAgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKG5mKSBpcyBPYmplY3QgYW5kIG5mIGhh
cyBhbiBbW2luaXRpYWxpemVkTnVtYmVyRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSAgdHJ1ZS4KLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1h
dCogbnVtYmVyRm9ybWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIElmIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZh
bHVlIGJlIHVuZGVmaW5lZC4KICAgICAvLyA0LiBMZXQgeCBiZSBUb051bWJlcih2YWx1ZSkuCi0g
ICAgZG91YmxlIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7Cisg
ICAgZG91YmxlIG51bWJlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZy
YW1lKTsKICAgICAvLyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDYuIFJldHVybiBGb3JtYXRO
dW1iZXIobmYsIHgpLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpzdGF0ZSwgbnVtYmVyKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0TnVtYmVyKCpjYWxsRnJhbWUsIG51bWJlcikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9ybWF0
IG9iamVjdC4KLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51
bWJlckZvcm1hdCo+KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIEludGxOdW1iZXJGb3Jt
YXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21w
YXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICgh
bmYpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3Rh
dGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQ
cml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50
bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0
PEludGxOdW1iZXJGb3JtYXQqPih2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGlmICghbmYpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsK
ICAgICAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0
KCk7CiAgICAgLy8gMi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKQEAgLTEz
Niw3ICsxMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdAogICAgICAgICAvLyBiLiBUaGUg
dmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24q
IHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAi
Zm9ybWF0Il9zLCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMp
OwogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMg
dmFsdWXCuykuCi0gICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgbmYsIG51bGxwdHIsIDEsICJm
b3JtYXQiX3MpOworICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgbnVsbHB0ciwg
MSwgImZvcm1hdCJfcyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJm
LgogICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKQEAgLTE0Niw0
NSArMTQ2LDQ1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIHN0CiB9CiAKICNpZiBIQVZFKElDVV9G
T1JNQVRfRE9VQkxFX0ZPUl9GSUVMRFMpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIC8vIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
IChFQ01BLTQwMikKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1p
bnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUuZm9ybWF0dG9wYXJ0cwogCi0gICAgSW50bE51bWJl
ckZvcm1hdCogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4o
dm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiX3MpKTsKIAotICAg
IGRvdWJsZSB2YWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAg
ZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0
LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpjYWxs
RnJhbWUsIHZhbHVlKSkpOwogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgc3Rh
dGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkg
d2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFudW1iZXJGb3Jt
YXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3Rh
dGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQ
cml2YXRlTmFtZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkuZ2V0KGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50
bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgbnVtYmVyRm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHZhbHVlKTsKICAgICB9CiAKICAgICBp
ZiAoIW51bWJlckZvcm1hdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlv
bnMoKnN0YXRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAppbmRleCA4MDEyOTRhOGI3Yjg1YmVlZTY5ZGNhNDIwNzUxMTA3ZWQxNGNjMzI3Li40
ZThkZDNjODQ0YjkwOWZkMmUzYWE3OWZmYzFlNjU5MzllM2UwYmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKElu
dGxPYmplY3QpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2Jq
ZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogc3RhdGljIEpTVmFsdWUgY3JlYXRlQ29sbGF0
b3JDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CkBAIC05MTcsMjcgKzkx
NywyNiBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0
cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0
RnVuY0dldENhbm9uaWNhbExvY2FsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKGxv
Y2FsZXMpCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5n
ZXRjYW5vbmljYWxsb2NhbGVzCiAKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgVmVjdG9yPFN0cmluZz4gbG9jYWxlTGlzdCA9IGNhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJp
bmc+IGxvY2FsZUxpc3QgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KCpjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gbGVuZ3RoID0gbG9jYWxlTGlzdC5zaXplKCk7CiAKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2Jh
bE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogbG9jYWxlQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVh
dGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBsZW5ndGgpOwogICAgIGlmICghbG9jYWxl
QXJyYXkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSk7Cisg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBsb2NhbGVBcnJheS0+cHV0RGlyZWN0SW5kZXgo
c3RhdGUsIGksIGpzU3RyaW5nKHZtLCBsb2NhbGVMaXN0W2ldKSk7CisgICAgICAgIGxvY2FsZUFy
cmF5LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGksIGpzU3RyaW5nKHZtLCBsb2NhbGVMaXN0
W2ldKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZUFycmF5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc0NvbnN0cnVjdG9yLmNwcAppbmRleCBiMDIyMjUwY2FmMTFhZjNjMzk1MGExZWYxMDEzOWRk
NDhjMzg5ZWUyLi4zN2FjYzg5ZTE2NjFhMzA4YTQ5MTRiZTIxMDY5OGMyNGFiYTBlMGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
UGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogfQogCkBAIC02Nyw4ICs2Nyw4IEBAIFN0cnVjdHVyZSogSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxl
cyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEludGxQbHVyYWxSdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQ
bHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvcjo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2Fs
bEludGxQbHVyYWxSdWxlcywgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKQpAQCAtODMsNDcgKzgz
LDQ2IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlCiAgICAgcGx1cmFsUnVsZXNQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsUGx1cmFsUnVsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuMi4xIEludGwuUGx1cmFs
UnVsZXMgKFsgbG9jYWxlcyBbICwgb3B0aW9ucyBdIF0pCiAgICAgLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUs
IHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKj4o
c3RhdGUtPmpzQ2FsbGVlKCkpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSh2bSkpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5wbHVyYWxSdWxlc1N0cnVj
dHVyZSh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBJbnRsUGx1cmFsUnVsZXM6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQocGx1cmFsUnVsZXMpOwogCiAgICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHBsdXJhbFJ1bGVzLT5pbml0aWFsaXplUGx1cmFsUnVsZXMo
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgcGx1
cmFsUnVsZXMtPmluaXRpYWxpemVQbHVyYWxSdWxlcygqY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsdXJhbFJ1bGVzKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTMuMi4xIEludGwuUGx1
cmFsUnVsZXMgKFsgbG9jYWxlcyBbICwgb3B0aW9ucyBdIF0pCiAgICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJQbHVyYWxSdWxlcyIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlBsdXJhbFJ1bGVzIikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
UGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEzLjMuMiBJbnRsLlBs
dXJhbFJ1bGVzLnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCiAgICAg
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5z
dXBwb3J0ZWRsb2NhbGVzb2YKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJp
bmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxOdW1iZXJGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0g
Y2Fub25pY2FsaXplTG9jYWxlTGlzdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAg
VmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3Qo
KmNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxl
TG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMo
KmNhbGxGcmFtZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IuaAppbmRleCA3OTg4OWJmYzI0NDliMDY2MjViZWU5NzdhMmQ2NGYwM2M1YThmY2FiLi5kODNl
YTFjMmMzZjMxNGNjMjM5YzJmMmVjODJiN2FiYzQ1MDU0ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4g
Z2xvYmFsT2JqZWN0KHZtKS0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVy
ZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qo
KS0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKaW5kZXggZDk5M2RmNWQwMTcyYmNkYzE0OGVmYTdlNjhhMGI4ZmVhMDcxODViNi4uMWJm
Y2Q0M2RkMmU5Y2E1ZjIxZjI2YWEyZTcwMDA3NTJhMjk3MzFiYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
Y3BwCkBAIC0zNiw4ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC03OCwzNyArNzgs
MzcgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU3RydWN0dXJlKikKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiT2JqZWN0IiksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlRnVuY1NlbGVjdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMy40LjMgSW50bC5QbHVyYWxS
dWxlcy5wcm90b3R5cGUuc2VsZWN0ICh2YWx1ZSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3QKLSAgICBJ
bnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVs
ZXMqPih2bSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJh
bFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuUGx1cmFsUnVs
ZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1
bGVzLnByb3RvdHlwZS5zZWxlY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpKTsKIAotICAgIGRvdWJsZSB2YWx1ZSA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAgZG91YmxlIHZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgqc3RhdGUs
IHZhbHVlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHBsdXJhbFJ1bGVzLT5zZWxlY3QoKmNhbGxGcmFtZSwgdmFsdWUpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxMy40LjQgSW50bC5QbHVy
YWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCiAgICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUucmVzb2x2
ZWRvcHRpb25zCi0gICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nh
c3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgSW50bFBs
dXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKCFwbHVyYWxSdWxlcykKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
ICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJh
bFJ1bGVzIl9zKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShwbHVyYWxSdWxlcy0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+cmVzb2x2ZWRP
cHRpb25zKCpjYWxsRnJhbWUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNTc1YzU3YzFlMjI5ZDBkZWJjZTc4M2FhOTVhZTI5NGE1NWQzZGUxYy4u
MDQ5YjYwY2U2NzY3OGEyN2NjMDRmZGYwYjlkZWNjNDE0MmE0Nzk2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1
ZmZlckZ1bmNJc1ZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB0ZW1wbGF0ZTw+CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7CkBAIC02NywyNiArNjcsMjYgQEAgdm9pZCBKU0dlbmVy
aWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0FycmEKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAKICAgICBpZiAoc2hhcmluZ01vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgewotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
c1ZpZXcsIGFycmF5QnVmZmVyRnVuY0lzVmlldywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1Zp
ZXdQcml2YXRlTmFtZSgpLCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICB9CiB9CiAKIHRlbXBs
YXRlPEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGU+Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+
Ojpjb25zdHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+
Ojpjb25zdHJ1Y3RBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IGpzQ2FzdDxKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKj4oZXhlYy0+anND
YWxsZWUoKSk7CisgICAgSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBqc0Nhc3Q8SlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+
anNDYWxsZWUoKSk7CiAKLSAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFy
Z2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVy
ZShzaGFyaW5nTW9kZSkpOworICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoOwotICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkpIHsKLSAgICAgICAgbGVuZ3RoID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9J
bmRleChleGVjLCAibGVuZ3RoIik7CisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
KSB7CisgICAgICAgIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9J
bmRleChjYWxsRnJhbWUsICJsZW5ndGgiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQWx0aG91
Z2ggdGhlIGRvY3VtZW50YXRpb24gZG9lc24ndCBzYXkgc28sIGl0IGlzIGluIGZhY3QgY29ycmVj
dCB0byBzYXkKQEAgLTk3LDcgKzk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3QKIAogICAg
IGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIDEpOwogICAgIGlm
ICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjLCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAgICAgCiAgICAgaWYgKHNo
YXJpbmdNb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCkKICAgICAgICAgYnVm
ZmVyLT5tYWtlU2hhcmVkKCk7CkBAIC0xMTksMTkgKzExOSwxOSBAQCBjb25zdCBDbGFzc0luZm8q
IEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+OjppbmZvKCkKICAg
ICByZXR1cm4gJkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+Ojpz
X2luZm87CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJh
eUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsQXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFycmF5QnVmZmVyIikp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAyNC4xLjMuMQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlckZ1bmNJc1ZpZXcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWljQ2FzdDxKU0FycmF5QnVm
ZmVyVmlldyo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcq
PihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKIC8v
IEluc3RhbnRpYXRlIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3JzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuaAppbmRleCA0MmYxNjNmZTM4YWNjNGY3Y2NjYzkzZTg3YmUxNjk2MmM5Y2NiMzRiLi44YWFj
YTVkZTdjZjY0YTVlNDQ1NTRmMjE1YWY1MWZhOGQ2MTNhN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaApA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yIGZp
bmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIEpTR2VuZXJpY0FycmF5QnVmZmVy
Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7
CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBcnJh
eUJ1ZmZlcihFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0FycmF5QnVmZmVyUHJvdG90eXBl
KiBwcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
aW5kZXggYzk3ODI0MjQxZWRhMGI1MmRkZDFhNjhlMDFmY2U1ZWVjYjQxNjgzMy4uYjExMDE2MGYz
MTZlMGYzODAzNjRjZTg5OTJhMzM5OGI4ZjRiNDI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTM1
LDMwICszNSwyOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVu
Y1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSk7Ci0gICAgCi0gICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgSlNBcnJheUJ1ZmZl
ciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QgfHwgdGhpc09iamVjdC0+aW1w
bCgpLT5pc1NoYXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlJlY2VpdmVyIG9mIHNsaWNlIG11c3QgYmUgYW4gQXJyYXlCdWZmZXIuIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVy
IG9mIHNsaWNlIG11c3QgYmUgYW4gQXJyYXlCdWZmZXIuIl9zKTsKIAotICAgIGRvdWJsZSBiZWdp
biA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgYmVnaW4g
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGRvdWJs
ZSBlbmQ7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgIGVuZCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBl
bmQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihjYWxsRnJhbWUp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3Ro
KCk7CiAgICAgCiAgICAgYXV0byBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNl
KGJlZ2luLCBlbmQpOwogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5n
bG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdN
b2RlKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheUJ1
ZmZlclN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAogICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBX
VEZNb3ZlKG5ld0J1ZmZlcikpOwogICAgIApAQCAtNjYsMzcgKzY0LDM3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjKQogfQogCiAvLyBodHRwOi8vdGMzOS5naXRodWIuaW8vZWNtYXNjcmlwdF9zaGFy
ZWRtZW0vc2htZW0uaHRtbCNzZWMtZ2V0LWFycmF5YnVmZmVyLnByb3RvdHlwZS5ieXRlbGVuZ3Ro
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvR2V0
dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhbiBhcnJheSBidWZmZXIgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhbiBhcnJheSBidWZmZXIgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKIAogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYW4gYXJyYXkgYnVmZmVyIl9zKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNT
aGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJS
ZWNlaXZlciBzaG91bGQgbm90IGJlIGEgc2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgbm90IGJlIGEgc2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CiAKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCkt
PmJ5dGVMZW5ndGgoKSkpKTsKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFzY3Jp
cHRfc2hhcmVkbWVtL3NobWVtLmh0bWwjU3RydWN0dXJlZERhdGEuU2hhcmVkQXJyYXlCdWZmZXIu
cHJvdG90eXBlLmdldF9ieXRlTGVuZ3RoCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzaGFyZWRBcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRl
KiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlC
dWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhbiBhcnJheSBidWZmZXIgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXRoaXNPYmpl
Y3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGFuIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYW4gYXJyYXkg
YnVmZmVyIl9zKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmlzU2hhcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
c2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSBzaGFyZWQgYXJyYXkgYnVm
ZmVyIl9zKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpKSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXgg
N2Q2NTlkYmMzNDQ4MzgyZThjNDg1N2Q4YWU4MTk5NWQ0ZDRiMGJiNy4uNjYwZWQ2ZTczNGNiZTA5
NjdhMGZlMjY3ZjZjMTg5ZDkwZWZjOGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0JvdW5kRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0JvdW5kRnVuY3Rpb24pIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTQm91
bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CkBAIC01MSwxNiArNTEsMTYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNh
bGwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENv
ZGVGb3JDYWxsLCBNdXN0Q2hlY2tBcml0eSk7CiAgICAgfQogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZXhlYy0+dm0oKSwgdGFyZ2V0
RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FsbChjYWxsRnJhbWUsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJvdW5k
RnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9u
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTQm91
bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwogCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYm91bmRGdW5j
dGlvbi0+Ym91bmRBcmdzKCk7CiAKQEAgLTY5LDEwICs2OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKICAgICB9
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
CisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwog
ICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
ICAgICB9CiAKQEAgLTgwLDMwICs4MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCB0YXJnZXRGdW5jdGlv
biwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0
YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRo
aXMoKSwgYXJncykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShjYWxsKGNhbGxGcmFtZSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Ym91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5j
dGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJn
cy5hcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBhcmdz
LmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9u
KCkpOwogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBl
IGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGV4ZWMtPnZtKCksIHRhcmdldEZ1bmN0
aW9uLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBn
ZXRDb25zdHJ1Y3REYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0
cnVjdERhdGEpOwogICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5v
bmUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1
bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoY2FsbEZyYW1lLCB0YXJnZXRGdW5jdGlvbiwgY29u
c3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRG
dW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKICAgICBKU0FycmF5KiBib3VuZEFy
Z3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKIApAQCAtMTEyLDEwICsxMTIsMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+
bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5k
ZXhRdWlja2x5KGkpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoaSkpOwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQo
KSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTEyMywyMCArMTIzLDIwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5
cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBj
b25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBl
OjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3QoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERh
dGEsIGFyZ3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNv
bnN0cnVjdERhdGEsIGFyZ3MpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aXNCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShz
dGF0aWNfY2FzdDxib29sPihqc0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPnZt
KCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9vbD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVu
Y3Rpb24qPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlQm91
bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRPYmplY3QgPSBqc0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kT2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91
bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJvdW5kT2JqZWN0LT50YXJnZXRG
dW5jdGlvbigpLT5oYXNJbnN0YW5jZShjYWxsRnJhbWUsIHZhbHVlKSkpOwogfQogCiBpbmxpbmUg
U3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24pCkBAIC0yMTAsNyArMjEwLDcgQEAgSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFy
Z3NDb3B5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCh2bSkp
OworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0
ciwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7
ICsraSkgewogICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgbV9ib3VuZEFyZ3MtPmdldEluZGV4
UXVpY2tseShpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5oCmluZGV4IDhiYjRiNzdhYzU3ODdkNjFmMmRlMzY5ZDBjODViMGRlY2JhZmFlOTIu
LjIyNWFjYjBiZThkNTNiNGJhNDYyNjY2ZWYzZDc1MGU5YzZkMzBlZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCkBAIC0yOSwxMiArMjks
MTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5j
dGlvbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFu
Y2VCb3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBpc0JvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCAyYzY0OWUxNjAyMGZkMGJhNDk4NmIwZjEzNzA2N2MyYTgxNzU0MmQ4
Li5hZTgzMTUxYmRlMWE2YTZiZWVjYjNkODljYTdhZGVlNTkyMDdhMWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiBjbGFzcyBKU0JpZ0ludDsKLWNs
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpT
VmFsdWVTb3VyY2U7CiBjbGFzcyBWTTsKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgUHJvcGVydHlO
YW1lOwogY2xhc3MgUHJvcGVydHlTbG90OwogY2xhc3MgUHV0UHJvcGVydHlTbG90OwogY2xhc3Mg
U3RydWN0dXJlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogI2lmIEVOQUJMRShERkdf
SklUKQogbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBKSVRDb21waWxlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNTQ2MTI3NGViZDc3ZGZmM2YwNWYxMmRjMTA3Mjlh
ZmUxNDY4ZjIwMS4uZTk1ZDUxMmEzOGU2ODJkYmZkYTM2NGQyODBiMWU4ZDc3YWRiYTdiOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTM4LDEwICszOCwxMCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ29tcGxldGVTdWJz
cGFjZTsKIGNsYXNzIENvcHlWaXNpdG9yOwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7Ci1jbGFz
cyBFeGVjU3RhdGU7CiBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXc7
CiBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdDsKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgUHJv
cGVydHlOYW1lOwogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBj
bGFzcyBKU0NlbGxMb2NrOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBlbnVtIGNs
YXNzIEdDRGVmZXJyYWxDb250ZXh0QXJnUHJlc2Vuc2UgewogICAgIEhhc0FyZywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNWM3MTJjMDNiOWY0YWRkODQ3ZTI3NDQxYjEzMDI2Mzk5
NTcxMDE4ZC4uNTVjNTBlNGYxNDRlMDBiNmNiZDBjNDlkNTI0Njc1NjEzZTBjZmY2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTM1LDI5ICszNSwyOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKSB9OwogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbiA9IGpzQ2FzdDxKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSk7CisgICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogY3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0
b21HZXR0ZXJTZXR0ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+Y3VzdG9tR2V0dGVy
U2V0dGVyKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICBpZiAo
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPmlzU2V0dGVyKCkpIHsKICAgICAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0gY3VzdG9tR2V0dGVyU2V0dGVyLT5z
ZXR0ZXIoKTsKICAgICAgICAgQVNTRVJUKHNldHRlcik7Ci0gICAgICAgIGNhbGxDdXN0b21TZXR0
ZXIoZXhlYywgc2V0dGVyLCB0cnVlLCB0aGlzVmFsdWUsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICAgICAgY2FsbEN1c3RvbVNldHRlcihjYWxsRnJhbWUsIHNldHRlciwgdHJ1ZSwgdGhpc1ZhbHVl
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5p
bmhlcml0czxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtKSkgewogICAgICAgICBhdXRvIGRv
bUF0dHJpYnV0ZSA9IGpzQ2FzdDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0
ZXJTZXR0ZXIpLT5kb21BdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHModm0sIGRvbUF0dHJpYnV0ZS5jbGFzc0luZm8pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGRvbUF0dHJpYnV0ZS5j
bGFzc0luZm8sIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvLCBjdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOwogICAgIH0KIAotICAgIHJldHVybiBjdXN0b21HZXR0
ZXJTZXR0ZXItPmdldHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOworICAgIHJldHVybiBjdXN0
b21HZXR0ZXJTZXR0ZXItPmdldHRlcigpKGNhbGxGcmFtZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNW
YWx1ZSksIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSk7CiB9CiAK
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgVHlwZSB0eXBlLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaAppbmRleCA4MGEyYzgxYmJmOGY4YTNjMzE1YjUzMGY5OTA3
Mjg3Njk2ZmE3NWVlLi40ZmVkMGVkNDZiOWZiZTZhOWZjMjVjY2ZlZjRlMjgwZTdiMDA0NzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgVHlwZSwgY29uc3QgUHJvcGVydHlOYW1lJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCBjb25zdCBTdHJpbmcm
KTsKIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkNhbGwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0
dGVyU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9nZXR0ZXJTZXR0ZXIuZ2V0KCk7IH0KICAgICBi
b29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlNldHRlcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAppbmRleCA3YTJlYzc0Mjc2YzU3MDQ2NDQ4ZWRmZDM5ZDhmZTE0OTk1ZTg0YWIzLi5j
MmMyZjc5OTQ4Nzk0NjI0ZWMzODBhNTIxNWJjMGRlNTE2ZTE2ZDYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAt
NjEsMjUgKzYxLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogQGVuZAogKi8KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEludDgoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50MzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0VWludDgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMihFeGVjU3RhdGUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9h
dDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0NjQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRVaW50OChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNTZXRVaW50MTYoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0Rmxv
YXQ2NChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRV
aW50MTYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY1NldEludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
RnVuY1NldEludDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDgoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNTZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvR2V0dGVyQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIH0KIApAQCAtMTIwLDkgKzEyMCw5IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlld1Byb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
RW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBn
ZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0Rh
dGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBleGVjLT50
aGlzVmFsdWUoKSk7CkBAIC0xNjMsOSArMTYzLDkgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShF
eGVjU3RhdGUqIGV4ZWMpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1FbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIHNldERhdGEo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTRGF0YVZpZXcq
IGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKQEAgLTIxMCwxMjAgKzIxMCwxMjAgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVj
U3RhdGUqIGV4ZWMpCiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigibWlzc2luZy1wcm90
b3R5cGVzIikKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0
dGVyQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0Rh
dGFWaWV3Kj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0RhdGFWaWV3KiB2aWV3ID0g
anNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0
YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJl
IGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZpZXct
PnBvc3NpYmx5U2hhcmVkSlNCdWZmZXIoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodmlldy0+cG9zc2libHlTaGFyZWRKU0J1ZmZlcihjYWxsRnJhbWUpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWND
YXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2
aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFW
aWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmpl
Y3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmll
dyBvYmplY3QiKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+
bGVuZ3RoKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1By
b3RvR2V0dGVyQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5
bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTRGF0
YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhp
c3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0
cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBnZXREYXRhPEludDhBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0
YTxJbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDE2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBnZXREYXRhPEludDE2QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdl
dERhdGE8SW50MTZBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMihFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8SW50MzJBZGFwdG9yPihleGVjKTsKKyAgICByZXR1
cm4gZ2V0RGF0YTxJbnQzMkFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90
b0Z1bmNHZXRVaW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0YTxVaW50OEFkYXB0b3I+KGV4ZWMpOworICAg
IHJldHVybiBnZXREYXRhPFVpbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWlu
dDE2KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDE2QWRhcHRvcj4oZXhl
Yyk7CisgICAgcmV0dXJuIGdldERhdGE8VWludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jR2V0VWludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8VWludDMyQWRh
cHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8VWludDMyQWRhcHRvcj4oZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFW
aWV3UHJvdG9GdW5jR2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RGF0
YTxGbG9hdDMyQWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIGdldERhdGE8RmxvYXQzMkFkYXB0
b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIGdldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXREYXRh
PEZsb2F0NjRBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJ
bnQ4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBzZXREYXRhPEludDhBZGFwdG9yPihleGVjKTsKKyAgICByZXR1cm4gc2V0
RGF0YTxJbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDE2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBzZXREYXRhPEludDE2QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJu
IHNldERhdGE8SW50MTZBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9G
dW5jU2V0SW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8SW50MzJBZGFwdG9yPihleGVjKTsKKyAgICBy
ZXR1cm4gc2V0RGF0YTxJbnQzMkFkYXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50OChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0RGF0YTxVaW50OEFkYXB0b3I+KGV4ZWMpOwor
ICAgIHJldHVybiBzZXREYXRhPFVpbnQ4QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDE2KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDE2QWRhcHRvcj4o
ZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8VWludDE2QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJv
dG9GdW5jU2V0VWludDMyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHNldERhdGE8VWludDMy
QWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8VWludDMyQWRhcHRvcj4oZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gc2V0
RGF0YTxGbG9hdDMyQWRhcHRvcj4oZXhlYyk7CisgICAgcmV0dXJuIHNldERhdGE8RmxvYXQzMkFk
YXB0b3I+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIHNldERhdGE8RmxvYXQ2NEFkYXB0b3I+KGV4ZWMpOworICAgIHJldHVybiBzZXRE
YXRhPEZsb2F0NjRBZGFwdG9yPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiBJR05PUkVf
Q0xBTkdfV0FSTklOR1NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0ZU1hdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
ZU1hdGguaAppbmRleCA5ZDQ5NzU4N2FhMjEyOWFjOTJlNmMwYjYyZTdjYTVjYTVjMjkwZjkzLi42
MDQxZDVlZWUwZWQwNjAyMDMxZDM5ZDM0OTFmNDVmZjJmM2NlMDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oCkBAIC00Nyw4ICs0Nyw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBW
TTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoVk0mLCBkb3VibGUsIFdURjo6VGltZVR5cGUgb3V0cHV0
VGltZVR5cGUsIEdyZWdvcmlhbkRhdGVUaW1lJik7CiBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUg
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKFZNJiwgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBkb3Vi
bGUsIFdURjo6VGltZVR5cGUgaW5wdXRUaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDJjYWU0NGRhNzFiZDE3ZWJjMzhhMDlkOTZi
MTc4ZGRlYmIyYWFlMzMuLmVhYWRkZDU5MjBkMGQ5ZjcxMjE5N2FiZDc2ZmMyZjJlMjdkNjU0ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01
MiwxMSArNTIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhl
YywgZXhlYy0+anNDYWxsZWUoKSkpOworICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9OwpAQCAtMTE1LDYgKzExNSw3IEBAIEpTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoVk0m
IHZtLCBKU0dsb2JhCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZSgpCisgICAgLCBtX2ds
b2JhbE9iamVjdCh2bSwgdGhpcywgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKIHsKICAgICBh
c3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CiB9CkBAIC0xNjMsNyArMTY0LDcgQEAgSlNP
YmplY3QqIEpTRnVuY3Rpb246OnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbihWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoTElLRUxZKHByb3RvdHlwZS5pc09iamVjdCgpKSkKICAgICAg
ICAgcmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFpc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1ydW50aW1lLXNlbWFudGlj
cy1ldmFsdWF0ZWJvZHkKICAgICAgICAgaWYgKGlzR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShq
c0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkpKQpAQCAtMTgzLDcgKzE4NCw3IEBAIEZ1bmN0aW9u
UmFyZURhdGEqIEpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNT
dGF0ZSogZXhlYywgc2l6CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCog
cHJvdG90eXBlID0gcHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKICAgICBGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZSh2bSwgdGhp
cyk7Ci0gICAgcmFyZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwg
Z2xvYmFsT2JqZWN0KHZtKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwgdGhpcyk7CisgICAg
cmFyZURhdGEtPmluaXRpYWxpemVPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2Jq
ZWN0KCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHksIHRoaXMpOwogCiAgICAgLy8gQSBERkcg
Y29tcGlsYXRpb24gdGhyZWFkIG1heSBiZSB0cnlpbmcgdG8gcmVhZCB0aGUgcmFyZSBkYXRhCiAg
ICAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBpdCBzZWVzIGl0IHByb3Blcmx5IGFsbG9jYXRl
ZApAQCAtMTk5LDcgKzIwMCw3IEBAIEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmluaXRp
YWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDCiAgICAgQVNTRVJU
KGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhl
Yyk7Ci0gICAgbV9yYXJlRGF0YS0+aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKHZt
LCBnbG9iYWxPYmplY3Qodm0pLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKKyAg
ICBtX3JhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUodm0sIGdsb2Jh
bE9iamVjdCgpLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKICAgICByZXR1cm4g
bV9yYXJlRGF0YS5nZXQoKTsKIH0KIApAQCAtNDM3LDkgKzQzOCw5IEBAIGJvb2wgSlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOCiAgICAgICAgICAgICAgICAgLy8gVW5saWtlIGZ1bmN0aW9uIGluc3RhbmNlcywg
dGhlIG9iamVjdCB0aGF0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgYSBHZW5lcmF0b3JGdW5jdGlvbidz
IHByb3RvdHlwZQogICAgICAgICAgICAgICAgIC8vIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBj
b25zdHJ1Y3RvciBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyB0aGUgR2VuZXJhdG9yRnVuY3Rpb24g
aW5zdGFuY2UuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtZ2VuZXJhdG9yZnVuY3Rpb24taW5zdGFuY2VzLXByb3RvdHlwZQotICAgICAgICAg
ICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCh2bSktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKS0+cGFyc2VNb2RlKCkpKQotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPmFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hc3luY0dlbmVy
YXRvclByb3RvdHlwZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHBy
b3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
c09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDE4
ZDljZmJmMTU4OGFjNjQ5YmY2ODQ4NWI1ZDIzNDFlOWE5OWQwNGMuLjNmZWY5MmQ0NDVlYzRjMDdl
NGYzMTI2MGNjODNjZDNkMmQ0ZmU0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2lnbmF0dXJlOwogfQogCiAK
LUpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBn
ZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0mLCBKU09iamVjdCopOwogCkBAIC0xMjQsNiArMTI0
LDExIEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fcmFyZURhdGEpOwogICAgIH0KIAorICAg
IHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsT2JqZWN0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9nbG9iYWxPYmplY3Qp
OworICAgIH0KKwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YSkpCkBAIC0xNDQsNiArMTQ5LDggQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiByYXJl
RGF0YTsKICAgICB9CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KKwogICAgIGJvb2wgaXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSBjb25zdDsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7
CiAgICAgYm9vbCBpc0Fub255bW91c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OwpAQCAtMjI0LDYg
KzIzMSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogCiAgICAgV3Jp
dGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVy
PEZ1bmN0aW9uUmFyZURhdGE+IG1fcmFyZURhdGE7CisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFs
T2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIGNsYXNzIEpTU3RyaWN0RnVuY3Rpb24gZmlu
YWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCAxODcyNjg0ZGE0MGNlYWM0ZWI5OGFkMmQw
Mzg1NGJjZDk4NGM0YWM0Li4zZTA0NzVjODQ0ODYyZGY5NjJmNWQ3NTQ3ZWUxMjFkZmMyNGJjMDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHMKICAgICA6IEJh
c2Uodm0sIHNjb3BlLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4
ZWN1dGFibGUpCiAgICAgLCBtX3JhcmVEYXRhKCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0
aGlzLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKQogewogICAgIGFzc2VydFR5cGVJbmZvRmxh
Z0ludmFyaWFudHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oCmluZGV4IGQ4MjNhYzUzNzRkMjE2YTQyMjFkZTUxODk5YWQyZWEwODFhOGRjM2Uu
LjdmZTkxYzUwYmY0NjFjZmVkMjUwN2NiYWFjYTgxMGEwNjM1YmM5NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMzgsMTAgKzM4LDEwIEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5l
cmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPFZpZXdDbGFzcz46OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIwNiw1
NiArMjA2LDU2IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFN0CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBT
dHJ1Y3R1cmUqIHBhcmVudFN0cnVjdHVyZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3Qodm0pLT50
eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1Y3R1cmUpOworICAg
IEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0g
ZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6
VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5uZXdUYXJnZXQoKSwgcGFyZW50U3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNpemVfdCBhcmdDb3VudCA9IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsKKyAgICBzaXplX3QgYXJnQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZpZXdDbGFz
czo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3Ig
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3Ig
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CiAKLSAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoZXhlYywg
c3RydWN0dXJlLCAwKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgMCkpKTsK
ICAgICB9CiAKLSAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGxlbmd0aCA9IFdURjo6bnVsbG9wdDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVm
ZmVyKj4odm0sIGZpcnN0VmFsdWUpICYmIGFyZ0NvdW50ID4gMSkgewotICAgICAgICBvZmZzZXQg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGV4ZWMsICJieXRlT2Zmc2V0Iik7
CisgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRl
eChjYWxsRnJhbWUsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChhcmdDb3VudCA+IDIpIHsK
ICAgICAgICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBl
RGF0YVZpZXcpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgRGF0YVZpZXcgYnl0ZUxlbmd0
aCBpcyBwcmVzZW50IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCi0gICAgICAg
ICAgICAgICAgSlNWYWx1ZSBieXRlTGVuZ3RoVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgyKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGJ5dGVMZW5ndGhWYWx1ZSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgICAgICAgICAgICAgaWYgKCFieXRlTGVuZ3Ro
VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRl
TGVuZ3RoVmFsdWUudG9JbmRleChleGVjLCAiYnl0ZUxlbmd0aCIpOworICAgICAgICAgICAgICAg
ICAgICBsZW5ndGggPSBieXRlTGVuZ3RoVmFsdWUudG9JbmRleChjYWxsRnJhbWUsICJieXRlTGVu
Z3RoIik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikudG9J
bmRleChleGVjLCAibGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0luZGV4KGNhbGxGcmFtZSwgImxlbmd0aCIpOwogICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxWaWV3Q2xhc3M+KGV4ZWMsIHN0cnVjdHVyZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGZpcnN0VmFsdWUpLCBvZmZzZXQsIGxlbmd0aCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPFZpZXdDbGFzcz4oY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIEpTVmFsdWU6OmVuY29k
ZShmaXJzdFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFZpZXdDbGFzcz4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5l
cmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBWaWV3Q2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVG
dW5jdGlvbnMuaAppbmRleCBhZGIzMjc5M2I5MmM3ZDc3NzlmNzllMDE4Mjk1OTBlMDhhOWVhMTZl
Li4wYTRiMTM0MjExMTI0Mjg5YWU2YTdjMzkwZTEyMDQ3M2NjNWIwYTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKQEAgLTQ1Myw3ICs0NTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1NsaWNlKFZNJiB2bSwgRXhlY1N0YQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2Vk
KCkpOwogCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHJlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3Qo
ZXhlYywgdGhpc09iamVjdCwgYXJncywgWyZdKCkgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3
Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xh
c3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoZXhlYywgc3RydWN0dXJlLCBsZW5ndGgpOwogICAgIH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNTQ5LDEw
ICs1NDksMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgIHVuc2lnbmVkIG5ld0J5
dGVPZmZzZXQgPSB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3Q2xhc3M6
OmVsZW1lbnRTaXplOwogCi0gICAgSlNPYmplY3QqIGRlZmF1bHRDb25zdHJ1Y3RvciA9IGNhbGxl
ZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlw
ZWRBcnJheVN0b3JhZ2VUeXBlKTsKKyAgICBKU09iamVjdCogZGVmYXVsdENvbnN0cnVjdG9yID0g
Y2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6
VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgyKTsKICAgICBpZiAoc3BlY2llcyA9PSBkZWZhdWx0Q29uc3RydWN0b3Ip
IHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2
bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUp
OworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCkt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwog
CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdD
bGFzczo6Y3JlYXRlKAogICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKGFycmF5
QnVmZmVyKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBhMjBiMTYzODRmZDQ5Yzk3NDlmOTc2MjQ0NzU3ZThjYzdjY2E5ZWQ4Li5k
OTU2OTc5M2Q4MjkxZjNlMTM4MTc5NWMyZGVlZmQ4YWNkY2QxNzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yNjgsNDYgKzI2
OCw0NCBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVDb25zb2xlUHJvcGVydHkoVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0KQogICAgIHJldHVybiBDb25zb2xlT2JqZWN0OjpjcmVhdGUodm0sIGdsb2Jh
bCwgQ29uc29sZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWwsIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbC0+Z2xvYmFsRXhlYygpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlQm91bmRGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAg
SlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
LSAgICBKU1ZhbHVlIGJvdW5kVGhpcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAg
IEpTVmFsdWUgYm91bmRBcmdzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMik7Ci0gICAgSlNW
YWx1ZSBsZW5ndGhWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDMpOwotICAgIEpTU3Ry
aW5nKiBuYW1lU3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoNCkpOwor
ICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKKyAgICBKU1ZhbHVlIGJvdW5kVGhpcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSk7CisgICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpOworICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDMpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0gYXNTdHJpbmcoY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCg0KSk7CiAKICAgICBBU1NFUlQobGVuZ3RoVmFsdWUuaXNJ
bnQzMkFzQW55SW50KCkpOwogICAgIGludDMyX3QgbGVuZ3RoID0gbGVuZ3RoVmFsdWUuYXNJbnQz
MkFzQW55SW50KCk7CiAKLSAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBuYW1lID0gbmFtZVN0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMs
IGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpz
Q2FzdDxKU0FycmF5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0aCwgV1RGTW92ZShuYW1l
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRhcmdldCwg
Ym91bmRUaGlzLCBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNBcnJheSo+KGJvdW5kQXJn
cykgOiBudWxscHRyLCBsZW5ndGgsIFdURk1vdmUobmFtZSkpKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IGFz
T2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCkpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3du
UHJvcGVydHkoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSk7CiB9CiAKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
c3NlcnRDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFzc2VydENhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgwKS5pc0Jvb2xlYW4oKSk7Ci0g
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmFzQm9vbGVhbigpKQorICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNCb29sZWFuKCkpOworICAgIGlmIChjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLmFzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgYm9vbCBpdGVyYXRlZE9uY2UgPSBmYWxzZTsKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgbGluZTsKLSAgICBl
eGVjLT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7CisgICAgY2FsbEZyYW1l
LT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7CiAgICAgICAgIGlmICghaXRl
cmF0ZWRPbmNlKSB7CiAgICAgICAgICAgICBpdGVyYXRlZE9uY2UgPSB0cnVlOwogICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CkBAIC0zOTYsMTUgKzM5NCwxNCBAQCBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSA9IHsKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGVucXVldWVKb2IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgSlNWYWx1ZSBqb2Ig
PSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOwotICAgIEpTVmFsdWUgYXJndW1lbnQxID0gZXhlYy0+YXJndW1lbnQoMik7Ci0gICAg
SlNWYWx1ZSBhcmd1bWVudDIgPSBleGVjLT5hcmd1bWVudCgzKTsKKyAgICBKU1ZhbHVlIGpvYiA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgyKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMyk7
CiAKICAgICBnbG9iYWxPYmplY3QtPnF1ZXVlTWljcm90YXNrKGNyZWF0ZUpTTWljcm90YXNrKHZt
LCBqb2IsIGFyZ3VtZW50MCwgYXJndW1lbnQxLCBhcmd1bWVudDIpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCmluZGV4IGY0ZGI3YTQzZGE2NTA2ZDI2NTQyNmViNGY4NTk0NGRiZWQzMGJmZTkuLjI4YjRj
NmI1M2IxZDczMGI0NTk5ZTQ4MDI3YTFhM2RmYmYzNzE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
QEAgLTQ3OCw1MCArNDc4LDQ4IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChTdHJpbmdWaWV3
IHMpCiAgICAgcmV0dXJuIGpzU3RyRGVjaW1hbExpdGVyYWwoZGF0YSwgZW5kKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgeCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgeCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoeCk7
CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xv
YmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHMgPSBh
c1N0cmluZyh4KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBhc1N0cmluZyh4KS0+dmFs
dWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgcGFyc2VkT2JqZWN0OwogICAgIGlmIChzLmlzOEJpdCgp
KSB7Ci0gICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihleGVjLCBzLmNoYXJh
Y3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFy
c2VyPExDaGFyPiBwcmVwYXJzZXIoY2FsbEZyYW1lLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3Ro
KCksIE5vblN0cmljdEpTT04pOwogICAgICAgICBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5
TGl0ZXJhbFBhcnNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hh
cj4gcHJlcGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIE5vblN0cmlj
dEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoY2FsbEZyYW1l
LCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAg
cGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgIH0KICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAocGFy
c2VkT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7
CiAKLSAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gZXhlYy0+Y2FsbGVyU291cmNlT3Jp
Z2luKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmpz
Q2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzLCBzb3VyY2VP
cmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsKKyAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1l
LT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uocywgc291cmNl
T3JpZ2luKSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFldmFsKTsKICAgICBpZiAoIWV2YWwpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodm0u
aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZXhlYywgY2FsbGVlR2xvYmFsT2JqZWN0LT5nbG9i
YWxUaGlzKCksIGNhbGxlZUdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2bS5pbnRlcnByZXRlci0+ZXhl
Y3V0ZShldmFsLCBjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIEpTVmFsdWUgcmFkaXhWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcmFkaXhWYWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAKICAgICAvLyBPcHRpbWl6ZWQgaGFuZGxpbmcgZm9y
IG51bWJlcnM6CiAgICAgLy8gSWYgdGhlIGFyZ3VtZW50IGlzIDAgb3IgYSBudW1iZXIgaW4gcmFu
Z2UgMTBeLTYgPD0gbiA8IElOVF9NQVgrMSwgdGhlbiBwYXJzZUludApAQCAtNTQxLDMzICs1Mzks
MzMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIC8vIElmIFRvU3RyaW5nIHRocm93cywgd2Ugc2hv
dWxkbid0IGNhbGwgVG9JbnQzMi4KLSAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGV4ZWMsIHZhbHVl
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHBhcnNlSW50KHZpZXcsIHJhZGl4VmFsdWUudG9JbnQzMihleGVjKSkpKTsKKyAg
ICByZXR1cm4gdG9TdHJpbmdWaWV3KGNhbGxGcmFtZSwgdmFsdWUsIFsmXSAoU3RyaW5nVmlldyB2
aWV3KSB7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VJbnQo
dmlldywgcmFkaXhWYWx1ZS50b0ludDMyKGNhbGxGcmFtZSkpKSk7CiAgICAgfSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VGbG9h
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8gdmll
d1dpdGhTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0
cmluZyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFy
c2VGbG9hdCh2aWV3V2l0aFN0cmluZy52aWV3KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNEZWNvZGVVUkkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90VW5l
c2NhcGVXaGVuRGVjb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiIyQm
KywvOjs9P0AiCiAgICAgKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGV4
ZWMsIGRvTm90VW5lc2NhcGVXaGVuRGVjb2RpbmdVUkksIHRydWUpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGRlY29kZShjYWxsRnJhbWUsIGRvTm90VW5lc2NhcGVXaGVuRGVjb2RpbmdV
UkksIHRydWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RGVjb2RlVVJJQ29tcG9uZW50KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBlbXB0eUJpdG1h
cDsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlY29kZShleGVjLCBlbXB0eUJpdG1hcCwg
dHJ1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVjb2RlKGNhbGxGcmFtZSwgZW1w
dHlCaXRtYXAsIHRydWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRW5jb2RlVVJJKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGlu
Z1VSSSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWiIKQEAgLTU3NiwxMCArNTc0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0VuY29kZVVSSShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIhIyQmJygp
KissLS4vOjs9P0BffiIKICAgICApOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlbmNv
ZGUoZXhlYywgZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUkkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGVuY29kZShjYWxsRnJhbWUsIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNv
bXBvbmVudChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGVXaGVuRW5jb2Rp
bmdVUklDb21wb25lbnQgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVoiCkBAIC01ODgsMTAgKzU4NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAiIScoKSotLl9+IgogICAgICk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGVuY29kZShleGVjLCBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZW5jb2RlKGNhbGxGcmFtZSwgZG9Ob3RFc2NhcGVX
aGVuRW5jb2RpbmdVUklDb21wb25lbnQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RF
c2NhcGUgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAogICAgICAgICAiQUJDREVGR0hJSktMTU5PUFFS
U1RVVldYWVoiCkBAIC02MDAsOCArNTk4LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiorLS4vQF8iCiAg
ICAgKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsK
KyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7CiAgICAgICAgICAgICBj
b25zdCBMQ2hhciogYyA9IHZpZXcuY2hhcmFjdGVyczgoKTsKQEAgLTYzNiw5ICs2MzQsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jVW5lc2NhcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b1N0cmluZ1Zp
ZXcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b1N0cmluZ1ZpZXcoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICAvLyBXZSB1c2Ug
aW50IGZvciBrIGFuZCBsZW5ndGggaW50ZW50aW9uYWxseSBzaW5jZSB3ZSB3b3VsZCBsaWtlIHRv
IGV2YWx1YXRlCiAgICAgICAgIC8vIHRoZSBjb25kaXRpb24gYGsgPD0gbGVuZ3RoIC02YCBldmVu
IGlmIGxlbmd0aCBpcyBsZXNzIHRoYW4gNi4KICAgICAgICAgaW50IGsgPSAwOwpAQCAtNjg4LDYy
ICs2ODYsNjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2Nh
cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMtPnZtKCksIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAg
IHJldHVybiBqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIGJ1aWxkZXIudG9TdHJpbmcoKSk7
CiAgICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNU
aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3Vt
ZW50c0NhbGxlZUFuZENhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFu
ZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIpOworICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICInYXJndW1lbnRzJywgJ2Nh
bGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY01ha2VUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvcik7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JT
dHJ1Y3R1cmUsIGV4ZWMtPmFyZ3VtZW50KDApLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2Up
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxs
RnJhbWUsIGVycm9yU3RydWN0dXJlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBudWxscHRyLCBU
eXBlTm90aGluZywgZmFsc2UpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0cmljdE1vZGUpOwog
ICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCB0aGlz
VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CiAKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoIXRoaXNPYmplY3QpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9
IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlID0gdGhpc1ZhbHVlLnN5bnRoZXNpemVQcm90b3R5cGUoY2FsbEZyYW1lKTsKICAg
ICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm90b3R5cGUp
OwogICAgICAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocHJvdG90eXBlKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RN
b2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVs
bE9yVW5kZWZpbmVkRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwog
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAKQEAgLTc1NywzMSAr
NzU0LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBib29sIHNo
b3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5zZXRQcm90b3R5cGUo
dm0sIGV4ZWMsIHZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CisgICAgdGhpc09iamVjdC0+
c2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUsIHZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFj
a2VyKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGpzQ2FzdDxKU1Byb21pc2UqPihj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKIAogICAgIC8vIEludGVybmFsUHJvbWlzZXMgc2hvdWxk
IG5vdCBiZSBleHBvc2VkIHRvIHVzZXIgc2NyaXB0cy4KICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U0ludGVybmFsUHJvbWlzZSo+KHZtLCBwcm9taXNlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEpTVmFsdWUgb3BlcmF0aW9uVmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIG9wZXJhdGlvblZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKIAogICAgIEFTU0VSVChvcGVyYXRpb25WYWx1ZS5pc051bWJlcigpKTsK
LSAgICBhdXRvIG9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVJlamVjdGlvbk9wZXJh
dGlvbj4ob3BlcmF0aW9uVmFsdWUudG9VSW50MzIoZXhlYykpOworICAgIGF1dG8gb3BlcmF0aW9u
ID0gc3RhdGljX2Nhc3Q8SlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uPihvcGVyYXRpb25WYWx1
ZS50b1VJbnQzMihjYWxsRnJhbWUpKTsKICAgICBBU1NFUlQob3BlcmF0aW9uID09IEpTUHJvbWlz
ZVJlamVjdGlvbk9wZXJhdGlvbjo6UmVqZWN0IHx8IG9wZXJhdGlvbiA9PSBKU1Byb21pc2VSZWpl
Y3Rpb25PcGVyYXRpb246OkhhbmRsZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
IAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21p
c2VSZWplY3Rpb25UcmFja2VyKQotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPnByb21pc2VSZWplY3Rpb25UcmFja2VyKGdsb2JhbE9iamVjdCwgZXhlYywg
cHJvbWlzZSwgb3BlcmF0aW9uKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5wcm9taXNlUmVqZWN0aW9uVHJhY2tlcihnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgcHJvbWlzZSwgb3BlcmF0aW9uKTsKICAgICBlbHNlIHsKICAgICAgICAgc3dpdGNoIChv
cGVyYXRpb24pIHsKICAgICAgICAgY2FzZSBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb246OlJl
amVjdDoKQEAgLTc5Nyw5MSArNzkzLDg4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihFeGVjU3RhdGUqIGV4CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxvZyhFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluTG9nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgZGF0YUxvZyhleGVjLT5hcmd1
bWVudCgwKS50b1dURlN0cmluZyhleGVjKSwgIlxuIik7CisgICAgZGF0YUxvZyhjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSksICJcbiIpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLT52bSgpLCB0b1N0cmluZyhleGVjLT5h
cmd1bWVudCgwKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2Jh
bE9iamVjdC0+dm0oKSwgdG9TdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9y
dE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
LQotICAgIGF1dG8qIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCk7CisgICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0
cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIGNhdGNoU2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlamVjdCA9IFsmXSAoSlNWYWx1
ZSByZWplY3Rpb25SZWFzb24pIHsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigp
OwotICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgcmVqZWN0aW9uUmVhc29uKTsKKyAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KGNhbGxGcmFtZSwgcmVqZWN0aW9uUmVhc29uKTsKICAgICAgICAg
Y2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHByb21pc2UtPnByb21pc2UoKSk7CiAgICAgfTsKIAotICAgIGF1dG8gc291cmNlT3JpZ2lu
ID0gZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+
YXJndW1lbnRDb3VudCgpID09IDEpOwotICAgIGF1dG8qIHNwZWNpZmllciA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGF1dG8gc291cmNlT3JpZ2luID0g
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKKyAgICBhdXRvKiBzcGVjaWZpZXIgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgaWYg
KEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIHJlamVjdChleGNlcHRpb24tPnZhbHVlKCkpOwogCiAgICAgLy8gV2UgYWx3YXlzIHNw
ZWNpZnkgcGFyYW1ldGVycyBhcyB1bmRlZmluZWQuIE9uY2UgZHluYW1pYyBpbXBvcnQoKSBzdGFy
dHMgYWNjZXB0aW5nIGZldGNoaW5nIHBhcmFtZXRlcnMsCiAgICAgLy8gd2Ugc2hvdWxkIHJldHJp
ZXZlIHRoaXMgZnJvbSB0aGUgYXJndW1lbnRzLgogICAgIEpTVmFsdWUgcGFyYW1ldGVycyA9IGpz
VW5kZWZpbmVkKCk7Ci0gICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gZ2xvYmFsT2JqZWN0LT5t
b2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKGV4ZWMsIHNwZWNpZmllciwgcGFyYW1ldGVycywg
c291cmNlT3JpZ2luKTsKKyAgICBhdXRvKiBpbnRlcm5hbFByb21pc2UgPSBnbG9iYWxPYmplY3Qt
Pm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUoY2FsbEZyYW1lLCBzcGVjaWZpZXIsIHBhcmFt
ZXRlcnMsIHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gY2F0
Y2hTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRpb24tPnZh
bHVlKCkpOwotICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgaW50ZXJuYWxQcm9taXNlKTsKKyAg
ICBwcm9taXNlLT5yZXNvbHZlKGNhbGxGcmFtZSwgaW50ZXJuYWxQcm9taXNlKTsKIAogICAgIGNh
dGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b21pc2UtPnByb21pc2UoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJFTEVBU0VfQVNTRVJU
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsK
KyAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBib29sIGVudW1l
cmFibGUgPSBvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOworICAgIGJvb2wgZW51
bWVyYWJsZSA9IG9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihlbnVtZXJhYmxlKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9i
amVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0LCBQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVk
ZSkpKTsKIH0KIAogI2lmIEVOQUJMRShJTlRMKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnRsRGF0ZVRpbWVG
b3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7Ci0gICAgZGF0ZVRpbWVGb3Jt
YXQtPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCgqZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4
ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KCpjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGRvdWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvTnVtYmVyKGV4ZWMp
OworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMikudG9OdW1iZXIoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGlt
ZUZvcm1hdC0+Zm9ybWF0KCpleGVjLCB2YWx1ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0KCpjYWxsRnJhbWUs
IHZhbHVlKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDk0OGQ2N2VjMThmOTVl
MWY2MmU5OGQxOGY2YjY4MmY0MjI2YWNmNzYuLjIxMTMwZjliNjBjOWU5ZGVkMTdkNGFlMTVjMDM1
MjA4NWE5NDVlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaApAQCAtMjksMzUgKzI5LDM2IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgQXJnTGlzdDsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxG
cmFtZTsKIGNsYXNzIEpTT2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAv
LyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCByZWFsbHkgYmUgaW4gSlNHbG9iYWxPYmpl
Y3QuY3BwLCBidXQgcHV0dGluZyB0aGVtIHRoZXJlCiAvLyBpcyBhIDAuNSUgcmVkdWN0aW9uLgog
CiBleHRlcm4gY29uc3QgQVNDSUlMaXRlcmFsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRl
ZmluZWRFcnJvcjsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZh
bChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Bh
cnNlSW50KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUGFyc2VGbG9hdChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0RlY29kZVVSSShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSShFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2Fw
ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Vu
ZXNjYXBlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY01ha2VUeXBl
RXJyb3IoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNQcm90b0dldHRlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkxvZyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0J1aWx0aW5E
ZXNjcmliZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0ltcG9ydE1vZHVsZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhFeGVjU3RhdGUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jUGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29k
ZVVSSShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFbmNvZGVV
UkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNVbmVzY2FwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNN
YWtlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jQnVpbHRpbkxvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNJ
bXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBkb3VibGUganNUb051bWJlcihTdHJpbmdWaWV3KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCAwYjI3ZmY2M2ZlNDgxNWJmMjYzZmM2NmY3
ODk3MTBjMzJiMGMyNTA2Li5lMzFjMjljYTAxMTU2MDBmNDYxNGRlMzY5Mjk1MTNhNWIxZDFkMzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtNDksOCArNDksMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBEcm9wQWxsTG9ja3Mgb2JqZWN0IHRha2VzIGNhcmUgdG8g
cmVsZWFzZSB0aGUgSlNMb2NrIG9ubHkgaWYgeW91cgogLy8gdGhyZWFkIGFjcXVpcmVkIGl0IHRv
IGJlZ2luIHdpdGguCiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IFZNOworY2xhc3MgSlNMb2NrOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAvLyBU
aGlzIGNsYXNzIGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxl
Z2FjeSBzaW5nbGUgCiAvLyBzaGFyZWQgVk0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggZTg4NzgwYjVkMTAzNGJmZGYxMjYyNzhm
MmIwMWFlNDg0YTQ2NmFiOC4uMGU1YTk3ZThjMzEwMjA3YTUzYmQ5MTYyOGNlM2NlMzk2MmI1NmQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmNwcApAQCAtNTAsMTQgKzUwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJl
cXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJFdmFsdWF0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFu
dGlhdGlvbihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlclJlc29sdmUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlU3luYyhFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNoKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlclJlcXVlc3RlZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5jKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9kdWxl
TmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAt
Mzg3LDMzICszODcsMzMgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlTG9hZGVy
OjpnZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKiBleGUKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNl
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyUGFyc2VNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OnRyeUNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpOworICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAgICAgYXV0byByZWplY3QgPSBbJl0gKEpTVmFsdWUgcmVqZWN0aW9uUmVhc29uKSB7CiAgICAg
ICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIHJlamVjdGlvblJlYXNvbik7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gZGVmZXJyZWQtPnJlamVjdChjYWxsRnJhbWUsIHJlamVjdGlvblJlYXNvbik7CiAgICAg
ICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgIH07CiAKLSAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtl
eSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgY29uc3QgSWRl
bnRpZmllciBtb2R1bGVLZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXko
Y2FsbEZyYW1lKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiByZWplY3QoY2F0Y2hTY29wZS5leGNlcHRpb24oKSk7CiAKLSAgICBKU1Zh
bHVlIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgc291cmNlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBhdXRvKiBqc1NvdXJjZUNvZGUgPSBqc0Nhc3Q8SlNT
b3VyY2VDb2RlKj4oc291cmNlKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBqc1NvdXJj
ZUNvZGUtPnNvdXJjZUNvZGUoKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAo
c291cmNlQ29kZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpXZWJBc3NlbWJseSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dl
YkFzc2VtYmx5OjppbnN0YW50aWF0ZShleGVjLCBkZWZlcnJlZCwgbW9kdWxlS2V5LCBqc1NvdXJj
ZUNvZGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Ojpp
bnN0YW50aWF0ZShjYWxsRnJhbWUsIGRlZmVycmVkLCBtb2R1bGVLZXksIGpzU291cmNlQ29kZSkp
OwogI2VuZGlmCiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlQ29kZSk7CkBAIC00
MjMsNDggKzQyMyw0OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdm0sIHNvdXJjZUNvZGUsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZXJyb3IpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiByZWplY3Qo
ZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNv
ZGUpKTsKKyAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvci50b0Vycm9yT2JqZWN0KGdsb2JhbE9i
amVjdCwgc291cmNlQ29kZSkpOwogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CiAKLSAg
ICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXksIHNvdXJjZUNv
ZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5v
ZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6
ZXIoY2FsbEZyYW1lLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52
YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7
CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBk
ZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9n
cmFtTm9kZSkpOworICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoY2FsbEZyYW1l
LCBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpOwogICAgIGNhdGNo
U2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUmVxdWVz
dGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8
QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8q
IG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpIAotICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIG51bGxwdHIpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRy
KSkpOwogCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBu
dWxscHRyLCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOworICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBt
b2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKS5zaXplKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNpemVfdCBpID0gMDsKICAg
ICBmb3IgKGF1dG8mIGtleSA6IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpKSB7Ci0g
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSsrLCBqc1N0cmluZyh2bSwga2V5
LmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBpKyss
IGpzU3RyaW5nKHZtLCBrZXkuZ2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3Rh
bnRpYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQq
Pih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHlu
YW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdT
dGF0ZSgpKQogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+
bW9kdWxlS2V5KCksICJcbiIpOwogCi0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDEpKTsKKyAgICBtb2R1bGVSZWNvcmQtPmxpbmsoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC00NzIsNzEgKzQ3Miw3MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVjU3RhdAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgLy8gSG9vayBwb2ludCwgTG9hZGVyLnJlc29sdmUuCiAg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1yZXNvbHZlCiAg
ICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZp
ZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0
aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCi0gICAgSlNN
b2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwg
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFt
aWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNvbHZlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJSZXNvbHZlU3luYyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFt
aWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU01v
ZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGxvYWRl
ci0+cmVzb2x2ZVN5bmMoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEp
LCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgYXV0byByZXN1bHQgPSBsb2FkZXItPnJlc29sdmVT
eW5jKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpZGVu
dGlmaWVyVG9KU1ZhbHVlKHZtLCByZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIC8vIEhvb2sgcG9pbnQsIExv
YWRlci5mZXRjaAogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dz
ZXItZmV0Y2gKICAgICAvLyBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1
YWxseS4KICAgICAvLyBGb3IgZXhhbXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwgY2FuIHByb3Zp
ZGUgdGhlIGhvb2sgZmV0Y2hpbmcgdGhlIHJlc291cmNlCiAgICAgLy8gZnJvbSB0aGUgbG9jYWwg
ZmlsZSBzeXN0ZW0uCi0gICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8
SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpTTW9kdWxlTG9h
ZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9h
ZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4
ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZl
dGNoKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckdldE1vZHVs
ZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4o
dm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0
PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGF1dG8qIG1vZHVsZU5hbWVzcGFjZU9iamVjdCA9IGxvYWRlci0+Z2V0TW9kdWxlTmFtZXNw
YWNlT2JqZWN0KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvKiBtb2R1bGVOYW1l
c3BhY2VPYmplY3QgPSBsb2FkZXItPmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRpdGlvbmFsIEhv
b2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVG8g
aW5zdHJ1bWVudCBhbmQgcmV0cmlldmUgdGhlIGVycm9ycyByYWlzZWQgZnJvbSB0aGUgbW9kdWxl
IGV4ZWN1dGlvbiwKICAgICAvLyB3ZSBpbnNlcnRlZCB0aGUgaG9vayBwb2ludCBoZXJlLgogCi0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0
ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3Vt
ZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgyKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5j
cHAKaW5kZXggOGM1MTA5ODk2YTA4MzVmMTE3N2E3MmYyZDJmMzhlOWFmMjUwNWEyZC4uYzk1MWJl
ZTQyYjk2YzNkZDc1NzFlYzAwNDY1OTM4MmY5MjA3NTllOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKQEAgLTU3LDEx
ICs1NywxMSBAQCB2b2lkIEpTTmF0aXZlU3RkRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaQogICAgIG1fZnVuY3Rpb25DZWxsLnNl
dCh2bSwgdGhpcywgZnVuY3Rpb25DZWxsKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcnVuU3RkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTTmF0aXZlU3RkRnVu
Y3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihzdGF0ZS0+anND
YWxsZWUoKSk7CisgICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNO
YXRpdmVTdGRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGZ1
bmN0aW9uKTsKLSAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5m
dW5jdGlvbigpKHN0YXRlKTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbCgpLT5mdW5jdGlvbigpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAogSlNOYXRp
dmVTdGRGdW5jdGlvbiogSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBO
YXRpdmVTdGRGdW5jdGlvbiYmIG5hdGl2ZVN0ZEZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2lj
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaAppbmRleCBmYWI5ZDZlMzU3
ZTc5NzE3NWNmMDRkMTVlYWUxNzQyOTY4Yzc0MDliLi5mNmM3M2IzODBhNmQ3MzFjZmQxODMwM2I4
NDcyNWY3YjkxYzJjYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBOYXRpdmVTdGRGdW5jdGlvbkNlbGw7CiAK
LXVzaW5nIE5hdGl2ZVN0ZEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZShF
eGVjU3RhdGUqKT47Cit1c2luZyBOYXRpdmVTdGRGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248RW5j
b2RlZEpTVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKT47CiAKIGNsYXNzIEpTTmF0
aXZlU3RkRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDgyNDg5OGFk
M2IxZGExNTM4MTNmNTg0NDRjYTc2ZjQ3OGQwOWI4NGIuLjc3NGM1YzJmZGIxMmI1YzE3ODZmMmRm
NDc5ZWU4ZTMxYTk4OTJmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNPTk9iamVjdCk7CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNPTlByb3RvRnVuY1N0cmluZ2lmeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9
CiAKQEAgLTc5Nyw1NSArNzk3LDU1IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2Fs
ayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEyLjIKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHZpZXdXaXRo
U3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmco
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIFN0
cmluZ1ZpZXcgdmlldyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAKICAgICBKU1ZhbHVlIHVuZmls
dGVyZWQ7CiAgICAgaWYgKHZpZXcuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxM
Q2hhcj4ganNvblBhcnNlcihleGVjLCB2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcubGVuZ3RoKCks
IFN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGNh
bGxGcmFtZSwgdmlldy5jaGFyYWN0ZXJzOCgpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsK
ICAgICAgICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICF1bmZpbHRlcmVkKTsK
ICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKSB7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2Uo
KSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihjYWxsRnJhbWUsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkp
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+
IGpzb25QYXJzZXIoZXhlYywgdmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5sZW5ndGgoKSwgU3Ry
aWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+IGpzb25QYXJzZXIoY2FsbEZy
YW1lLCB2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAg
ICAgICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICF1bmZpbHRlcmVkKTsKICAg
ICAgICAgaWYgKCF1bmZpbHRlcmVkKSB7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVh
dGVTeW50YXhFcnJvcihjYWxsRnJhbWUsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MikKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIAotICAgIEpTVmFsdWUgZnVuY3Rp
b24gPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
V2Fsa2VyIHdhbGtlcihleGVjLCBhc09iamVjdChmdW5jdGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0
YSk7CisgICAgV2Fsa2VyIHdhbGtlcihjYWxsRnJhbWUsIGFzT2JqZWN0KGZ1bmN0aW9uKSwgY2Fs
bFR5cGUsIGNhbGxEYXRhKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdhbGtlci53YWxr
KHVuZmlsdGVyZWQpKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmdpZmll
ciBzdHJpbmdpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikp
OworICAgIFN0cmluZ2lmaWVyIHN0cmluZ2lmaWVyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdHJpbmdpZmllci5zdHJpbmdpZnkoZXhlYy0+YXJndW1lbnQoMCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5naWZpZXIuc3RyaW5n
aWZ5KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKIEpTVmFsdWUgSlNPTlBhcnNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBqc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGM0NjcwZjhhOTAxNTEyNGEwODdjYzcyNjAzOThm
ODQ2MWI4ODY5YjYuLjcxOGMxNTYxMDMxODlmODc0Yzk1ZTgxYzdmOWE1OWQ0OWVmMDgyMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIzMDIsMTIg
KzIzMDIsMTIgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90bykKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVu
Y0luc3RhbmNlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShjYWxsRnJhbWUsIHZhbHVlLCBw
cm90bykpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCmluZGV4IDc3NmMxZmIwZTBkODFhNjBlOWE1NzExOGI0ZGYzOTJkMjZmZjEyOTAuLjUz
NGI3ZGI1M2Y1ZjhjY2MwMmFkNDZkNTA4MDg0OTg4ZWZiNGQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTE4NCw3ICsxMTg0LDcgQEAgY2xhc3MgSlNG
aW5hbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgfQogfTsKIAotSlNfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVu
Y0luc3RhbmNlT2YoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiBpbmxpbmUgSlNPYmplY3QqIEpTT2JqZWN0OjpjcmVhdGVSYXdP
YmplY3QoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAppbmRleCBkZDExMjQ1OTlh
MTIwY2NmN2EyOWVkZGJhMzY4ZjY1NDdmM2RlNTAwLi44OTQxZDU4ZjkxNWNlMTMwYmFiNjlkNzFj
MmZiNjYyNTU4MmY4ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpKU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcsIGNvbnN0cnVj
dFR5cGVkQXJyYXlWaWV3KQpAQCAtNjUsMTEgKzY1LDExIEBAIFN0cnVjdHVyZSogSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoCiAKIAogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBl
ZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICIlVHlwZWRBcnJheSUgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiX3MpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsICIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggZmFiNmUwOWU4N2Q0MzY3MjU0ZjVhOGM2YmMyNWZkMmQyMTNkMTFjZS4uMzBiMGRm
ZjA4ZmRkMjZlYmJjNWRmNjU3NDY5NmM1ZTkyMzQ2YjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKQEAgLTM4LDIyMyArMzgsMjIyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZnVuY3Rpb25OYW1lKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9i
amVjdCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgc3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNz
SW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNVaW50OENsYW1wZWRBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBm
dW5jdGlvbk5hbWU8SlNJbnQzMkFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDMyOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4odm0s
IGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4odm0sIGNhbGxGcmFtZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQ2
NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9h
dDY0QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KHZtLCBj
YWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlRmxvYXQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMy
QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlSW50ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNJbnQ4QXJyYXk+KHZtLCBjYWxsRnJhbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDg6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OEFycmF5Pih2bSwgZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNVaW50OEFycmF5Pih2bSwgY2FsbEZyYW1lKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50MTY6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5Pih2
bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5Pih2bSwgY2FsbEZyYW1lKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWlu
dDE2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNV
aW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4odm0s
IGNhbGxGcmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
Y2FzZSBOb3RUeXBlZEFycmF5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZp
ZXc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyJfcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyJfcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxlIChmYWxzZSkKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBl
ZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih2YWx1ZS5pc0NlbGwoKSAmJiBpc1R5cGVkVmlldyh2YWx1ZS5hc0NlbGwo
KS0+Y2xhc3NJbmZvKGV4ZWMtPnZtKCkpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odmFsdWUuaXNDZWxsKCkgJiYgaXNUeXBlZFZp
ZXcodmFsdWUuYXNDZWxsKCktPmNsYXNzSW5mbyhnbG9iYWxPYmplY3QtPnZtKCkpLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgYXJndW1l
bnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmll
dyhhcmd1bWVudC5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXciX3MpOwogCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihhcmd1bWVudCk7CiAKICAgICBpZiAodGhpc09iamVj
dC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZp
ZXciX3MpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0
LT5sZW5ndGgoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dl
dE9yaWdpbmFsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmpl
Y3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwogICAgIEFTU0VSVChpc1R5cGVkVmlldyh0eXBlKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0
eXBlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RP
VFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExf
R0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZV
TkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNM
YXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5
cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKICAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENB
TExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmRleE9mKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Sm9pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90
b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxk
IGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVO
Q1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRl
ckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9m
ZnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRl
T2Zmc2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJy
YXlDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOwogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExf
R0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNTbGljZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQ
cm90b0dldHRlckZ1bmNUb1N0cmluZ1RhZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgc3dpdGNoICh0aGlzVmFsdWUuZ2V0
T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewogICAgIGNh
c2UgVHlwZVVpbnQ4Q2xhbXBlZDoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgIlVpbnQ4Q2xhbXBlZEFycmF5IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCmluZGV4IDRl
MzM0MzE0MjI5ZmUwOGY5OWIzOWVjNmY1MDgzYWQ3OGY5NDcwNzIuLjVkNTQ5OTM2OGNhZmFlZWJh
ZDEwZmRhYWY0MTI3OWJkYmI1MDU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKQEAgLTQ1LDEwICs0
NSwxMCBAQCBjbGFzcyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogfTsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5
VmlldyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY1NvcnQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmln
aW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5
cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9y
aWdpbmFsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cAppbmRleCA3NzZlYzNjNGYyMWFiOGVjZDE0MmY5Y2M2NTc1YWEyZGI5NjBkODQ4Li43MmEyMWE1
MDU1MmM2NjhkZWFiZjczZDRhNjFmMjM2MDZkYzYzM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC00Nyw2MiArNDcsNjEgQEAg
dm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBNYXBQcm90b3R5cGUq
IG1hcFByb3RvdHlwZSwgR2V0dGVyU2UKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNp
ZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogTWFwQ29uc3RydWN0b3I6
Ok1hcENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUsIGNhbGxNYXAsIGNvbnN0cnVjdE1hcCkKIHsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJNYXAiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJNYXAi
KSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1h
cChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0dXJl
KiBtYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7
CisgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2Jh
bE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIEpTVmFsdWUgaXRlcmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBt
YXBTdHJ1Y3R1cmUpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTTWFwOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgbWFwU3RydWN0dXJlKSkpOwog
CiAgICAgaWYgKGF1dG8qIGl0ZXJhYmxlTWFwID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KHZtLCBp
dGVyYWJsZSkpIHsKICAgICAgICAgaWYgKGl0ZXJhYmxlTWFwLT5jYW5DbG9uZUZhc3RBbmROb25P
YnNlcnZhYmxlKG1hcFN0cnVjdHVyZSkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZU1hcC0+Y2xvbmUoZXhlYywgdm0sIG1hcFN0
cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGl0ZXJhYmxlTWFwLT5jbG9uZShjYWxsRnJhbWUsIHZtLCBtYXBTdHJ1Y3R1cmUp
KSk7CiAgICAgfQogCi0gICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIG1h
cFN0cnVjdHVyZSk7CisgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoY2FsbEZyYW1lLCB2
bSwgbWFwU3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IG1hcC0+SlNPYmplY3Q6
OmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5j
dGlvbiA9IG1hcC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnNl
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJG
dW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBmb3JF
YWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5leHRJdGVtKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoY2FsbEZyYW1lLCBp
dGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgbmV4dEl0
ZW0pIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgSlNWYWx1
ZSBrZXkgPSBuZXh0SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKKyAg
ICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0SXRlbS5nZXQoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCi0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0SXRlbS5nZXQoZXhlYywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDEpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5leHRJdGVtLmdldChj
YWxsRnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwpAQCAtMTEwLDI1ICsxMDksMjUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93
ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgY2FsbChleGVjLCBhZGRl
ckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwg
bWFwLCBhcmd1bWVudHMpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlvbiwg
YWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIG1hcCwgYXJndW1l
bnRzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRl
RnVuY01hcEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihleGVjLT52
bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIEpTTWFwKiBtYXAgPSBqc0Nhc3Q8SlNNYXAq
PihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxP
YmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKTsKKyAgICBKU01hcCogbWFwID0ganNDYXN0PEpTTWFwKj4oY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgYXV0byogaGVhZCA9IG1hcC0+aGVhZCgp
OwogICAgIEFTU0VSVChoZWFkKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGhlYWQpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0
TmV4dChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
aXZhdGVGdW5jTWFwQnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcDo6QnVj
a2V0VHlwZSo+KGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDApKSk7Ci0gICAgYXV0byogYnVj
a2V0ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oZ2xvYmFs
T2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CisgICAgYXV0byogYnVja2V0
ID0ganNDYXN0PEpTTWFwOjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgQVNTRVJUKGJ1Y2tldCk7CiAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7
CiAgICAgd2hpbGUgKGJ1Y2tldCkgewpAQCAtMTM2LDIxICsxMzUsMjEgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShidWNrZXQpOwogICAgICAg
ICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShleGVjLT52bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZ2xvYmFsT2JqZWN0LT52bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1
bmNNYXBCdWNrZXRLZXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUq
PihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpz
Q2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0
VHlwZSo+KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAg
IGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYnVja2V0LT5rZXkoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
QVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXA6OkJ1Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVj
LT5hcmd1bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcDo6QnVja2V0
VHlwZSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlRfVU5VU0VEKGds
b2JhbE9iamVjdCwganNEeW5hbWljQ2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGdsb2JhbE9iamVj
dC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpz
Q2FzdDxKU01hcDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0
LT52YWx1ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5oCmluZGV4IGVkNDgzMDVjNWRiM2Q0ZmJkNjQ1ZjA5NjMxODAzODZkNDIxMmY3Nzku
LjFiYmFiNzZmN2JiMGZiZWIxMjUzOTJhMDRhMjNkZmI2ZTEzZGQ1YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaApAQCAtNTYsOSArNTYsOSBA
QCBjbGFzcyBNYXBDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTWFwUHJvdG90eXBlKiwgR2V0dGVyU2V0dGVy
KiBzcGVjaWVzU3ltYm9sKTsKIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldFZhbHVlKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cml2YXRlRnVuY01hcEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBj
MjI5MDVlODgxM2Q0ZjI0Yzk5MTU2NGVmYjI3YWY0NTU3NzRhZjRkLi5hZjU3MjZmN2I2ZTkyYTdl
OWY4ODBkNjJkY2ZhMzFmZGRlMDkzODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBjb25zdCBDbGFzc0lu
Zm8gTWFwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAmbWFwUHJv
dG90eXBlVGFibAogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jQ2xlYXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoRXhlY1N0
YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNT
ZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAgICAgCiB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtNzgsOSArNzgs
OSBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBtYXBQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBnZXRNYXAoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNDZWxsKCkpKSB7CkBAIC05
NSw1MiArOTUsNTIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y0NsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBtYXAtPmNsZWFyKGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4obWFwLT5yZW1vdmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG1hcC0+Z2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jSGFzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEpTTWFwKiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihtYXAtPmhhcyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIEpTTWFw
KiBtYXAgPSBnZXRNYXAoY2FsbEZyYW1lLCB0aGlzVmFsdWUpOworICAgIEpTTWFwKiBtYXAgPSBn
ZXRNYXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFtYXAp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgbWFw
LT5zZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU01hcCogbWFwID0gZ2V0TWFwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgSlNNYXAqIG1hcCA9IGdldE1hcChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihtYXAtPnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmNwcAppbmRleCAyYjA2ZDY2MDM1YThmOGE4MjFiNjM3ZGM3YzU5OTMwODQ5ZDgxMmZh
Li5hZGZmYWVkZWE5NWQ0ZDAxMTQ2YTRlYjU1ZWZiMDdhNDRhZTE5YWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcApAQCAtMzMsMzggKzMzLDM4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoTWF0aE9iamVjdCk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0FDb3MoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNBQ29zaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0FTaW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBU2luaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEV4ZWNTdGF0ZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ2JydChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihFeGVjU3Rh
dGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NvcyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2go
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNF
eHAoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNFeHBtMShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0Zyb3VuZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0h5cG90KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXRoUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMXAoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzIoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSYW5kb20oRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNSb3VuZChF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1Np
Z24oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNTaW4oRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNTaW5oKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jU3FydChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY1RhbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1RhbmgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvc2goSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0FTaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFu
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNBVGFuaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbjIoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0NicnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NlaWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0NsejMyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Nvc2goSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jRXhwbTEoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jSHlwb3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMXAoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0
aFByb3RvRnVuY0xvZzEwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY01pbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUG93KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNS
YW5kb20oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1JvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaWduKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNTaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY1RhbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gTWF0aE9i
amVjdDo6c19pbmZvID0geyAiTWF0aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoTWF0aE9iamVjdCkgfTsKIApAQCAtMTI3LDc2ICsxMjcsNzYg
QEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZmFicyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZhYnMoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
dGhQcm90b0Z1bmNBQ29zKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6
OmFjb3MoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVNpbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjphc2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6YXNpbihjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6YXRhbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0
YW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBVGFuMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgZG91YmxlIGFy
ZzAgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICBkb3VibGUgYXJnMCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgZG91YmxlIGFyZzEgPSBleGVjLT5hcmd1bWVudCgxKS50b051bWJlcihleGVjKTsK
KyAgICBkb3VibGUgYXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGF0YW4yKGFy
ZzAsIGFyZzEpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY0NlaWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQ2VpbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2VpbChleGVjLT5hcmd1bWVu
dCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGNlaWwoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmND
bHozMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdWlu
dDMyX3QgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKKyAgICB1aW50
MzJfdCB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9VSW50MzIoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoY2x6KHZhbHVlKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3MoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RvdWJsZU51bWJlcihNYXRoOjpjb3MoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpj
b3MoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHAoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpleHAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihN
YXRoOjpleHAoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNG
bG9vcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmxvb3IoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmbG9vcihj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB1bnNpZ25lZCBhcmdz
Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgYXJnc0NvdW50ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgZG91YmxlIG1heCA9IDA7CiAgICAgVmVj
dG9yPGRvdWJsZSwgOD4gYXJnczsKICAgICBhcmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJn
c0NvdW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJnc0NvdW50OyArK2kpIHsK
LSAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSku
dG9OdW1iZXIoZXhlYykpOworICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHN0
ZDo6aXNpbmYoYXJnc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RG91YmxlTnVtYmVyKCtzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsK
QEAgLTIxNywxOSArMjE3LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0h5cG90KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRG91YmxlTnVtYmVyKHNxcnQoc3VtKSAqIG1heCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2coRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJs
ZU51bWJlcihNYXRoOjpsb2coZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2coY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB1bnNpZ25lZCBhcmdzQ291bnQgPSBl
eGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWduZWQgYXJnc0NvdW50ID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCk7CiAgICAgZG91YmxlIHJlc3VsdCA9IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFy
Z3NDb3VudDsgKytrKSB7Ci0gICAgICAgIGRvdWJsZSB2YWwgPSBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChrKS50b051bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIHZhbCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoaykudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzdGQ6
OmlzbmFuKHZhbCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFBOYU47CkBAIC0yMzksMTQgKzIz
OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNYXgoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY01pbihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNNaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHVu
c2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICB1bnNpZ25lZCBh
cmdzQ291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBkb3VibGUgcmVzdWx0
ID0gK3N0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgYXJnc0NvdW50OyArK2spIHsKLSAgICAgICAgZG91YmxlIHZhbCA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBkb3Vi
bGUgdmFsID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChrKS50b051bWJlcihjYWxsRnJh
bWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsKSkgewogICAgICAgICAgICAgcmVzdWx0ID0g
UE5hTjsKQEAgLTI1NiwzNCArMjU2LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY01pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jUG93KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBFQ01BIDE1LjguMi4xLjEzCiAKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBkb3VibGUgYXJn
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGFyZyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgZG91YmxlIGFyZzIgPSBleGVjLT5hcmd1bWVudCgxKS50b051bWJlcihleGVjKTsKKyAg
ICBkb3VibGUgYXJnMiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoY2FsbEZyYW1l
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShvcGVyYXRpb25NYXRoUG93
KGFyZywgYXJnMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jUmFuZG9tKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1JhbmRvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWFrUmFuZG9tTnVtYmVyKCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGdsb2JhbE9iamVjdC0+d2Vha1JhbmRv
bU51bWJlcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1JvdW5kKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY1JvdW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihqc1JvdW5kKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoanNSb3VuZChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFt
ZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1Np
Z24oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jU2lnbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IGRvdWJsZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICBkb3Vi
bGUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpOwogICAg
IGlmIChzdGQ6OmlzbmFuKGFyZykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
YU4oKSk7CiAgICAgaWYgKCFhcmcpCkBAIC0yOTEsOTUgKzI5MSw5NSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaWduKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0ZDo6c2lnbmJpdChhcmcpID8gLTEgOiAx
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNTaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbihleGVjLT5hcmd1bWVu
dCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91
YmxlTnVtYmVyKE1hdGg6OnNpbihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxG
cmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y1NxcnQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jU3FydChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoc3FydChleGVjLT5hcmd1
bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RG91YmxlTnVtYmVyKHNxcnQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJh
bWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNU
YW4oRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jVGFuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW4oZXhlYy0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0RvdWJsZU51bWJlcihNYXRoOjp0YW4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihj
YWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNJTXVsKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY0lNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGludDMyX3QgbGVmdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7
CisgICAgaW50MzJfdCBsZWZ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludDMyKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGludDMyX3QgcmlnaHQgPSBleGVjLT5hcmd1bWVu
dCgxKS50b0ludDMyKGV4ZWMpOworICAgIGludDMyX3QgcmlnaHQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpLnRvSW50MzIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGxlZnQgKiByaWdodCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNBQ29zaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
TWF0aDo6YWNvc2goZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjphY29zaChjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FTaW5oKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0RvdWJsZU51bWJlcihNYXRoOjphc2luaChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmFz
aW5oKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbmgo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmF0YW5oKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoTWF0aDo6YXRhbmgoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJh
bWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmND
YnJ0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0NicnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmNicnQoZXhlYy0+
YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RvdWJsZU51bWJlcihNYXRoOjpjYnJ0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQ29zaChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNDb3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpj
b3NoKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6Y29zaChjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0V4cG0xKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjpleHBtMShleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OmV4cG0xKGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRnJvdW5kKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zyb3VuZChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNEb3VibGVOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGV4ZWMtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIo
Y2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jTG9nMXAoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jTG9nMXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6Omxv
ZzFwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVO
dW1iZXIoTWF0aDo6bG9nMTAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjpsb2cxMChjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzIoRXhlY1N0YXRlKiBleGVjKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihl
eGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6
OmxvZzIoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihjYWxsRnJhbWUpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1Npbmgo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKE1hdGg6OnNpbmgoZXhlYy0+YXJndW1lbnQoMCku
dG9OdW1iZXIoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihNYXRoOjpzaW5oKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1l
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFu
aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNUYW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihNYXRoOjp0YW5oKGV4ZWMtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNEb3VibGVOdW1iZXIoTWF0aDo6dGFuaChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVy
KGNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSpleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jVHJ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmFyZ3VtZW50
KDApLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW50ZWdlclByZXNlcnZlTmFO
KGNhbGxGcmFtZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKaW5kZXggYWY1N2QzNGJhNWU0M2JhNDFmYzQyNWJl
ZDIzMzdlYzZmMmJmNmFmNy4uYmNkZWI0M2M5MTE2ZTYwMDU1OGNkYTJjZTBkZWRiNGM1OGQ4YWU2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApAQCAtNDks
OCArNDksOCBAQCBjbGFzcyBNYXRoT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJzKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRmxvb3IoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUcnVu
YyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y0FicyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jRmxvb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NaWNyb3Rhc2suaAppbmRleCA5YzRmMjc0NjUzMTRlZDRkZDYwNjU3
MWU2MmQ3NzkyNDc3ZjkzYTZmLi41ZDg4OTE1ZDViNGVjMzkzNDgzYTRkMWRhYWJjNWJjNTZjNTM3
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NaWNyb3Rhc2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NaWNyb3Rhc2suaApAQCAtMjks
NyArMjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
Q2FsbEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiBjbGFzcyBNaWNyb3Rh
c2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNaWNyb3Rhc2s+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNjIxNjUwN2NhYjYwZTg4YjRiNjk5NDE5NzJhZWE3M2JiM2Q0NDNlZC4uZGMzNDA2
ODEyYTZkMzA2Nzg0MzYzNTI2ZGU0NTI0YzQ4MzQzZGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAg
LTUwLDI0ICs1MCwyNCBAQCB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcgogfQogCiB0ZW1wbGF0ZTxF
cnJvclR5cGUgZXJyb3JUeXBlPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFs
dWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBl
eGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihleGVjLT5q
c0NhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKKyAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUodm0pKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1
cmUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwg
VHlwZU5vdGhpbmcsIGZhbHNlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShjYWxsRnJhbWUsIGVycm9yU3RydWN0
dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9CiAKIHRlbXBs
YXRlPEVycm9yVHlwZSBlcnJvclR5cGU+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPGVycm9yVHlwZT46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSktPmVycm9yU3RydWN0dXJlKHZtKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJv
clN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2Fz
dDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+ZXJyb3JT
dHJ1Y3R1cmUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVO
b3RoaW5nLCBmYWxzZSkpOwogfQogCiB0ZW1wbGF0ZSBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPEVycm9yVHlwZTo6RXZhbEVycm9yPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3MzA3ZDAxMGM5MzQ0
Njk2YzY0YWFjOWE4YzI5NWY3YWIzM2U0YTMwLi4xNjZlZTcxYjQ1NDI0OGI4MzRmY2Q3YzIzNzNh
ZTI0YTcxZGEwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC02MCwxMCArNjAsMTAgQEAgY2xhc3MgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
QmFzZSB7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1
cmUqIGVycm9yU3RydWN0dXJlKFZNJiB2bSkgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+ZXJy
b3JTdHJ1Y3R1cmUoZXJyb3JUeXBlKTsgfQorICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUo
Vk0mKSB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+ZXJyb3JTdHJ1Y3R1cmUoZXJyb3JUeXBlKTsg
fQogcHJpdmF0ZToKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSopOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCmluZGV4IDdiZGM4Zjk2ZDAzMDFjMjA0MDQzMTRi
OWFlYjc0ZGJkYjAzMDdhNGIuLjEwYmFmOTA5Njc5NzMxNzJhYzQzODY4NWYwYjc3NWEyNjJlNmY4
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24u
aApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwogCi10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKU0NfSE9TVF9D
QUxMICpSYXdOYXRpdmVGdW5jdGlvbikoRXhlY1N0YXRlKik7Cit0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKU0NfSE9TVF9DQUxMICpSYXdOYXRpdmVGdW5jdGlvbikoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogY2xhc3MgTmF0aXZlRnVuY3Rpb24gewogcHVibGljOgpAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBOYXRpdmVGdW5jdGlvbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KE5hdGl2
ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShOYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9wdHIgPT0gb3RoZXIubV9wdHI7IH0KIAotICAgIEVuY29kZWRKU1ZhbHVlIG9wZXJhdG9yKCko
RXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBtX3B0cihleGVjKTsgfQorICAgIEVuY29kZWRKU1Zh
bHVlIG9wZXJhdG9yKCkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIHsgcmV0dXJuIG1fcHRyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCiAg
ICAgdm9pZCogcmF3UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1fcHRyKTsgfQogCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uIHsKICAgICBib29sIG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9
KFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhl
ci5tX3B0cjsgfQogCi0gICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShFeGVjU3RhdGUqIGV4
ZWMpIHsgcmV0dXJuIE5hdGl2ZUZ1bmN0aW9uKCp0aGlzKShleGVjKTsgfQorICAgIEVuY29kZWRK
U1ZhbHVlIG9wZXJhdG9yKCkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsgcmV0dXJuIE5hdGl2ZUZ1bmN0aW9uKCp0aGlzKShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSk7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIE5hdGl2ZUZ1bmN0aW9uKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0
dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRl
ckZ1bmN0aW9uLmNwcAppbmRleCBhNTZjYWIzZmFlNzllZTk0NWU2OTc2NjI0YTE2NGI1YjE4ZDhm
NGM4Li45NjdkYmZjNTlkMWZiZjYyODBmZTViZjFmNTljMmVjZmEwZTc4MjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gTnVsbEdl
dHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVsbEdldHRlckZ1bmN0aW9uKSB9Owog
CiBuYW1lc3BhY2UgTnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWwgewotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDU2ZDUzY2M0YWE2NzZiZjczZGZjMWUwZWU2
ZjRmM2E2MjcxODcwMzMuLjkwYzVjZjNlZWRmYmZjNTFlMTM3ZTMyMzE5NzE5YzA4MjE3ZDZkZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1
bmN0aW9uLmNwcApAQCAtNzEsMTMgKzcxLDEzIEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVy
bmFsIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRl
ZmluZWQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJldHVyblVuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBpZiAoY2FsbGVySXNTdHJpY3QoZXhlYykpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXR0aW5nIGEg
cHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciJfcykpOworICAgIGlmIChjYWxsZXJJc1N0
cmljdChjYWxsRnJhbWUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25s
eSBhIGdldHRlciJfcykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZTgyYThmYjRiZjQzOTk2NTE0MGQ1NWRiYjc0MzlhMDE5OWUz
ZTk4Yi4uOTA2ODI5MzhhZjQ4ODA1ODFhZTcwNDc4Yzg3YTVkNzY2MTFmYTA5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApA
QCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0
b3JGdW5jSXNTYWZlSW50ZWdlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyQ29uc3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNTIsOCArNTIsOCBAQCBjb25zdCBDbGFz
c0luZm8gTnVtYmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaQogQGVuZAogKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwg
c3RydWN0dXJlLCBjYWxsTnVtYmVyQ29uc3RydWN0b3IsIGNvbnN0cnVjdE51bWJlckNvbnN0cnVj
dG9yKQpAQCAtODYsMTMgKzg2LDEzIEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiB9CiAKIC8v
IEVDTUEgMTUuNy4xCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3ROdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgZG91YmxlIG4gPSBleGVjLT5hcmd1
bWVudENvdW50KCkgPyBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihleGVjKSA6
IDA7CisgICAgZG91YmxlIG4gPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA/IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoY2FsbEZyYW1lKSA6IDA7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5udW1i
ZXJPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgTnVt
YmVyT2JqZWN0KiBvYmplY3QgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsK
QEAgLTEwMSwyMSArMTAxLDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogLy8gRUNN
QSAxNS43LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKCFleGVj
LT5hcmd1bWVudENvdW50KCkgPyAwIDogZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKCFjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvTnVtYmVyKGNhbGxGcmFtZSkpKTsKIH0KIAogLy8gRUNNQS0yNjIgMjAuMS4yLjMKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50
ZWdlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihO
dW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJ
bnRlZ2VySW1wbChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQogCiAvLyBFQ01BLTI2MiAy
MC4xLjIuNQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3Ry
dWN0b3JGdW5jSXNTYWZlSW50ZWdlcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBhcmd1
bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogICAgIGJvb2wgaXNJbnRlZ2VyOwogICAgIGlmIChhcmd1bWVudC5p
c0ludDMyKCkpCiAgICAgICAgIGlzSW50ZWdlciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCAwM2E1ZTFiMDAzNzhi
YjJiZWNjMjY0YmQ4OTNhYzc3ZTdmOWRlOWUyLi4yOGUyZjU0MTMyZWM4Y2RiNjRlOTNmYzI3NWZi
YzhiOTBhNDM3Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCB0eXBlZGVmIFdURjo6ZG91Ymxl
X2NvbnZlcnNpb246OlN0cmluZ0J1aWxkZXIgRG91YmxlQ29udmVyc2lvblN0cmluZ0J1aWxkZXI7
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5j
VG9GaXhlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBv
bmVudGlhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC0zODYsMTggKzM4NiwxOCBAQCBTdHJpbmcgdG9T
dHJpbmdXaXRoUmFkaXgoZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQogLy8gVGhp
cyBtZXRob2QgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyBhIG51bWJlciBv
ZiAqZGVjaW1hbCBwbGFjZXMqCiAvLyB0byByb3VuZCB0aGUgc2lnbmlmaWNhbmQgdG8gKG9yLCBw
dXQgYW5vdGhlciB3YXksIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgcm91bmRzCiAvLyB0byBhcmd1
bWVudC1wbHVzLW9uZSBzaWduaWZpY2FudCBmaWd1cmVzKS4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgZG91Ymxl
IHg7Ci0gICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIGV4ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihleGVjLCBzY29wZSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLCB4KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYXJn
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIC8vIFBlcmZvcm0gVG9JbnRlZ2VyIG9uIHRoZSBhcmd1bWVudCBiZWZvcmUg
cmVtYWluaW5nIHN0ZXBzLgotICAgIGludCBkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8aW50
PihhcmcudG9JbnRlZ2VyKGV4ZWMpKTsKKyAgICBpbnQgZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19j
YXN0PGludD4oYXJnLnRvSW50ZWdlcihjYWxsRnJhbWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCkBAIC00
MDUsNyArNDA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1
bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyKHgpKSk7CiAKICAg
ICBpZiAoZGVjaW1hbFBsYWNlcyA8IDAgfHwgZGVjaW1hbFBsYWNlcyA+IDEwMCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAidG9FeHBvbmVudGlhbCgpIGFy
Z3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgInRvRXhwb25lbnRpYWwoKSBhcmd1bWVu
dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zKTsKIAogICAgIC8vIFJvdW5kIGlmIHRoZSBh
cmd1bWVudCBpcyBub3QgdW5kZWZpbmVkLCBhbHdheXMgZm9ybWF0IGFzIGV4cG9uZW50aWFsLgog
ICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTQyMywxOSArNDIzLDE5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChF
eGVjU3RhdGUqIGV4ZWMpCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5
aW5nIGEgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIHRvIHJvdW5kIHRoZQogLy8gc2lnbmlmaWNh
bmQgdG8uIEhvd2V2ZXIgd2hlbiBjb252ZXJ0aW5nIGxhcmdlIHZhbHVlcyAoMWUrMjEgYW5kIGFi
b3ZlKSB0aGlzCiAvLyBtZXRob2Qgd2lsbCBpbnN0ZWFkIGZhbGxiYWNrIHRvIGNhbGxpbmcgVG9T
dHJpbmcuIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0Zp
eGVkKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9GaXhlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBkb3VibGUgeDsKLSAgICBpZiAoIXRvVGhpc051bWJlcih2bSwgZXhlYy0+dGhp
c1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGV4
ZWMsIHNjb3BlLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0b1RoaXNOdW1iZXIodm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhp
c051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
Ci0gICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4ZWMtPmFyZ3VtZW50
KDApLnRvSW50ZWdlcihleGVjKSk7CisgICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGNhbGxGcmFtZSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGRlY2ltYWxQbGFjZXMg
PCAwIHx8IGRlY2ltYWxQbGFjZXMgPiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VF
cnJvcihleGVjLCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBh
bmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCJfcyk7
CiAKICAgICAvLyAxNS43LjQuNS43IHN0YXRlcyAiSWYgeCA+PSAxMF4yMSwgdGhlbiBsZXQgbSA9
IFRvU3RyaW5nKHgpIgogICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgSW5pbml0eSwgYW5kIHN0cnVj
dHVyZSB0aGUgY2hlY2sgc28gdGhhdCBOYU4KQEAgLTQ1NywyMiArNDU3LDIyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4
ZWMpCiAvLyBkZWNpbWFsLCB3aGlsc3QgMTAwMCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGV4cG9uZW50
aWFsIHJlcHJlc2VudGF0aW9uIDEuMDBlKzMuCiAvLyBGb3IgbmVnYXRpdmUgZXhwb25lbnRzIHZh
bHVlcyA+PSAxZS02IGFyZSBmb3JtYXRlZCBhcyBkZWNpbWFsIGZyYWN0aW9ucywKIC8vIHdpdGgg
c21hbGxlciB2YWx1ZXMgY29udmVydGVkIHRvIGV4cG9uZW50aWFsIHJlcHJlc2VudGF0aW9uLgot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGRvdWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlz
VmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhl
Yywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlz
TnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAK
LSAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAvLyBUbyBwcmVjaXNpb24gY2FsbGVkIHdpdGgg
bm8gYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBUb1N0cmluZy4KICAgICBpZiAoYXJnLmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmlu
Zzo6bnVtYmVyKHgpKSk7CiAKICAgICAvLyBQZXJmb3JtIFRvSW50ZWdlciBvbiB0aGUgYXJndW1l
bnQgYmVmb3JlIHJlbWFpbmluZyBzdGVwcy4KLSAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzID0g
c3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRlZ2VyKGV4ZWMpKTsKKyAgICBpbnQgc2lnbmlmaWNh
bnRGaWd1cmVzID0gc3RhdGljX2Nhc3Q8aW50PihhcmcudG9JbnRlZ2VyKGNhbGxGcmFtZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBIYW5kbGUgTmFO
IGFuZCBJbmZpbml0eS4KQEAgLTQ4MCw3ICs0ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6
bnVtYmVyKHgpKSk7CiAKICAgICBpZiAoc2lnbmlmaWNhbnRGaWd1cmVzIDwgMSB8fCBzaWduaWZp
Y2FudEZpZ3VyZXMgPiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVj
LCBzY29wZSwgInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEw
MCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVy
VG9TdHJpbmdGaXhlZFByZWNpc2lvbih4LCBzaWduaWZpY2FudEZpZ3VyZXMsIEtlZXBUcmFpbGlu
Z1plcm9zKSkpOwogfQpAQCAtNTUzLDUwICs1NTMsNDkgQEAgSlNTdHJpbmcqIG51bWJlclRvU3Ry
aW5nKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQogICAgIHJldHVy
biBudW1iZXJUb1N0cmluZ0ludGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBkb3VibGUgZG91YmxlVmFsdWU7Ci0gICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIHN0YXRl
LT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhp
c051bWJlckVycm9yKHN0YXRlLCBzY29wZSwgc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXRvVGhpc051bWJlcih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVRvVGhpc051bWJlckVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgYXV0byByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc2NvcGUpOworICAg
IGF1dG8gcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJUb1N0cmluZ0ludGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGRvdWJsZSB4OwotICAgIGlmICghdG9UaGlzTnVtYmVyKHZtLCBleGVjLT50aGlz
VmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhl
Yywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRvVGhpc051bWJlcih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgeCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVG9UaGlz
TnVtYmVyRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAK
ICNpZiBFTkFCTEUoSU5UTCkKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZv
cm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJG
b3JtYXRTdHJ1Y3R1cmUoKSk7Ci0gICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9y
bWF0KCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIG51
bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqZXhlYywg
eCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdE51bWJlcigqY2FsbEZyYW1lLCB4KSkpOwogI2Vsc2UKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogI2Vu
ZGlmCiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFs
dWVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgZG91YmxlIHg7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIodm0sIHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVG9UaGlzTnVtYmVyRXJyb3IoZXhlYywgc2NvcGUsIGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuaAppbmRleCAyOWU1NWM1ZWIzNGRhMjVkNmJhZmE1ZTkxOWIwMjNkM2Ex
MzQ4NTNmLi43OTdhM2NiMDg4ZGRhYTRlNmExMmNkMDhkNzljZWY4NDUyM2ZlZDIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtNTAs
NyArNTAsNyBAQCBjbGFzcyBOdW1iZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgTnVtYmVyT2Jq
ZWN0IHsKICAgICBOdW1iZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogSlNTdHJpbmcqIGludDMyVG9TdHJpbmcoVk0m
LCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKIEpTU3RyaW5nKiBpbnQ1MlRvU3RyaW5n
KFZNJiwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogbnVtYmVyVG9T
dHJpbmcoVk0mLCBkb3VibGUgdmFsdWUsIGludDMyX3QgcmFkaXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDg4NGQ5
ZmZmNDJkZDU2N2VkZTdiYjNiNjQ3OTE1ODM5MGIzYWE2YmIuLjk0ZWNhYjM3Zjk2NDZkMTVkYTVl
YjBmYjhjMjU5MWY5NmM1MjQ1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTQwLDIxICs0MCwyMSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckFzc2lnbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2Yo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0
aWVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
SXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogfQogCkBAIC05Myw4ICs5Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
CiAqLwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKIE9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBjYWxsT2JqZWN0Q29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcikK
QEAgLTExNSwxMSArMTE1LDEwIEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiB9CiAKIC8vIEVT
IDE5LjEuMS4xIE9iamVjdChbdmFsdWVdKQotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3Qq
IGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG5l
d1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmpzQ2FsbGVlKCkpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBvYmplY3RD
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIG5ld1RhcmdldCBjb25k
aXRpb24gaW4gdGhpcyBjYWxsZXIgc2lkZSBpbnN0ZWFkIG9mIEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlIHNpZGUuCkBAIC0xNDMsNDMgKzE0Miw0MyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBuZXdUYXJnZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJnLnRvT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVj
dENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0KGV4
ZWMsIGV4ZWMtPm5ld1RhcmdldCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgSlNWYWx1ZSgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3RXaXRoTmV3VGFyZ2V0KGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQ
cm90b3R5cGUodm0sIGV4ZWMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlw
ZU9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKG9iamVjdFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5k
ZWZpbmVkIG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5kZWZpbmVkIG9yIG51bGwi
X3MpOwogCi0gICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBwcm90b1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXBy
b3RvVmFsdWUuaXNPYmplY3QoKSAmJiAhcHJvdG9WYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm90b3R5cGUgdmFsdWUgY2FuIG9u
bHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9i
amVjdCBvciBudWxsIl9zKTsKIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50
b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmpl
Y3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOwotICAgIGJv
b2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3Rv
VmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKKyAgICBib29sIGRpZFNldFByb3RvdHlwZSA9
IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBjYWxsRnJhbWUsIHByb3RvVmFsdWUsIHNob3VsZFRo
cm93SWZDYW50U2V0KTsKICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChkaWRTZXRQcm90b3R5
cGUsIHNjb3BlLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3RWYWx1ZSk7CiB9CkBAIC0yMzIsNjQgKzIzMSw2NCBAQCBKU1Zh
bHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvYgogICAgIHJldHVybiBkZXNjcmlwdG9yczsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+
YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxsRnJhbWUsIG9iamVjdCwgcHJvcGVy
dHlOYW1lKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGV4ZWMsIG9iamVjdCkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY2FsbEZyYW1lLCBvYmplY3QpKSk7CiB9CiAKIC8v
IEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09iamVjdChleGVj
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVj
dChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93
blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERv
bnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGNhbGxGcmFtZSwgb2JqZWN0
LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNs
dWRlKSkpOwogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5
bWJvbHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlO
YW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtl
eXMoY2FsbEZyYW1lLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+
YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3Bl
cnR5S2V5cyhjYWxsRnJhbWUsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFyZ2V0
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJPYmpl
Y3QuYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCJfcyk7Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQiX3MpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50
b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICAvLyBGSVhNRTogRXh0ZW5kIHRoaXMgZm9yIG5vbiBKU0ZpbmFsT2JqZWN0LiBGb3Ig
ZXhhbXBsZSwgd2Ugd291bGQgbGlrZSB0byB1c2UgdGhpcyBmYXN0IHBhdGggZm9yIGZ1bmN0aW9u
IG9iamVjdHMgdG9vLgpAQCAtMjk4LDE3ICsyOTcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBW
ZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgOD4gcHJvcGVydGllczsKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciB2YWx1ZXM7Ci0gICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+
YXJndW1lbnRDb3VudCgpOworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBhcmdzQ291bnQ7ICsr
aSkgewotICAgICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoaSk7CisgICAgICAgIEpTVmFsdWUgc291cmNlVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoc291cmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBKU09iamVjdCogc291cmNlID0gc291
cmNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0KiBzb3VyY2UgPSBzb3Vy
Y2VWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCkgewog
ICAgICAgICAgICAgaWYgKCFzb3VyY2UtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKHZtKSkgewot
ICAgICAgICAgICAgICAgIHNvdXJjZS0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGV4ZWMpOwor
ICAgICAgICAgICAgICAgIHNvdXJjZS0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGNhbGxGcmFt
ZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICAgICAgICAgIH0KIApAQCAtMzc0LDEyICszNzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHRhcmdldENhblBlcmZvcm1GYXN0UHV0ID0gZmFsc2U7CiAKICAgICAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydGllcyh2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMs
IFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKLSAgICAgICAgc291cmNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMoc291cmNlLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVt
ZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgICAgICBz
b3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UsIGNhbGxG
cmFtZSwgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6
OkluY2x1ZGUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgewog
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc291cmNlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgICAgICAgICAgYm9vbCBoYXNQcm9w
ZXJ0eSA9IHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291cmNl
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291cmNlLCBj
YWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODgsMTMgKzM4NywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIXNs
b3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBz
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChjYWxsRnJhbWUsIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwg
dHJ1ZSk7Ci0gICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOworICAgICAgICAgICAgdGFyZ2V0LT5wdXRJbmxpbmUo
Y2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgICAg
ICB9OwogCiAgICAgICAgIC8vIEZpcnN0IGxvb3AgaXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29w
IGlzIGZvciBzeW1ib2xzIHRvIGtlZXAgc3RhbmRhcmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGlu
IHRoZSBzcGVjLgpAQCAtNDI2LDI4ICs0MjUsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0YXJnZXQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIk9iamVjdC52YWx1
ZXMgcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Il9zKTsKLSAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmpl
Y3QudmFsdWVzIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCJfcyk7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRvT2JqZWN0
KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAg
IEpTQXJyYXkqIHZhbHVlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7Cisg
ICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxw
dHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2
YXRlU3ltYm9sTW9kZTo6RXhjbHVkZSk7Ci0gICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdl
dE93blByb3BlcnR5TmFtZXModGFyZ2V0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1v
ZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIHRhcmdldC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgY2FsbEZyYW1lLCBwcm9wZXJ0
aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CiAgICAgYXV0byBhZGRWYWx1ZSA9IFsmXSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0YXJnZXQsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRh
cmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBjYWxsRnJh
bWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAgICAgICAgIGlmICghaGFzUHJvcGVydHkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC00NTYsMTIgKzQ1NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBKU1ZhbHVl
IHZhbHVlOwogICAgICAgICBpZiAoTElLRUxZKCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0
KCkpKQotICAgICAgICAgICAgdmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IHRhcmdldC0+Z2V0KGV4
ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICB2YWx1ZSA9IHRhcmdldC0+Z2V0KGNhbGxG
cmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAotICAgICAgICB2YWx1ZXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4Kyss
IHZhbHVlKTsKKyAgICAgICAgdmFsdWVzLT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGluZGV4
KyssIHZhbHVlKTsKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtUHJvcGVy
dGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CkBAIC01
NzQsMjQgKzU3MywyNCBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVm
aW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3MpOwotICAgIEpTT2JqZWN0
KiBvYmogPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVk
IG9uIE9iamVjdHMuIl9zKTsKKyAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3Jp
cHRvcjsKLSAgICBhdXRvIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihleGVjLCBleGVj
LT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CisgICAgYXV0byBzdWNjZXNzID0gdG9Qcm9wZXJ0
eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9y
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsK
ICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpOwogICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7
CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBvYmotPm1ldGhvZFRhYmxlKHZt
KS0+ZGVmaW5lT3duUHJvcGVydHkob2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHRydWUpOworICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmos
IGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmopKTsKIH0KIApAQCAtNjQxLDM4
ICs2NDAsMzggQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm8KICAgICByZXR1cm4gb2JqZWN0Owog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJv
cGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIl9zKTsKLSAgICBKU09iamVj
dCogdGFyZ2V0T2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIEpTT2JqZWN0
KiBwcm9wcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOworICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVk
IG9uIE9iamVjdHMuIl9zKTsKKyAgICBKU09iamVjdCogdGFyZ2V0T2JqID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgSlNPYmplY3QqIHByb3BzID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgxKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhcHJvcHMpOwogICAgIGlmIChVTkxJS0VMWSghcHJvcHMpKQog
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIHRhcmdldE9iaiwg
cHJvcHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
ZGVmaW5lUHJvcGVydGllcyhjYWxsRnJhbWUsIHRhcmdldE9iaiwgcHJvcHMpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBwcm90byA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpICYmICFw
cm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJPYmpl
Y3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiJfcyk7CiAgICAgSlNP
YmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKLSAgICAgICAgPyBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBhc09iamVjdChwcm90bykpCi0gICAgICAgIDogY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBl
T2JqZWN0U3RydWN0dXJlKCkpOwotICAgIGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwgYXNPYmplY3Qo
cHJvdG8pKQorICAgICAgICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOworICAgIGlmIChjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobmV3T2JqZWN0KTsKLSAgICBKU09iamVjdCogcHJvcGVydGllcyA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBwcm9wZXJ0aWVz
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b09iamVjdChjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09i
amVjdCwgcHJvcGVydGllcykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGNhbGxGcmFtZSwgbmV3T2JqZWN0LCBwcm9wZXJ0
aWVzKSkpOwogfQogCiBlbnVtIGNsYXNzIEludGVncml0eUxldmVsIHsKQEAgLTc5MCwxNyArNzg5
LDE3IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIElmIFR5cGUo
TykgaXMgbm90IE9iamVjdCwgcmV0dXJuIE8uCi0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9iaiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmop
OwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
Q29uc3RydWN0b3JTZWFsKGV4ZWMsIGFzT2JqZWN0KG9iaikpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29uc3RydWN0b3JTZWFsKGNhbGxG
cmFtZSwgYXNPYmplY3Qob2JqKSkpKTsKIH0KIAogSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9y
RnJlZXplKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKQEAgLTgyMiwzNiArODIx
LDM2IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxLiBJZiBU
eXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiBPLgotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
b2JqKTsKLSAgICBKU09iamVjdCogcmVzdWx0ID0gb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhl
YywgYXNPYmplY3Qob2JqKSk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IG9iamVjdENvbnN0cnVj
dG9yRnJlZXplKGNhbGxGcmFtZSwgYXNPYmplY3Qob2JqKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdChhcmd1bWVudCk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgY2FsbEZyYW1lKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICAv
LyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiB0cnVlLgotICAgIEpTVmFsdWUg
b2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qob2JqKTsKQEAgLTg2MSwxNSArODYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNTZWFsZWQodm0pKSk7
CiAKICAgICAvLyAyLiBSZXR1cm4gPyBUZXN0SW50ZWdyaXR5TGV2ZWwoTywgInNlYWxlZCIpLgot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJ
bnRlZ3JpdHlMZXZlbDo6U2VhbGVkPihleGVjLCB2bSwgb2JqZWN0KSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZl
bDo6U2VhbGVkPihjYWxsRnJhbWUsIHZtLCBvYmplY3QpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAKICAgICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiB0cnVlLgotICAg
IEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBvYmogPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3Qob2JqKTsKQEAgLTg3OSwyNSArODc4LDI1IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aXNGcm96
ZW4odm0pKSk7CiAKICAgICAvLyAyLiBSZXR1cm4gPyBUZXN0SW50ZWdyaXR5TGV2ZWwoTywgImZy
b3plbiIpLgotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3Jp
dHlMZXZlbDxJbnRlZ3JpdHlMZXZlbDo6RnJvemVuPihleGVjLCB2bSwgb2JqZWN0KSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRlc3RJbnRlZ3JpdHlMZXZlbDxJbnRl
Z3JpdHlMZXZlbDo6RnJvemVuPihjYWxsRnJhbWUsIHZtLCBvYmplY3QpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvcklzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG9i
aiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9i
amVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0
LT5pc0V4dGVuc2libGUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihpc0V4dGVuc2libGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1
ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc2FtZVZhbHVlKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogSlNBcnJh
eSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJv
cGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRv
bnRFbnVtUHJvcGVydGllc01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCAzZTA2NzI0Y2VhYzM4YTE5ZTgyMjc2YjRmMzcw
ZjA4NWJhNTFhN2JkLi42ZWYyNDM4M2EzYWQ0ZmRhN2YxOTBkYTA3MjNiMWUyM2IyY2UyZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKQEAgLTI2LDExICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggMDAwODY2ZmRl
OWQxYzI5MWExZjJlYjBjN2NhMzFkYzVjNGZlNWY0OC4uZTVhOWRhZmRlMmQ3MDc3NTcwODdmNTRh
NjA3YTk0OTQ1MzA5YzI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC0zMywxNSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y1ZhbHVlT2YoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0
ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShPYmplY3RQcm90b3R5cGUpOwogCkBAIC03OCwyNCAr
NzgsMjQgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSk7Ci0gICAgSlNPYmplY3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Y2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKKyAgICBKU09iamVjdCogdmFsdWVPYmogPSB0aGlzVmFs
dWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZU9iaik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jSGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKLSAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUs
IFN0cmljdE1vZGUpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlz
VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFs
dWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTAzLDM0ICsxMDMsMzQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUodm0pOwogICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5
Q2FjaGUgPSB2bS5lbnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7CiAgICAgaWYgKE9wdGlvbmFs
PGJvb2w+IHJlc3VsdCA9IGhhc093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSkpIHsKLSAgICAgICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVjdC0+aGFzT3du
UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIEFTU0VSVCgqcmVzdWx0ID09
IHRoaXNPYmplY3QtPmhhc093blByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKCpyZXN1bHQpKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3du
UHJvcGVydHkpOwotICAgIGJvb2wgcmVzdWx0ID0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHko
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBib29sIHJlc3VsdCA9IHRoaXNPYmplY3Qt
Pmhhc093blByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGhhc093blBy
b3BlcnR5Q2FjaGUtPnRyeUFkZCh2bSwgc2xvdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBy
ZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90
eXBlT2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKTsKKyAgICBKU09iamVjdCog
dGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSktPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwgY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHdoaWxl
ICh0cnVlKSB7CkBAIC0xMzgsMjUgKzEzOCwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICAgICAg
aWYgKHYgPT0gdGhpc09iaikKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKTsKLSAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90b3R5cGUodm0s
IGV4ZWMpOworICAgICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwgY2FsbEZy
YW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgfQogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgU3RyaWN0TW9kZSkudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgZ2V0
LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIg
dXNhZ2UiX3MpOwogCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcjsKQEAgLTE2NiwyNSArMTY2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAg
IGJvb2wgc2hvdWxkVGhyb3cgPSB0cnVlOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgY2FsbEZy
YW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHNl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
aWYgKGdldENhbGxEYXRhKHZtLCBzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJpbnZhbGlkIHNldHRl
ciB1c2FnZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsICJpbnZhbGlkIHNldHRlciB1c2FnZSJfcyk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwpAQCAtMTk0LDI0ICsxOTQsMjQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91
bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhjYWxsRnJhbWUsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRoaXNPYmplY3QtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFo
YXNQcm9wZXJ0eSk7CiAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgIGlmIChzbG90Lmlz
QWNjZXNzb3IoKSkgewpAQCAtMjIxLDcgKzIyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICAg
ICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgaWYgKHNsb3Quc2xv
dEJhc2UoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcikpCisgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSA/IEpTVmFsdWU6OmVu
Y29kZShkZXNjcmlwdG9yLmdldHRlcigpKSA6IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyOSwxOSArMjI5LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0xvb2t1cFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhl
eGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSku
dG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blBy
b3BlcnR5KTsKLSAgICBib29sIGhhc1Byb3BlcnR5ID0gdGhpc09iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRo
aXNPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5
KTsKICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgaWYgKHNsb3QuaXNBY2Nlc3Nvcigp
KSB7CkBAIC0yNTEsNyArMjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoc2xv
dC5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpIHsKICAg
ICAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgICAgICAgICAgQVNT
RVJUKHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpLT5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkK
KyAgICAgICAgICAgIGlmIChzbG90LnNsb3RCYXNlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihjYWxsRnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpID8gSlNWYWx1ZTo6ZW5jb2RlKGRlc2Ny
aXB0b3Iuc2V0dGVyKCkpIDogSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjU5LDY0ICsyNTksNjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoY2FsbEZyYW1lLCBTdHJpY3RNb2RlKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGJvb2wgZW51
bWVyYWJsZSA9IHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOworICAgIGJv
b2wgZW51bWVyYWJsZSA9IHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjYWxs
RnJhbWUsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZW51bWVyYWJsZSkpOwog
fQogCiAvLyAxNS4yLjQuMyBPYmplY3QucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nKCkKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyAxLiBMZXQgViBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIuIEludm9rZShWLCAidG9TdHJpbmciKQog
CiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3Npbmcg
dGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
aGlzVmFsdWUudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSku
dG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0
b1N0cmluZyIsIFYpCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBib29sIGhhc1Byb3BlcnR5ID0gb2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHNs
b3QpOworICAgIGJvb2wgaGFzUHJvcGVydHkgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxs
RnJhbWUsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCBzbG90KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwotICAgIEpTVmFsdWUg
dG9TdHJpbmcgPSBoYXNQcm9wZXJ0eSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmcpIDoganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHRvU3RyaW5nID0g
aGFzUHJvcGVydHkgPyBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcpIDoganNVbmRlZmluZWQoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIElmIElzQ2FsbGFibGUodG9TdHJpbmcpIGlz
IGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9TdHJpbmcsIGNh
bGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgdG9TdHJpbmcgcGFz
c2luZyB0aGUgdGhpcyB2YWx1ZSBhbmQgbm8gYXJndW1lbnRzLgotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdG9TdHJpbmcsIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCB0b1N0cmluZywg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxpc3QpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNU
b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGNhbGxGcmFtZSwgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDog
dm0uc21hbGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSB0aGlzVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJU
KCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTMy
NiwyNiArMzI2LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAKICAgICBQcm9wZXJ0eU5hbWUgdG9TdHJpbmdUYWdTeW1ib2wgPSB2bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbDsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
dG9TdHJpbmdUYWdTeW1ib2wsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiB0b1N0cmlu
Z1RhZ1Nsb3QpIC0+IEpTVmFsdWUgeworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHRvU3Ry
aW5nVGFnU3ltYm9sLCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgdG9TdHJpbmdUYWdT
bG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlIHN0cmluZ1RhZyA9IHRvU3RyaW5nVGFnU2xvdC5nZXRWYWx1ZShleGVjLCB0b1N0cmluZ1Rh
Z1N5bWJvbCk7CisgICAgICAgICAgICBKU1ZhbHVlIHN0cmluZ1RhZyA9IHRvU3RyaW5nVGFnU2xv
dC5nZXRWYWx1ZShjYWxsRnJhbWUsIHRvU3RyaW5nVGFnU3ltYm9sKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoc3RyaW5nVGFn
LmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBKU1N0cmluZyogcmVzdWx0ID0ganNTdHJp
bmcoZXhlYywgdm0uc21hbGxTdHJpbmdzLm9iamVjdFN0cmluZ1N0YXJ0KCksIGFzU3RyaW5nKHN0
cmluZ1RhZyksIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoJ10nKSk7Cisg
ICAgICAgICAgICAgICAgSlNTdHJpbmcqIHJlc3VsdCA9IGpzU3RyaW5nKGNhbGxGcmFtZSwgdm0u
c21hbGxTdHJpbmdzLm9iamVjdFN0cmluZ1N0YXJ0KCksIGFzU3RyaW5nKHN0cmluZ1RhZyksIHZt
LnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoJ10nKSk7CiAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCBy
ZXN1bHQsIHRvU3RyaW5nVGFnU2xvdCk7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShjYWxsRnJhbWUsIHZtLCByZXN1bHQs
IHRvU3RyaW5nVGFnU2xvdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB0YWcgPSB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPnRvU3RyaW5nTmFtZSh0aGlzT2JqZWN0LCBleGVjKTsKKyAgICAgICAg
U3RyaW5nIHRhZyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9TdHJpbmdOYW1lKHRo
aXNPYmplY3QsIGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgIFN0cmluZyBuZXdTdHJpbmcgPSB0cnlNYWtlU3RyaW5nKCJbb2JqZWN0
ICIsIFdURk1vdmUodGFnKSwgIl0iKTsKICAgICAgICAgaWYgKCFuZXdTdHJpbmcpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKICAg
ICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG5ld1N0cmluZyk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUo
ZXhlYywgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+
c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShjYWxsRnJhbWUsIHZtLCByZXN1
bHQsIHRvU3RyaW5nVGFnU2xvdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgK
aW5kZXggZjI3ODg2YmIyNjY2NjUwNzM3NjA2MWNiZDA2MjJmZjIyYWU0YjIzMC4uYjlhYTY0OWY2
MGMwNTI5YTA2MDU1NmU2ZTIxZDNjY2MzNzczNDNiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKQEAgLTQ1LDYgKzQ1LDYgQEAgY2xhc3Mg
T2JqZWN0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIE9i
amVjdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5Q29uc3RydWN0b3IuY3BwCmluZGV4IDI3NzM5NTVhZDk5NWI2ZmRjOTQ4MTIzNjhlOTQw
OTNmZmVlNDY5OTEuLjQ1ODZjMTMwZDNhNjlhOGE1NzhlMWQwMDIzODJlNjUxMzhlZGRjYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3Iu
Y3BwCkBAIC00OCwzMCArNDgsMzAgQEAgUHJveHlDb25zdHJ1Y3RvciogUHJveHlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJv
eHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxQcm94eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCBjYWxsUHJveHksIGNvbnN0cnVjdFByb3h5T2JqZWN0KQogewogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVBy
b3h5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGgg
dHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiX3MpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2Fs
bGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiX3MpOwog
Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKICAgICBKU1ZhbHVlIGhhbmRsZXIgPSBh
cmdzLmF0KDEpOwotICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IFByb3h5T2JqZWN0OjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0YXJnZXQsIGhhbmRsZXIpOworICAg
IFByb3h5T2JqZWN0KiBwcm94eSA9IFByb3h5T2JqZWN0OjpjcmVhdGUoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIHRhcmdldCwgaGFuZGxlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUHJveHlSZXZva2UqIHJldm9rZSA9IFByb3h5UmV2
b2tlOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJveHlSZXZva2VT
dHJ1Y3R1cmUoKSwgcHJveHkpOworICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBQcm94eVJldm9r
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb3h5UmV2b2tlU3RydWN0dXJlKCksIHByb3h5
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgbWFrZUlkZW50aWZpZXIodm0sICJwcm94eSIpLCBwcm94eSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2tlIiksIHJldm9rZSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CkBAIC03OSwxMCArNzks
MTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVBy
b3h5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3h5UmV2b2NhYmxl
Q29uc3RydWN0b3JUaHJvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIGNhbm5vdCBi
ZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIl9zKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJQcm94eS5yZXZvY2FibGUgY2Fubm90
IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiX3MpOwogfQogCiB2b2lkIFBy
b3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTkyLDIyICs5MiwyMiBAQCB2b2lkIFBy
b3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwg
SlNHbG9iYWxPYmplY3QqCiAgICAgcHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJl
dm9jYWJsZSIpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgInJldm9j
YWJsZSJfcywgbWFrZVJldm9jYWJsZVByb3h5LCBOb0ludHJpbnNpYywgcHJveHlSZXZvY2FibGVD
b25zdHJ1Y3RvclRocm93RXJyb3IpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7Ci0gICAgaWYgKGV4ZWMtPm5l
d1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAibmV3LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBi
ZSB1bmRlZmluZWQiX3MpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgaWYgKGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgIm5ldy50YXJnZXQgb2YgUHJveHkgY29uc3RydWN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVk
Il9zKTsKIAotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZy
YW1lKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CiAgICAgSlNWYWx1ZSBoYW5k
bGVyID0gYXJncy5hdCgxKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShQcm94eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgdGFyZ2V0LCBoYW5kbGVyKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKFByb3h5T2JqZWN0OjpjcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldCwgaGFuZGxlcikpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm94
eSIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUHJveHkiKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGUzNWQ0OTVhYmMxNmIxMGMzNzY1YjE5N2RkMDJkMWMz
ZGIyZjI2NDAuLjhiZTgxODI3OTkzYjIxMTRkMWYxNWIwNzM3OTdjNzE1YmM3OTQ3YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTUxMSw0
MiArNTExLDQyIEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgTk9fVEFJTF9DQUxMUygpOwogCi0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJ
S0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICB9Ci0gICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+
anNDYWxsZWUoKSk7CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHBy
b3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSk7CiAKICAgICBKU09i
amVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBhcHBs
eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1h
a2VJZGVudGlmaWVyKHZtLCAiYXBwbHkiKSwgIidhcHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGFwcGx5TWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGNhbGxGcmFtZSwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtl
SWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBo
YW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50
YXJnZXQoKTsKICAgICBpZiAoYXBwbHlNZXRob2QuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSB0YXJnZXQtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0YXJnZXQsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgZXhlYy0+dGhpc1ZhbHVlKCksIEFyZ0xpc3QoZXhlYykpKSk7Cisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2Fs
bEZyYW1lLCB0YXJnZXQsIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSwgQXJnTGlzdChjYWxsRnJhbWUpKSkpOwogICAgIH0KIAotICAgIEpTQXJyYXkqIGFyZ0FycmF5
ID0gY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSo+KG51bGxwdHIpLCBBcmdMaXN0KGV4ZWMpKTsKKyAgICBKU0FycmF5KiBhcmdBcnJheSA9IGNv
bnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSo+KG51bGxwdHIpLCBBcmdMaXN0KGNhbGxGcmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFw
cGVuZChleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgRUNNQU1vZGU6OlN0cmljdE1vZGUp
KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGNh
bGxGcmFtZSwgRUNNQU1vZGU6OlN0cmljdE1vZGUpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFy
Z0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgYXBwbHlN
ZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoY2FsbEZyYW1lLCBh
cHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CiB9
CiAKIENhbGxUeXBlIFByb3h5T2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxE
YXRhJiBjYWxsRGF0YSkKQEAgLTU2Miw0NSArNTYyLDQ1IEBAIENhbGxUeXBlIFByb3h5T2JqZWN0
OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHBlcmZvcm1Qcm94eUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgTk9fVEFJTF9D
QUxMUygpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKICAgICB9Ci0gICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0
PFByb3h5T2JqZWN0Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRs
ZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHNfcHJveHlB
bHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSk7
CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1
ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAg
SlNWYWx1ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERh
dGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVj
dCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsK
KyAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChjYWxsRnJh
bWUsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwg
Iidjb25zdHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoY29u
c3RydWN0TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwogICAgICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6
Ok5vbmUpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBB
cmdMaXN0KGV4ZWMpLCBleGVjLT5uZXdUYXJnZXQoKSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGNhbGxGcmFtZSwgdGFyZ2V0
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGNhbGxGcmFtZSksIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCkpKSk7CiAgICAgfQogCi0gICAgSlNBcnJheSogYXJnQXJyYXkgPSBj
b25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4o
bnVsbHB0ciksIEFyZ0xpc3QoZXhlYykpOworICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3Ry
dWN0QXJyYXkoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4o
bnVsbHB0ciksIEFyZ0xpc3QoY2FsbEZyYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5k
KGFyZ0FycmF5KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPm5ld1RhcmdldCgpKTsKKyAg
ICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwogICAgIEFTU0VSVCgh
YXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4
ZWMsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVu
dHMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGNvbnN0cnVjdE1ldGhv
ZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghcmVzdWx0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
UmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUg
YW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1l
LCBzY29wZSwgIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qg
c2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eVJldm9rZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5j
cHAKaW5kZXggZjg3NWY2NWQ0NTEzOTQ5NzA2NGQ5MzZhOTc0YTc5ZGY2MDhlZWE0ZS4uNzA2NjJj
MGU4ZDhjMTY2N2MwZTViMDZlM2ZhM2JlYzRmZDk3YTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBQcm94eVJl
dm9rZSogUHJveHlSZXZva2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm94eU9iamVjdCogcHJveAogICAgIHJldHVybiByZXZva2U7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBQcm94eVJldm9rZTo6UHJveHlSZXZva2UoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgcGVy
Zm9ybVByb3h5UmV2b2tlLCBudWxscHRyKQpAQCAtNTcsMTUgKzU3LDE1IEBAIHZvaWQgUHJveHlS
ZXZva2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgUHJveHlPYmpl
Y3QqIHByb3h5KQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cGVyZm9ybVByb3h5UmV2b2tlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBQcm94eVJldm9rZSogcHJveHlS
ZXZva2UgPSBqc0Nhc3Q8UHJveHlSZXZva2UqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBQcm94
eVJldm9rZSogcHJveHlSZXZva2UgPSBqc0Nhc3Q8UHJveHlSZXZva2UqPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOwogICAgIEpTVmFsdWUgcHJveHlWYWx1ZSA9IHByb3h5UmV2b2tlLT5wcm94eSgp
OwogICAgIGlmIChwcm94eVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0
PFByb3h5T2JqZWN0Kj4ocHJveHlWYWx1ZSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgcHJveHktPnJldm9rZSh2bSk7CiAg
ICAgcHJveHlSZXZva2UtPnNldFByb3h5VG9OdWxsKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAppbmRleCA4NTYwOWIzYzBmZTg5YTY0ZGJjMzhiMTM1MjFhMDBh
YWY4YTI5OGYwLi44NDZkMjkzOTMyYjRmM2ZlODJkNzA3MWUxNGJhMGRjYjhmYjI3NTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAt
MzQsMTYgKzM0LDE2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3Bl
cnR5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdEdldChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJv
dG90eXBlT2YoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4
dGVuc2lvbnMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZWN0R2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiB9CiAKQEAgLTg3LDU5ICs4Nyw1OSBAQCB2b2lkIFJlZmxlY3RPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNv
bnN0cnVjdAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3Ry
dWN0KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamVjdENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKIAogICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGU7
CiAgICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOwogCiAgICAgSlNW
YWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
PSAzKSB7Ci0gICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOworICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CisgICAgICAgIG5ld1RhcmdldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0
b3Iodm0pKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1
bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiX3MpKTsKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxl
Y3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9y
IGlmIHByZXNlbnQiX3MpKTsKICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7Ci0gICAgSlNPYmplY3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIEpTT2JqZWN0KiBhcmd1bWVudHNP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOwogICAgIGlmICghYXJndW1lbnRzT2JqZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVx
dWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVm
bGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
X3MpKTsKIAotICAgIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGV4ZWMsIGFyZ3VtZW50c09iamVj
dCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMsICJUaGlzIGVycm9yIG11c3Qgbm90IGJlIHJhaXNl
ZCJfcywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIl9zLCBbJl0gKEpTVmFsdWUgdmFs
dWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sIHsKKyAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShj
YWxsRnJhbWUsIGFyZ3VtZW50c09iamVjdCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMsICJUaGlz
IGVycm9yIG11c3Qgbm90IGJlIHJhaXNlZCJfcywgIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFp
c2VkIl9zLCBbJl0gKEpTVmFsdWUgdmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sIHsKICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAoYXJndW1lbnRzLm92ZXJmbG93Q2hl
Y2tOb3ROZWVkZWQoKSwgZW5jb2RlZEpTVmFsdWUoKSkpOwogICAgIGlmIChVTkxJS0VMWShhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0
YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdChjYWxsRnJhbWUsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
dW1lbnRzLCBuZXdUYXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLXJlZmxlY3QuZGVmaW5lcHJvcGVydHkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGFy
Z2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0LmRl
ZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3Mp
KTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlL
ZXkoZXhlYyk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBib29sIHN1Y2Nlc3MgPSB0b1Byb3BlcnR5RGVz
Y3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CisgICAgYm9vbCBz
dWNjZXNzID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDIpLCBkZXNjcmlwdG9yKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSA9PSBzdWNjZXNzKTsKICAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTE0OSwxNDEgKzE0OSwxNDEgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjKQogICAgIC8vIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgc2hvdWxkIG5vdCB0aHJvdyBh
biBlcnJvciB3aGVuIHRoZSBkZWZpbmVPd25Qcm9wZXJ0eSBvcGVyYXRpb24gZmFpbHMuCiAgICAg
Ym9vbCBzaG91bGRUaHJvdyA9IGZhbHNlOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBh
c09iamVjdCh0YXJnZXQpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNo
b3VsZFRocm93KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KHRhcmdldE9iamVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHNob3VsZFRocm93KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5nZXQKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdEdldChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RHZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVl
IHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGNvbnN0IElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5
S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0OwotICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPj0gMykKLSAgICAgICAgcmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVu
dCgyKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykKKyAgICAgICAg
cmVjZWl2ZXIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogCiAgICAgUHJvcGVydHlTbG90IHNs
b3QocmVjZWl2ZXIsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldC5nZXQoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRhcmdldC5nZXQoY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qu
Z2V0b3ducHJvcGVydHlkZXNjcmlwdG9yCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsK
IAotICAgIGF1dG8ga2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsK
KyAgICBhdXRvIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgYXNPYmplY3QodGFyZ2V0
KSwga2V5KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNhbGxGcmFtZSwgYXNP
YmplY3QodGFyZ2V0KSwga2V5KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRh
cmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5n
ZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9z
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNPYmpl
Y3QodGFyZ2V0KS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3Mp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc09iamVj
dCh0YXJnZXQpLT5nZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSkpKTsKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2libGUKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4
dGVuc2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBh
biBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwogCi0gICAgYm9vbCBpc0V4dGVuc2li
bGUgPSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgYm9vbCBpc0V4
dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0V4dGVuc2libGUpKTsKIH0KIAogLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlzCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qu
b3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG93blByb3BlcnR5S2V5cyhjYWxsRnJhbWUsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCksIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1yZWZsZWN0LnByZXZlbnRleHRlbnNpb25zCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRh
cmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0
Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh0YXJnZXQpOwotICAgIGJvb2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgYm9vbCByZXN1bHQgPSBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4
ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXQgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0
LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CiAgICAg
SlNPYmplY3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKLSAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXko
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIEpTVmFsdWUgcmVjZWl2ZXIgPSB0YXJnZXQ7Ci0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+PSA0KQotICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDMp
OworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSA0KQorICAgICAgICByZWNl
aXZlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMyk7CiAKICAgICAvLyBEbyBub3QgcmFpc2UgYW55
IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNo
b3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVj
ZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQo
MiksIHNsb3QpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldE9i
amVjdCwgY2FsbEZyYW1lLCBwcm9wZXJ0eU5hbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIHNs
b3QpKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZs
ZWN0LnNldHByb3RvdHlwZW9mCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiBy
ZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgSlNWYWx1
ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlw
ZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICBK
U1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvLmlz
T2JqZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiBy
ZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJf
cykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQg
YXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIl9zKSk7CiAKICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNh
bnRTZXQgPSBmYWxzZTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJv
dG90eXBlKHZtLCBleGVjLCBwcm90bywgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAgIGJvb2wg
ZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGNhbGxGcmFtZSwgcHJv
dG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihkaWRTZXRQcm90b3R5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBlM2JjODkzZmIzYzJjYTBmZDA5OTBl
ZmUyMDEyZDUyMDM4MjI5OWM5Li44M2RjMTU3MzFhOTQ1MWJjMzZhYjcxNmNhY2JiMmIzOTEyZGUx
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuY3BwCkBAIC03OCw4ICs3OCw4IEBAIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAq
LwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIFJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBj
YWxsUmVnRXhwQ29uc3RydWN0b3IsIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcikKQEAg
LTEwMCw1MCArMTAwLDQzIEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsCiB0ZW1wbGF0ZTxpbnQg
Tj4KIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxP
YmplY3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVj
dCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9i
YWxEYXRhKCkuZ2V0QmFja3JlZihleGVjLCBnbG9iYWxPYmplY3QsIE4pKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29u
c3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShn
bG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5pbnB1dCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5tdWx0aWxpbmUo
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5n
bG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+
cmVnRXhwR2xvYmFsRGF0YSgpLmdldEJhY2tyZWYoZXhlYywgZ2xvYmFsT2JqZWN0LCAwKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9i
YWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9i
amVjdCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBH
bG9iYWxEYXRhKCkuZ2V0TGFzdFBhcmVuKGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJl
Z0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmpl
Y3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhw
Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxE
YXRhKCkuZ2V0TGVmdENvbnRleHQoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qo
dm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdsb2JhbE9iamVjdCgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRh
KCkuZ2V0UmlnaHRDb250ZXh0KGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCkBAIC0xNTUsNyAr
MTQ4LDcgQEAgYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGUKICAgICAgICAgYXV0byogc3RyaW5nID0g
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVj
dCh2bSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0
YSgpLnNldElucHV0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTcwLDcgKzE2Myw3IEBAIGJvb2wgc2V0UmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
CiAgICAgICAgIGJvb2wgbXVsdGlsaW5lID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b0Jvb2xl
YW4oZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBn
bG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5zZXRNdWx0aWxpbmUobXVsdGlsaW5lKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjc3LDI0ICsyNzAsMjMgQEAgSlNPYmpl
Y3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEEKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ0V4cENy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwgcGF0dGVybkFyZywgZmxhZ3NBcmcp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdF
eHBDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKLSAgICBKU1ZhbHVlIHBhdHRlcm5BcmcgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBKU1ZhbHVlIGZsYWdzQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZWdFeHBDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBqc1VuZGVm
aW5lZCgpLCBwYXR0ZXJuQXJnLCBmbGFnc0FyZykpOworICAgIEpTVmFsdWUgcGF0dGVybkFyZyA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmbGFnc0FyZyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBDcmVhdGUo
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHBhdHRlcm5BcmcsIGZsYWdz
QXJnKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJn
TGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVn
RXhwKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgZXhlYy0+anNDYWxsZWUoKSwgZXhlYy0+bmV3
VGFyZ2V0KCkpKTsKKyAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYXJn
cywgY2FsbEZyYW1lLT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywg
ZXhlYy0+anNDYWxsZWUoKSkpOworICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBhcmdzLCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAppbmRleCAyZWIyYzY5MzQ4NThjMTZmZmYyMjM5NTJjNThmNzI5N2Y1MjdlNjU2Li45NzZl
N2I2YWY4M2MxNTMwYzUyMDM0MjdhODM5ZDUzZTBhY2QxYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTc1LDYgKzc1LDYg
QEAgQUxXQVlTX0lOTElORSBib29sIGlzUmVnRXhwKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBvYmplY3QtPmluaGVyaXRzPFJlZ0V4cE9iamVjdD4o
dm0pOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0
ZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjUmVnRXhw
Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAKaW5kZXggOGQwZTVhOWYwZDU3MDU5YTJmNGJmMTY1MzM3ZWJhMGNlYjNmMTFjOS4uNGI4YWYw
NWJlNzQ1MDYzZjcwMzdkNTc0MzhlN2VmMzY1MmQ1YWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC00MiwxNyArNDIsMTcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5l
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJEb3RBbGwoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyU291cmNlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJGbGFncyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY0NvbXBpbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJ
Z25vcmVDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyU291cmNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUmVnRXhwUHJvdG90eXBlKSB9OwogCkBAIC04Niw4MyArODYsODMgQEAg
dm9pZCBSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhw
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdleHApKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJpbmcq
IHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBKU1N0cmlu
Zyogc3RyaW5nID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChjYWxsRnJh
bWUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhc3RyaW5n
KTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVnZXhwLT50ZXN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc3RyaW5nKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVnZXhwLT50ZXN0KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBzdHJp
bmcpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y0V4ZWMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNFeGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIHJlZ2V4
cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFyZWdleHApKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCIpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZ09yTnVsbChleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IGEgUmVnRXhwIG9iamVjdCIpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGNhbGxGcmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFzdHJpbmcpOwogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+ZXhlYyhleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWdleHAtPmV4ZWMoY2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIHN0cmluZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgUmVnRXhwT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAgICBK
U1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmpl
Y3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0ganND
YXN0PEpTU3RyaW5nKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0LT5yZWdFeHAoKS0+Z2xvYmFsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhpc09iamVjdC0+ZXhlYyhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHN0cmluZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bWF0
Y2hHbG9iYWwoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5leGVjKGNhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LCBzdHJpbmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNP
YmplY3QtPm1hdGNoR2xvYmFsKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jQ29tcGlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiB0aGlzUmVnRXhw
ID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNSZWdFeHApKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUpOwogCiAgICAgUmVnRXhwKiByZWdFeHA7Ci0gICAgSlNWYWx1ZSBhcmcwID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhcmcxID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZzEg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIAogICAgIGlmIChhdXRvKiByZWdFeHBPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCBhcmcwKSkgewogICAgICAgICBp
ZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBv
bmUgUmVnRXhwIGZyb20gYW5vdGhlci4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25z
dHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIl9zKTsKICAgICAgICAgcmVnRXhwID0g
cmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgcGF0
dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvV1RGU3Ry
aW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/
IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgIGF1
dG8gZmxhZ3MgPSBhcmcxLmlzVW5kZWZpbmVkKCkgPyBtYWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlh
cnI6OkZsYWdzPiB7IH0pIDogWWFycjo6cGFyc2VGbGFncyhhcmcxLnRvV1RGU3RyaW5nKGV4ZWMp
KTsKKyAgICAgICAgYXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IG1ha2VPcHRpb25h
bChPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9X
VEZTdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIklu
dmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcykpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVTeW50YXhF
cnJvcihjYWxsRnJhbWUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iX3MpKTsKIAogICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVy
biwgZmxhZ3MudmFsdWUoKSk7CiAgICAgfQogCiAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgcmVnRXhwLT5lcnJvclRv
VGhyb3coZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIHJlZ0V4cC0+ZXJyb3JUb1Rocm93KGNhbGxGcmFtZSkpOwogCiAgICAgdGhpc1JlZ0V4cC0+
c2V0UmVnRXhwKHZtLCByZWdFeHApOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICB0aGlzUmVn
RXhwLT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgdGhpc1JlZ0V4cC0+c2V0TGFzdEluZGV4
KGNhbGxGcmFtZSwgMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzUmVnRXhwKTsK
IH0KIApAQCAtMjA3LDE0MSArMjA3LDE0MSBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5nIGZs
YWdzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHJlZ2V4cCkKICAgICByZXR1cm4g
c3RyaW5nOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVl
KTsKIAotICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqZWN0
KTsKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoY2FsbEZyYW1lLCB0aGlzT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2Vy
LmVhcmx5UmV0dXJuVmFsdWUoKSk7CiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9
IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNP
YmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOworICAgIEpTVmFsdWUg
c291cmNlVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVz
LT5zb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1dURlN0cmluZyhleGVjKTsK
KyAgICBTdHJpbmcgc291cmNlID0gc291cmNlVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IEpTVmFsdWUgZmxhZ3NWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5mbGFncyk7CisgICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGNh
bGxGcmFtZSwgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBmbGFncyA9IGZsYWdzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50b1dU
RlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAnLycsIHNvdXJjZSwgJy8nLCBmbGFn
cykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgJy8nLCBzb3VyY2UsICcvJywgZmxhZ3MpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9i
YWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlckdsb2JhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdl
eHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJl
Z0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5nbG9iYWwo
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
SWdub3JlQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzPFJlZ0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
Lmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3Qi
X3MpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4
cC0+cmVnRXhwKCktPmlnbm9yZUNhc2UoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdF
eHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsK
ICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5
cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IlRoZSBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
RG90QWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRvKiByZWdleHAgPSBq
c0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPFJlZ0V4cFBy
b3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJU
aGUgUmVnRXhwLnByb3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+ZG90QWxsKCkp
KTsKIH0KICAgICAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJTdGlja3koRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclN0aWNreShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
KiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzPFJlZ0V4cFByb3RvdHlwZT4odm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAo
KS0+c3RpY2t5KCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclVuaWNvZGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNW
YWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlw
ZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9z
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVn
ZXhwLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJGbGFncyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiVGhlIFJl
Z0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmpl
Y3QiX3MpOwogCi0gICAgYXV0byBmbGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRo
aXNWYWx1ZSkpOworICAgIGF1dG8gZmxhZ3MgPSBmbGFnc1N0cmluZyhjYWxsRnJhbWUsIGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgZmxh
Z3MuZGF0YSgpKSk7CkBAIC00NTQsMzcgKzQ1NCwzNiBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2VJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cgogICAgIHJldHVybiBqc1N0cmluZyh2bSwgcmVzdWx0LnRvU3RyaW5nKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJT
b3VyY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byogcmVnZXhwID0ganNEeW5h
bWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxSZWdFeHBQcm90b3R5
cGU+KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
ICIoPzopIl9zKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0ZXIgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CiAgICAgfQogCiAgICAgU3Ry
aW5nIHBhdHRlcm4gPSByZWdleHAtPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CiAgICAgaWYgKHBhdHRl
cm4uaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwUHJvdG9H
ZXR0ZXJTb3VyY2VJbnRlcm5hbChleGVjLCBwYXR0ZXJuLCBwYXR0ZXJuLmNoYXJhY3RlcnM4KCks
IHBhdHRlcm4ubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cFBy
b3RvR2V0dGVyU291cmNlSW50ZXJuYWwoZXhlYywgcGF0dGVybiwgcGF0dGVybi5jaGFyYWN0ZXJz
MTYoKSwgcGF0dGVybi5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoY2FsbEZyYW1lLCBwYXR0ZXJuLCBwYXR0
ZXJuLmNoYXJhY3RlcnM4KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoY2FsbEZyYW1lLCBwYXR0
ZXJuLCBwYXR0ZXJuLmNoYXJhY3RlcnMxNigpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVu
Y1NlYXJjaEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIFJlZ0V4cCogcmVnRXhwID0g
anNDYXN0PFJlZ0V4cE9iamVjdCo+KHRoaXNWYWx1ZSktPnJlZ0V4cCgpOwogCi0gICAgSlNTdHJp
bmcqIHN0cmluZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOwot
ICAgIFN0cmluZyBzID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5n
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwor
ICAgIFN0cmluZyBzID0gc3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBNYXRjaFJl
c3VsdCByZXN1bHQgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5wZXJmb3JtTWF0
Y2godm0sIGdsb2JhbE9iamVjdCwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0ID8ganNOdW1iZXIocmVzdWx0LnN0YXJ0KSA6IGpzTnVtYmVyKC0xKSk7
CkBAIC01NzgsMTkgKzU3NywxOSBAQCB2b2lkIGdlbmVyaWNTcGxpdCgKIH0KIAogLy8gRVMgMjEu
Mi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IDEuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAg
ICAvLyAyLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0
LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgUmVnRXhwKiByZWdleHAgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhp
c1ZhbHVlKS0+cmVnRXhwKCk7CiAKICAgICAvLyAzLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBM
ZXQgUyBiZSA/IFRvU3RyaW5nKHN0cmluZykuCi0gICAgSlNTdHJpbmcqIGlucHV0U3RyaW5nID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIGlucHV0ID0gaW5w
dXRTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIEpTU3RyaW5nKiBpbnB1dFN0cmluZyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoY2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgaW5wdXQg
PSBpbnB1dFN0cmluZy0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoIWlucHV0LmlzTnVsbCgpKTsK
IApAQCAtNjA0LDEzICs2MDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMTEuIExldCBB
IGJlIEFycmF5Q3JlYXRlKDApLgogICAgIC8vIDEyLiBMZXQgbGVuZ3RoQSBiZSAwLgotICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJh
eSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIHJl
c3VsdExlbmd0aCA9IDA7CiAKICAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQg
bGltIGJlIDJeMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgotICAgIEpT
VmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIHVuc2lnbmVkIGxpbWl0
ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRv
VUludDMyKGV4ZWMpOworICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CisgICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAw
eEZGRkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDE0LiBMZXQg
c2l6ZSBiZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFMuCkBAIC02MzAsNyArNjI5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5
KEEsICIwIiwgUykuCiAgICAgICAgIC8vIGQuIFJldHVybiBBLgogICAgICAgICBpZiAoIXJlZ2V4
cC0+bWF0Y2godm0sIGlucHV0LCAwKSkgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChleGVjLCAwLCBpbnB1dFN0cmluZyk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dEluZGV4KGNhbGxGcmFtZSwgMCwgaW5wdXRTdHJpbmcpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjUyLDcgKzY1MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNwbGl0OwogICAgICAgICB9LAog
ICAgICAgICBbJl0gKGJvb2wgaXNEZWZpbmVkLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoKSAtPiBTcGxpdENvbnRyb2wgewotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCByZXN1bHRMZW5ndGgrKywgaXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVk
KHZtLCBpbnB1dFN0cmluZywgc3RhcnQsIGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgrKywg
aXNEZWZpbmVkID8ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBpbnB1dFN0cmluZywgc3RhcnQs
IGxlbmd0aCkgOiBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEFib3J0U3BsaXQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+PSBs
aW1pdCkKICAgICAgICAgICAgICAgICByZXR1cm4gQWJvcnRTcGxpdDsKQEAgLTY2Niw3ICs2NjUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1
ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMg
YXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KICAgICAg
ICAgLy8gMjEuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5n
dGhBKSwgVCkuCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwg
aW5wdXRTdHJpbmcsIHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQodm0sIGlucHV0U3RyaW5nLCBwb3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRp
b24pKTsKICAgICAgICAgCiAgICAgICAgIC8vIDIyLiBSZXR1cm4gQS4KICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjkxLDcgKzY5MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgfSk7CiAgICAgCiAgICAgaWYgKHJlc3VsdExlbmd0aCArIGRyeVJ1bkNvdW50
ID4gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZy
YW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KICAg
ICAKQEAgLTcwNSw3ICs3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4g
Q29udGludWVTcGxpdDsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChib29sIGlzRGVmaW5lZCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkgLT4gU3BsaXRDb250cm9sIHsKLSAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGlzRGVm
aW5lZCA/IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHN0YXJ0LCBsZW5n
dGgpIDoganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGNhbGxGcmFtZSwgcmVzdWx0TGVuZ3RoKyssIGlzRGVmaW5lZCA/IGpzU3Vic3RyaW5nT2ZSZXNv
bHZlZCh2bSwgaW5wdXRTdHJpbmcsIHN0YXJ0LCBsZW5ndGgpIDoganNVbmRlZmluZWQoKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBBYm9ydFNwbGl0KTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHRMZW5ndGggPj0gbGltaXQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEFib3J0U3BsaXQ7CkBAIC03MTksNyArNzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDIw
LiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29u
c2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2gg
c2l6ZSAoZXhjbHVzaXZlKS4KICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0
eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nT2ZS
ZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHBvc2l0aW9uLCBpbnB1dFNpemUgLSBwb3NpdGlvbikp
OworICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgsIGpz
U3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgaW5wdXRTdHJpbmcsIHBvc2l0aW9uLCBpbnB1dFNpemUg
LSBwb3NpdGlvbikpOwogICAgIC8vIDIyLiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5oCmluZGV4IDViNjU5ODY2YzAwZTg5YThmMTdhMDE1Y2JjNTE0NWMyNTk5
Y2FmMGQuLjQ2MGUyYTQ1YWRkNzEzOTI0ODlmMDFkMmJkMDdlMmY4ZWQxNmM1MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCkBAIC01MSw5
ICs1MSw5IEBAIGNsYXNzIFJlZ0V4cFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
IH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hG
YXN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0Z1bmNTZWFyY2hGYXN0KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9GdW5jU2VhcmNoRmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9GdW5jVGVzdEZhc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNjAyYmVkOWU1YTU3ZTE4ZmJlODJiZTVkNzg1ZjkzYWQ0ZjQwMjgw
OS4uYjBkYjE1NmY0ODhkNjQyZTZmZTcwZDhhNTgyM2E3MTFhMWRhZTk5YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtNDcsNzQg
KzQ3LDczIEBAIHZvaWQgU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2V0
UHJvdG90eXBlKiBzZXRQcm90b3R5cGUsIEdldHRlclNlCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3lt
Ym9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFNldENv
bnN0cnVjdG9yOjpTZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsU2V0LCBjb25zdHJ1Y3RTZXQpCiB7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiU2V0IikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiU2V0IikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwotICAg
IFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3Ry
dWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpLCBnbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgaXRlcmFibGUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkgCi0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0OjpjcmVhdGUo
ZXhlYywgdm0sIHNldFN0cnVjdHVyZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHZtLCBzZXRTdHJ1
Y3R1cmUpKSk7CiAKICAgICBpZiAoYXV0byogaXRlcmFibGVTZXQgPSBqc0R5bmFtaWNDYXN0PEpT
U2V0Kj4odm0sIGl0ZXJhYmxlKSkgewogICAgICAgICBpZiAoaXRlcmFibGVTZXQtPmNhbkNsb25l
RmFzdEFuZE5vbk9ic2VydmFibGUoc2V0U3RydWN0dXJlKSkgCi0gICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUoZXhl
Yywgdm0sIHNldFN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhYmxlU2V0LT5jbG9uZShjYWxsRnJhbWUsIHZtLCBz
ZXRTdHJ1Y3R1cmUpKSk7CiAgICAgfQogCi0gICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUo
ZXhlYywgdm0sIHNldFN0cnVjdHVyZSk7CisgICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUo
Y2FsbEZyYW1lLCB2bSwgc2V0U3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHNl
dC0+SlNPYmplY3Q6OmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOworICAgIEpTVmFs
dWUgYWRkZXJGdW5jdGlvbiA9IHNldC0+SlNPYmplY3Q6OmdldChjYWxsRnJhbWUsIHZtLnByb3Bl
cnR5TmFtZXMtPmFkZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rp
b24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKSk7CiAKICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShW
TSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKKyAgICBmb3JFYWNoSW5J
dGVyYWJsZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG5leHRWYWx1ZSk7CiAgICAgICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIGNhbGwoZXhlYywgYWRk
ZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEs
IHNldCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChjYWxsRnJhbWUsIGFkZGVyRnVuY3Rpb24s
IGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBzZXQsIGFyZ3Vt
ZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldCk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFk
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0
ZUZ1bmNTZXRCdWNrZXRIZWFkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oZXhlYy0+
dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBKU1NldCogc2V0ID0ganNDYXN0PEpTU2V0
Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFs
T2JqZWN0LCBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKSk7CisgICAgSlNTZXQqIHNldCA9IGpzQ2FzdDxKU1NldCo+KGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGF1dG8qIGhlYWQgPSBzZXQtPmhlYWQo
KTsKICAgICBBU1NFUlQoaGVhZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShoZWFkKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dE5leHQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cml2YXRlRnVuY1NldEJ1Y2tldE5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1
Y2tldFR5cGUqPihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGF1dG8qIGJ1
Y2tldCA9IGpzQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGdsb2Jh
bE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworICAgIGF1dG8qIGJ1Y2tl
dCA9IGpzQ2FzdDxKU1NldDo6QnVja2V0VHlwZSo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIEFTU0VSVChidWNrZXQpOwogICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgp
OwogICAgIHdoaWxlIChidWNrZXQpIHsKQEAgLTEyMiwxMyArMTIxLDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0KTsKICAgICAg
ICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZXhlYy0+dm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+dm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVG
dW5jU2V0QnVja2V0S2V5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0OjpCdWNrZXRUeXBl
Kj4oZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkpKTsKLSAgICBhdXRvKiBidWNrZXQgPSBq
c0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGpzRHluYW1pY0Nhc3Q8SlNTZXQ6OkJ1Y2tl
dFR5cGUqPihnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAg
ICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQ6OkJ1Y2tldFR5cGUqPihjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoYnVja2V0KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJ1Y2tldC0+a2V5KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmgKaW5kZXggM2Y2ZThiOTI3YmM5MjU3ZDU0ZmJhZDFk
MTJjMTNiNzU2ZTljYzM3Yy4uNzFhYjY5NTBmZjU3OTQ3ZmU5NmMxMzI5YTE1YWIxODZhNWU1MGIw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5o
CkBAIC01NSw4ICs1NSw4IEBAIGNsYXNzIFNldENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTZXRQcm90b3R5
cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwogfTsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChF
eGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJpdmF0ZUZ1bmNT
ZXRCdWNrZXRLZXkoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNl
dFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCA0NmY0YmNkMzM5YzFkNzZkNzE0Zjc4ODJkZDQ0NTQ5
Njg1MDIxNGYxLi5jNjZkOTVmNjU5MTFkMWM4MjYwNzQzNTVlZjFiODk4M2FmNzlhMzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTQ3
LDEzICs0NywxMyBAQCBjb25zdCBDbGFzc0luZm8gU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJT
ZXQiLCAmQmFzZTo6c19pbmZvLCAmc2V0UHJvdG90eXBlVGFibAogQGVuZAogKi8KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNEZWxldGUoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0NsZWFy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC03Niw5ICs3Niw5IEBAIHZvaWQg
U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPnNpemUsIHNldFByb3RvRnVuY1NpemUsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgc3RhdGljIEpTU2V0KiBnZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhp
c1ZhbHVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNldChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc0NlbGwoKSkpIHsKQEAgLTkyLDQ0ICs5Miw0
NCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNTZXQqIHNldCA9
IGdldFNldChjYWxsRnJhbWUsIHRoaXNWYWx1ZSk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXNldCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBzZXQtPmFkZChj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc1ZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cm90b0Z1bmNDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
c2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IHNldC0+Y2xlYXIoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0gZ2V0U2V0KGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzZXQtPnJlbW92ZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c2V0UHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNTZXQqIHNldCA9IGdldFNldChjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2Fs
bEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
c2V0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNldC0+aGFzKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzZXRQcm90b0Z1bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU1NldCogc2V0ID0gZ2V0U2V0
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHNldC0+c2l6ZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNjJjNDIyYzE0YzYxMmM2ZDNiMDc0Mjc1MjlkYTQwMGU5MzRiMzY2Mi4uMzMxZDRiMDA3
MjM0NWE0ODZhOWFkOTRjNzE0OTRiZmRlYTk1MWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApAQCAtMzEsOCArMzEsOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nRnJvbUNvZGVQb2ludChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAK
QEAgLTUzLDggKzUzLDggQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTdHJpbmdDb25zdHJ1Y3Rvcik7CiAKIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0
aFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRo
U3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU3RyaW5n
Q29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKQpAQCAtNzAsMTUgKzcwLDE1
IEBAIHZvaWQgU3RyaW5nQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RyaW5n
UHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21DaGFyQ29kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKExJS0VMWShs
ZW5ndGggPT0gMSkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICB1bnNpZ25l
ZCBjb2RlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CisgICAg
ICAgIHVuc2lnbmVkIGNvZGUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUlu
dDMyKGNhbGxGcmFtZSk7CiAgICAgICAgIC8vIE5vdCBjaGVja2luZyBmb3IgYW4gZXhjZXB0aW9u
IGhlcmUgaXMgb2sgYmVjYXVzZSBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyB3aWxsIGp1c3QgZmV0
Y2ggYW4gdW51c2VkIHN0cmluZyBpZiB0aGVyZSdzIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgY29kZSkpOwog
ICAgIH0KQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBMQ2hhciogYnVmOEJp
dDsKICAgICBhdXRvIGltcGw4Qml0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIGJ1ZjhCaXQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50MzIoZXhlYykpOworICAgICAgICBVQ2hhciBjaGFy
YWN0ZXIgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChp
KS50b1VJbnQzMihjYWxsRnJhbWUpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNMYXRpbjEoY2hh
cmFjdGVyKSkpIHsKICAgICAgICAgICAgIFVDaGFyKiBidWYxNkJpdDsKQEAgLTk1LDcgKzk1LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2Rl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJ1ZjE2Qml0W2ldID0gY2hhcmFjdGVyOwog
ICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIGJ1ZjE2Qml0W2ldID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpLnRvVUludDMyKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBidWYx
NkJpdFtpXSA9IHN0YXRpY19jYXN0PFVDaGFyPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpLnRvVUludDMyKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
IFdURk1vdmUoaW1wbDE2Qml0KSkpKTsKQEAgLTExMCwyMyArMTEwLDIzIEBAIEpTU3RyaW5nKiBK
U0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qg
YXJnKQogICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLT52bSgpLCBhcmcp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29k
ZVBvaW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgp
OworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5n
dGgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIGRvdWJsZSBjb2RlUG9pbnRBc0RvdWJsZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBkb3VibGUgY29kZVBvaW50QXNEb3VibGUgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAg
IHVpbnQzMl90IGNvZGVQb2ludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2RlUG9pbnRBc0Rv
dWJsZSk7CiAKICAgICAgICAgaWYgKGNvZGVQb2ludCAhPSBjb2RlUG9pbnRBc0RvdWJsZSB8fCBj
b2RlUG9pbnQgPiBVQ0hBUl9NQVhfVkFMVUUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcmd1bWVudHMgY29udGFp
biBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoY2FsbEZyYW1lLCAiQXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBv
ZiByYW5nZSBvZiBjb2RlIHBvaW50cyJfcykpOwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2Rl
UG9pbnQpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNv
ZGVQb2ludCkpOwpAQCAtMTM5LDE4ICsxMzksMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nRnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGJ1aWxk
ZXIudG9TdHJpbmcoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9i
YWxPYmplY3Qodm0pOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFN0cmluZ09iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpKTsKLSAg
ICBKU1N0cmluZyogc3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
Yyk7CisgICAgSlNTdHJpbmcqIHN0ciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN0cmluZ09iamVjdDo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHN0cikpOwogfQpAQCAtMTYzLDEyICsxNjIsMTIgQEAgSlNT
dHJpbmcqIHN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcmd1bWVu
dCkKICAgICByZXR1cm4gYXJndW1lbnQudG9TdHJpbmcoZXhlYyk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKCFjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0VtcHR5U3RyaW5nKHZtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdDb25z
dHJ1Y3RvcihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc3RyaW5nQ29uc3RydWN0b3IoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNWZh
OTUxYTBjMWYzYzE2NTBkMjRjYWFhMTYwMDQ2NWE1ZmNhOGMxYy4uYzc1ZGZjMGI4MGZhYTUxNzAy
NzVkNTNmNTE1NjI2MWQxZGQ5YmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC02MSwzMCArNjEsMzAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTdHJpbmdQ
cm90b3R5cGUpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNT
dGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0
SW5kZXhPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVVzaW5nUmVnRXhwKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Ns
aWNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVD
b21wYXJlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1T
dGFydChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jVHJpbUVuZChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0l0ZXJhdG9yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jQ2hhckNvZGVBdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdT
dHJpbmdTZWFyY2goSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vi
c3RyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2Vy
Q2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2Nh
bGVDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jVHJpbVN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3RhcnRzV2l0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNJbmNsdWRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04NDYs
MzggKzg0NiwzOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tPYmplY3RDb2VyY2libGUoSlNW
YWx1ZSB0aGlzVmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hh
cmFjdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIEZvciBhIHN0cmluZyB3aGljaCBsZW5ndGggaXMgc2luZ2xlLCBpbnN0ZWFkIG9mIGNyZWF0
aW5nIHJvcGVzLAogICAgIC8vIGFsbG9jYXRpbmcgYSBzZXF1ZW50aWFsIGJ1ZmZlciBhbmQgZmls
bCB3aXRoIHRoZSByZXBlYXRlZCBzdHJpbmcgZm9yIGVmZmljaWVuY3kuCi0gICAgQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPT0gMik7CiAKLSAgICBBU1NFUlQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCku
aXNTdHJpbmcoKSk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS5pc1N0cmluZygpKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkg
PT0gMSk7CiAKLSAgICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlcGVhdENvdW50VmFsdWUu
aXNOdW1iZXIoKSk7CiAgICAgaW50MzJfdCByZXBlYXRDb3VudDsKICAgICBkb3VibGUgdmFsdWUg
PSByZXBlYXRDb3VudFZhbHVlLmFzTnVtYmVyKCk7CiAgICAgaWYgKHZhbHVlID4gSlNTdHJpbmc6
Ok1heExlbmd0aCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lLCBzY29wZSkpOwogICAgIHJlcGVhdENvdW50
ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOwogICAgIEFTU0VSVChyZXBlYXRDb3VudCA+
PSAwKTsKICAgICBBU1NFUlQoIXJlcGVhdENvdW50VmFsdWUuaXNEb3VibGUoKSB8fCByZXBlYXRD
b3VudFZhbHVlLmFzRG91YmxlKCkgPT0gcmVwZWF0Q291bnQpOwogCi0gICAgYXV0byB2aWV3V2l0
aFN0cmluZyA9IHN0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOworICAgIGF1
dG8gdmlld1dpdGhTdHJpbmcgPSBzdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxs
RnJhbWUpOwogICAgIFN0cmluZ1ZpZXcgdmlldyA9IHZpZXdXaXRoU3RyaW5nLnZpZXc7CiAgICAg
QVNTRVJUKHZpZXcubGVuZ3RoKCkgPT0gMSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB2aWV3WzBdOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBpZiAoaXNMYXRpbjEoY2hhcmFjdGVyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXBlYXRDaGFyYWN0ZXIoKmV4ZWMsIHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIp
LCByZXBlYXRDb3VudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFj
dGVyKCpleGVjLCBjaGFyYWN0ZXIsIHJlcGVhdENvdW50KSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpjYWxsRnJhbWUsIHN0YXRpY19jYXN0PExDaGFy
PihjaGFyYWN0ZXIpLCByZXBlYXRDb3VudCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVwZWF0Q2hhcmFjdGVyKCpjYWxsRnJhbWUsIGNoYXJhY3RlciwgcmVwZWF0Q291bnQpKTsKIH0K
IAogQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZSgKQEAgLTkwMiwzMCArOTAyLDMwIEBA
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2UoCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCByZXBsYWNlKHZtLCBleGVjLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFs
dWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlVXNpbmdSZWdFeHAoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4
ZWMtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHNlYXJj
aFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBzZWFyY2hWYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzZWFyY2hWYWx1ZS5pbmhlcml0czxSZWdF
eHBPYmplY3Q+KHZtKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJl
cGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgZXhl
Yy0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUocmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBjYWxsRnJhbWUsIHN0cmluZywg
c2VhcmNoVmFsdWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNo
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jUmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT50aGlzVmFs
dWUoKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUocmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKHZtLCBleGVjLCBzdHJp
bmcsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdTdHJpbmdTZWFy
Y2godm0sIGNhbGxGcmFtZSwgc3RyaW5nLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMoCkBAIC05NDAsMTIgKzk0MCwxMiBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMo
CiAgICAgICAgIEpTVmFsdWU6OmRlY29kZShyZXBsYWNlVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIC8vIEFsc28gdXNlZCBmb3IgdmFsdWVPZi4K
IAogICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSkKQEAgLTk1NSw1NCArOTU1LDU0IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmIChzdHJpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc3RyaW5nT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogCi0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5n
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwor
ICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKS0+
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgU3RyaW5nVmlldyB2aWV3ID0gdmll
d1dpdGhTdHJpbmcudmlldzsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNW
YWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9IGEwLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChpIDwg
dmlldy5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5n
bGVDaGFyYWN0ZXJTdHJpbmcodm0sIHZpZXdbaV0pKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0VtcHR5U3RyaW5nKHZtKSk7CiAgICAgfQotICAgIGRvdWJsZSBkcG9zID0gYTAu
dG9JbnRlZ2VyKGV4ZWMpOworICAgIGRvdWJsZSBkcG9zID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFt
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaWYgKGRwb3MgPj0gMCAmJiBkcG9zIDwgdmlldy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgdmlld1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZHBvcyldKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Vt
cHR5U3RyaW5nKHZtKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgYXV0byB2aWV3V2l0aFN0
cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5n
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKKyAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFt
ZSktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZ1ZpZXcgdmlldyA9
IHZpZXdXaXRoU3RyaW5nLnZpZXc7Ci0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5p
c1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBhMC5hc1VJbnQzMigpOwogICAgICAg
ICBpZiAoaSA8IHZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHZpZXdbaV0pKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05hTigpKTsKICAgICB9Ci0gICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoZXhlYyk7Cisg
ICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZHBvcyA+PSAwICYm
IGRwb3MgPCB2aWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHZpZXdbc3RhdGljX2Nhc3Q8aW50PihkcG9zKV0pKTsKQEAgLTEwMTksMjAgKzEwMTks
MjAgQEAgc3RhdGljIGlubGluZSBVQ2hhcjMyIGNvZGVQb2ludEF0KGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWcKICAgICByZXR1cm4gY2hhcmFjdGVyOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jQ29kZVBvaW50QXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCi0gICAgSlNWYWx1ZSBh
cmd1bWVudDAgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZ3VtZW50MC5pc1VJbnQzMigpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gYXJndW1lbnQwLmFzVUludDMyKCk7CiAgICAgICAg
IGlmIChwb3NpdGlvbiA8IGxlbmd0aCkKQEAgLTEwNDIsMjggKzEwNDIsMjggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAotICAgIGRvdWJsZSBkb3VibGVQb3NpdGlvbiA9IGFyZ3VtZW50MC50b0ludGVnZXIoZXhl
Yyk7CisgICAgZG91YmxlIGRvdWJsZVBvc2l0aW9uID0gYXJndW1lbnQwLnRvSW50ZWdlcihjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGlmIChkb3VibGVQb3NpdGlvbiA+PSAwICYmIGRvdWJsZVBvc2l0aW9uIDwgbGVuZ3Ro
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGNvZGVQb2ludEF0KHN0
cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZVBvc2l0aW9uKSwgbGVuZ3RoKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2Yo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0g
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBKU1ZhbHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIEpTU3RyaW5n
KiB0aGlzSlNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcq
IHRoaXNKU1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEpTU3RyaW5nKiBv
dGhlckpTU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIG90aGVySlNT
dHJpbmcgPSBhMC50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgcG9zID0gMDsKQEAgLTEw
NzMsNyArMTA3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChhMS5pc1VJbnQzMigpKQog
ICAgICAgICAgICAgcG9zID0gc3RkOjptaW48dWludDMyX3Q+KGExLmFzVUludDMyKCksIGxlbik7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZG91YmxlIGRwb3MgPSBhMS50b0ludGVnZXIo
ZXhlYyk7CisgICAgICAgICAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlcihjYWxsRnJhbWUp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgICAgICAgICBpZiAoZHBvcyA8IDApCiAgICAgICAgICAgICAgICAgZHBvcyA9IDA7
CkBAIC0xMDg2LDkgKzEwODYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh0aGlzSlNTdHJpbmct
Pmxlbmd0aCgpIDwgb3RoZXJKU1N0cmluZy0+bGVuZ3RoKCkgKyBwb3MpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIAotICAgIGF1dG8gdGhpc1ZpZXdXaXRo
U3RyaW5nID0gdGhpc0pTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7Cisg
ICAgYXV0byB0aGlzVmlld1dpdGhTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gb3RoZXJWaWV3V2l0aFN0cmluZyA9IG90aGVySlNT
dHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKKyAgICBhdXRvIG90aGVyVmll
d1dpdGhTdHJpbmcgPSBvdGhlckpTU3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoY2Fs
bEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBzaXplX3QgcmVzdWx0ID0gdGhpc1ZpZXdXaXRoU3RyaW5nLnZpZXcuZmluZChvdGhl
clZpZXdXaXRoU3RyaW5nLnZpZXcsIHBvcyk7CiAgICAgaWYgKHJlc3VsdCA9PSBub3RGb3VuZCkK
QEAgLTEwOTYsMjUgKzEwOTYsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgSlNWYWx1
ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVu
dCgxKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1Zh
bHVlIGExID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIEpTU3RyaW5nKiB0aGlzSlNT
dHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNTdHJpbmcqIHRoaXNKU1N0
cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxlbiA9IHRoaXNK
U1N0cmluZy0+bGVuZ3RoKCk7Ci0gICAgSlNTdHJpbmcqIG90aGVySlNTdHJpbmcgPSBhMC50b1N0
cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyogb3RoZXJKU1N0cmluZyA9IGEwLnRvU3RyaW5nKGNh
bGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpOwor
ICAgIGRvdWJsZSBkcG9zID0gYTEudG9JbnRlZ2VyUHJlc2VydmVOYU4oY2FsbEZyYW1lKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBzdGFydFBvc2l0aW9uOwogICAgIGlmIChkcG9zIDwgMCkKQEAgLTExMjcsOSArMTEyNyw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4
T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChsZW4gPCBvdGhlckpTU3RyaW5nLT5sZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogCi0gICAg
U3RyaW5nIHRoaXNTdHJpbmcgPSB0aGlzSlNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyB0aGlzU3RyaW5nID0gdGhpc0pTU3RyaW5nLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBvdGhl
clN0cmluZyA9IG90aGVySlNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBvdGhlclN0
cmluZyA9IG90aGVySlNTdHJpbmctPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2l6ZV90IHJlc3VsdDsKICAg
ICBpZiAoIXN0YXJ0UG9zaXRpb24pCkBAIC0xMTQxLDI5ICsxMTQxLDI5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
bGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBK
U1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgYTEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaW50IGxlbmd0aCA9IHN0cmlu
Zy0+bGVuZ3RoKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoID49IDApOwogCiAgICAgLy8g
VGhlIGFyZyBwcm9jZXNzaW5nIGlzIHZlcnkgbXVjaCBsaWtlIEFycmF5UHJvdG9GdW5jOjpTbGlj
ZQotICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgc3Rh
cnQgPSBhMC50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBkb3VibGUgZW5kID0gYTEuaXNVbmRlZmluZWQo
KSA/IGxlbmd0aCA6IGExLnRvSW50ZWdlcihleGVjKTsKKyAgICBkb3VibGUgZW5kID0gYTEuaXNV
bmRlZmluZWQoKSA/IGxlbmd0aCA6IGExLnRvSW50ZWdlcihjYWxsRnJhbWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ1NsaWNlKGV4ZWMsIHZtLCBzdHJp
bmcsIGxlbmd0aCwgc3RhcnQsIGVuZCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzdHJpbmdTbGljZShjYWxsRnJhbWUsIHZtLCBzdHJpbmcsIGxlbmd0
aCwgc3RhcnQsIGVuZCkpKTsKIH0KIAogLy8gUmV0dXJuIHRydWUgaW4gY2FzZSBvZiBlYXJseSBy
ZXR1cm4gKHJlc3VsdExlbmd0aCBnb3QgdG8gbGltaXRMZW5ndGgpLgpAQCAtMTIwMiwzMCArMTIw
MiwzMCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0
ZXJJbXBsKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheQogfQogCiAvLyBFUyAyMS4xLjMuMTcgU3Ry
aW5nLnByb3RvdHlwZS5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKTsKIAogICAgIC8vIDMuIExldCBTIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb1N0cmlu
ZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KICAgICAvLyA3LiBM
ZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KLSAgICBTdHJpbmcgaW5wdXQg
PSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIGlucHV0ID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CiAKICAg
ICAvLyA0LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNz
aW9uIG5ldyBBcnJheSgpCiAgICAgLy8gICAgd2hlcmUgQXJyYXkgaXMgdGhlIHN0YW5kYXJkIGJ1
aWx0LWluIGNvbnN0cnVjdG9yIHdpdGggdGhhdCBuYW1lLgotICAgIEpTQXJyYXkqIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNS4gTGV0IGxlbmd0aEEgYmUgMC4K
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSAwOwogCiAgICAgLy8gNi4gSWYgbGltaXQgaXMg
dW5kZWZpbmVkLCBsZXQgbGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1p
dCkuCi0gICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7
Ci0gICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZG
RkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgSlNWYWx1ZSBsaW1pdFZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICB1bnNpZ25lZCBsaW1pdCA9
IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJ
bnQzMihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgLy8gOC4gTGV0IHAgPSAwLgpAQCAtMTIzMyw4ICsxMjMzLDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgLy8gOS4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVj
dCAoaXRzIFtbQ2xhc3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOwogICAgIC8v
ICAgIG90aGVyd2lzZSBsZXQgUiA9IFRvU3RyaW5nKHNlcGFyYXRvcikuCi0gICAgSlNWYWx1ZSBz
ZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIFN0cmluZyBz
ZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVl
IHNlcGFyYXRvclZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBT
dHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IC8vIDEwLiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEuCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgLy8gYS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBBIHdpdGggYXJndW1lbnRzICIwIiwKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxs
RnJhbWUsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBpbnB1dCkp
OwogICAgICAgICAvLyBiLiBSZXR1cm4gQS4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgIH0KQEAgLTEyNTgsNyArMTI1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgLy8gZC4gUmV0dXJuIEEuCiAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlu
cHV0KSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgMCwg
anNTdHJpbmdXaXRoUmV1c2UoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGlucHV0KSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTEy
NzAsNyArMTI3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgQVNTRVJUKGxpbWl0KTsKIAog
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHBv
c2l0aW9uLCBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgaW5wdXRbcG9zaXRpb25dKSk7Cisg
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcG9zaXRpb24sIGpz
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHZtLCBpbnB1dFtwb3NpdGlvbl0pKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9
IHdoaWxlICgrK3Bvc2l0aW9uIDwgbGltaXQpOwogCkBAIC0xMjkzLDEwICsxMjkzLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIHNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvcklt
cGwtPmNoYXJhY3RlcnMxNigpWzBdOwogCiAgICAgICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQo
KSkgewotICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPExDaGFy
PihleGVjLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNo
YXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKKyAgICAgICAgICAgIGlm
IChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxMQ2hhcj4oY2FsbEZyYW1lLCByZXN1bHQs
IHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9zaXRp
b24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxVQ2hhcj4oZXhl
YywgcmVzdWx0LCB0aGlzVmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5ndGgsIGxpbWl0KSkgCisgICAgICAgICAgICBpZiAoc3Bs
aXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8VUNoYXI+KGNhbGxGcmFtZSwgcmVzdWx0LCB0aGlz
VmFsdWUsIGlucHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9uLCBy
ZXN1bHRMZW5ndGgsIGxpbWl0KSkgCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KSk7CiAgICAgICAgIH0KICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xMzExLDkgKzEz
MTEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0
RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmlu
ZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hh
cmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgICAgICAgICAgLy8gICAgdGhy
b3VnaCBxIChleGNsdXNpdmUpLgogICAgICAgICAgICAgLy8gMi4gQ2FsbCBDcmVhdGVEYXRhUHJv
cGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgotICAgICAgICAgICAgYXV0byogc3Vic3Ry
aW5nID0ganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNo
UG9zaXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1
YnN0cmluZyhjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0
aW9uIC0gcG9zaXRpb24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVu
Z3RoLCBzdWJzdHJpbmcpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChjYWxs
RnJhbWUsIHJlc3VsdExlbmd0aCwgc3Vic3RyaW5nKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3Ro
QSBieSAxLgogICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgpA
QCAtMTMyOSwyMyArMTMyOSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMTUuIExldCBUIGJl
IGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9m
IHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgLy8gICAgIHRo
cm91Z2ggcyAoZXhjbHVzaXZlKS4KICAgICAvLyAxNi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHko
QSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgotICAgIGF1dG8qIHN1YnN0cmluZyA9IGpzU3Vic3Ry
aW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBv
c2l0aW9uKTsKKyAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyhjYWxsRnJhbWUsIHRo
aXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBzdWJzdHJp
bmcpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCByZXN1bHRMZW5ndGgr
Kywgc3Vic3RyaW5nKTsKIAogICAgIC8vIDE3LiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBzdHJpbmdQcm90b0Z1bmNTdWJzdHJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICB1bnNpZ25lZCBsZW47CiAgICAgSlNTdHJpbmcq
IGpzU3RyaW5nID0gMDsKICAgICBTdHJpbmcgdVN0cmluZzsKQEAgLTEzNTMsMTcgKzEzNTMsMTcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBqc1N0cmluZyA9IGFzU3RyaW5nKHRoaXNWYWx1ZSk7CiAg
ICAgICAgIGxlbiA9IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICB1
U3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICB1U3RyaW5nID0g
dGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBsZW4gPSB1U3RyaW5nLmxl
bmd0aCgpOwogICAgIH0KIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBhMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CiAKLSAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgZG91Ymxl
IHN0YXJ0ID0gYTAudG9JbnRlZ2VyKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgZG91YmxlIGxlbmd0aCA9IGExLmlzVW5k
ZWZpbmVkKCkgPyBsZW4gOiBhMS50b0ludGVnZXIoZXhlYyk7CisgICAgZG91YmxlIGxlbmd0aCA9
IGExLmlzVW5kZWZpbmVkKCkgPyBsZW4gOiBhMS50b0ludGVnZXIoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoc3Rh
cnQgPj0gbGVuIHx8IGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzRW1wdHlTdHJpbmcodm0pKTsKQEAgLTEzNzgsMTEgKzEzNzgsMTYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHVuc2lnbmVkIHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5n
dGgpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBpZiAoanNTdHJpbmcpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywganNTdHJpbmcsIHN1YnN0cmlu
Z1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N1YnN0cmluZyhjYWxsRnJhbWUsIGpzU3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3Ry
aW5nTGVuZ3RoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyh2bSwg
dVN0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1
YnN0cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICByZXR1cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RySW1wbChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z1N1YnN0ckludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIEBzdWJzdHJJbnRlcm5hbCBzaG91bGQgbm90IGhhdmUgYW55
IG9ic2VydmFibGUgc2lkZSBlZmZlY3RzIChlLmcuIGl0IHNob3VsZCBub3QgY2FsbAogICAgIC8v
IEdldE1ldGhvZCguLi4sIEBAdG9QcmltaXRpdmUpIG9uIHRoZSB0aGlzVmFsdWUpLgpAQCAtMTM5
MiwyOCArMTM5NywyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJp
bmdTdWJzdHJJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gZ3VhcmFudGVlIHRoYXQg
d2Ugb25seSBwYXNzIGl0IGEgc3RyaW5nIHRoaXNWYWx1ZS4gQXMgYSByZXN1bHQsIHN0cmluZ1By
b3RvRnVuY1N1YnN0cgogICAgIC8vIHdpbGwgbm90IG5lZWQgdG8gY2FsbCB0b1N0cmluZygpIG9u
IHRoZSB0aGlzVmFsdWUsIGFuZCB0aGVyZSB3aWxsIGJlIG5vIG9ic2VydmFibGUKICAgICAvLyBz
aWRlLWVmZmVjdHMuCi0gICAgQVNTRVJUKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzU3RyaW5nKCkpOwot
ICAgIHJldHVybiBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoZXhlYyk7CisgICAgQVNTRVJUKGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkuaXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVu
Y1N1YnN0ckltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRo
aXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAg
ICBKU1N0cmluZyoganNTdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgSlNT
dHJpbmcqIGpzU3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgYTEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGludCBsZW4gPSBqc1N0cmluZy0+
bGVuZ3RoKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuID49IDApOwogCi0gICAgZG91YmxlIHN0
YXJ0ID0gYTAudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIHN0YXJ0ID0gYTAudG9OdW1iZXIo
Y2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBkb3VibGUgZW5kOwogICAgIGlmICghKHN0YXJ0ID49IDApKSAvLyBjaGVjayBm
b3IgbmVnYXRpdmUgdmFsdWVzIG9yIE5hTgpAQCAtMTQyMyw3ICsxNDI4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmIChhMS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBlbmQgPSBsZW47CiAgICAg
ZWxzZSB7IAotICAgICAgICBlbmQgPSBhMS50b051bWJlcihleGVjKTsKKyAgICAgICAgZW5kID0g
YTEudG9OdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghKGVuZCA+PSAwKSkgLy8gY2hlY2sg
Zm9yIG5lZ2F0aXZlIHZhbHVlcyBvciBOYU4KICAgICAgICAgICAgIGVuZCA9IDA7CkBAIC0xNDM3
LDIwICsxNDQyLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAgICAgdW5zaWduZWQgc3Vic3Ry
aW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwogICAgIHVuc2lnbmVkIHN1
YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpIC0gc3Vic3RyaW5nU3Rh
cnQ7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdWJz
dHJpbmcoZXhlYywganNTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5ndGgpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJp
bmcoY2FsbEZyYW1lLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xv
d2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxs
RnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzVmFs
LT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9M
b3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7CiAgICAgaWYgKGxvd2VyY2FzZWRTdHJpbmcuaW1wbCgp
ID09IHMuaW1wbCgpKQpAQCAtMTQ1OCwxNyArMTQ2MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
bG93ZXJjYXNlZFN0cmluZykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIEpTU3RyaW5n
KiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKKyAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNW
YWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHMgPSBzVmFsLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFN0cmluZyB1cHBlcmNhc2VkU3Ry
aW5nID0gcy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CiAgICAgaWYgKHVwcGVy
Y2FzZWRTdHJpbmcuaW1wbCgpID09IHMuaW1wbCgpKQpAQCAtMTQ3Niw0NCArMTQ4MSw0MyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgdXBwZXJjYXNlZFN0cmluZykpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxl
Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyAxMy4xLjEgU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlICh0aGF0
IFssIGxvY2FsZXMgWywgb3B0aW9ucyBdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyBodHRwOi8v
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9wdWJsaWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0
bQogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Ly8gMS4gTGV0IE8gYmUgUmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzIHZhbHVlKS4KLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmUg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKIAogICAg
IC8vIDIuIExldCBTIGJlIFRvU3RyaW5nKE8pLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KFMp
LgotICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAg
U3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNC4g
TGV0IFRoYXQgYmUgVG9TdHJpbmcodGhhdCkuCiAgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQoVGhh
dCkuCi0gICAgSlNWYWx1ZSB0aGF0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJp
bmcgdGhhdCA9IHRoYXRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIHRoYXRW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RyaW5nIHRoYXQgPSB0aGF0VmFs
dWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogI2lmIEVOQUJMRShJTlRMKQotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNW
YWx1ZSBsb2NhbGVzID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgSlNWYWx1ZSBvcHRpb25zID0g
ZXhlYy0+YXJndW1lbnQoMik7CisgICAgSlNWYWx1ZSBsb2NhbGVzID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwog
ICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBudWxscHRyOwogICAgIGlmIChsb2NhbGVzLmlz
VW5kZWZpbmVkKCkgJiYgb3B0aW9ucy5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGNvbGxhdG9y
ID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29sbGF0b3IoZXhlYyk7CisgICAgICAgIGNvbGxhdG9y
ID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29sbGF0b3IoY2FsbEZyYW1lKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKLSAgICAgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xs
YXRvcigqZXhlYywgbG9jYWxlcywgb3B0aW9ucyk7CisgICAgICAgIGNvbGxhdG9yLT5pbml0aWFs
aXplQ29sbGF0b3IoKmNhbGxGcmFtZSwgbG9jYWxlcywgb3B0aW9ucyk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0
cmluZ3MoKmV4ZWMsIHN0cmluZywgdGhhdCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoKmNhbGxGcmFtZSwg
c3RyaW5nLCB0aGF0KSkpOwogI2Vsc2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKENvbGxhdG9yKCkuY29sbGF0ZShzdHJpbmcsIHRoYXQpKSk7CiAjZW5kaWYKQEAgLTE1MjUs
OSArMTUyOSw5IEBAIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnNpb25Nb2RlIHsKICAgICBMb3dlciwK
IH07CiB0ZW1wbGF0ZTxDYXNlQ29udmVyc2lvbk1vZGUgbW9kZT4KLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB0b0xvY2FsZUNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgYXV0byBjb252ZXJ0Q2FzZSA9IFsmXSAoYXV0byYmLi4uIGFyZ3MpIHsKQEAgLTE2MTUs
MTkgKzE2MTksMTkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3Rh
dGUqIHN0YXRlKQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKHZtLCBsb3dlcikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICAvLyAxMy4xLjIgU3RyaW5nLnByb3RvdHlwZS50b0xvY2FsZUxvd2VyQ2FzZSAoW2xvY2Fs
ZXNdKQogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9z
dGFuZGFyZHMvRWNtYS00MDIuaHRtCi0gICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29udmVy
c2lvbk1vZGU6Okxvd2VyPihzdGF0ZSk7CisgICAgcmV0dXJuIHRvTG9jYWxlQ2FzZTxDYXNlQ29u
dmVyc2lvbk1vZGU6Okxvd2VyPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMTMuMS4zIFN0cmluZy5wcm90b3R5cGUudG9M
b2NhbGVVcHBlckNhc2UgKFtsb2NhbGVzXSkKICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9wdWJsaWNhdGlvbnMvc3RhbmRhcmRzL0VjbWEtNDAyLmh0bQogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaW50ZXJwcmV0cyBhIHN0cmluZyB2YWx1ZSBhcyBhIHNlcXVlbmNlIG9mIGNvZGUg
cG9pbnRzLCBhcyBkZXNjcmliZWQgaW4gRVMyMDE1LCA2LjEuNC4gVGhpcyBmdW5jdGlvbiBiZWhh
dmVzIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVM
b3dlckNhc2UsIGV4Y2VwdCB0aGF0IGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0byB0aGVpciB1cHBl
cmNhc2UgZXF1aXZhbGVudHMgYXMgc3BlY2lmaWVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBk
YXRhYmFzZS4KLSAgICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6VXBw
ZXI+KHN0YXRlKTsKKyAgICByZXR1cm4gdG9Mb2NhbGVDYXNlPENhc2VDb252ZXJzaW9uTW9kZTo6
VXBwZXI+KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKIApAQCAtMTY2NCwyMiArMTY2OCwyMiBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdHJpbVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgdHJpbUtpbgogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcodm0sIHN0ci5zdWJzdHJpbmdTaGFy
aW5nSW1wbChsZWZ0LCByaWdodCAtIGxlZnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW0oSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodHJpbVN0cmluZyhleGVjLCB0
aGlzVmFsdWUsIFRyaW1TdGFydCB8IFRyaW1FbmQpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0cmlt
U3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBUcmltU3RhcnQgfCBUcmltRW5kKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbVN0YXJ0KEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVHJpbVN0YXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBUcmltU3RhcnQpKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBUcmltU3Rh
cnQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
cmltRW5kKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVHJpbUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0cmltU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgVHJpbUVuZCkp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyaW1TdHJpbmcoY2FsbEZyYW1lLCB0aGlzVmFsdWUsIFRy
aW1FbmQpKTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVG9V
bnNpZ25lZChkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgbWF4KQpAQCAtMTY5
MSw3NiArMTY5NSw3NiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVU
b1Vuc2lnbmVkKGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgbWluLCB1bgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKIAotICAgIFN0cmluZyBz
dHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmlu
ZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBK
U1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNz
aW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKKyAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2
bSwgY2FsbEZyYW1lLCBhMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3Rv
dHlwZS5zdGFydHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3Rv
dHlwZS5zdGFydHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcg
PSBhMC50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICBpZiAocG9zaXRpb25BcmcuaXNJ
bnQzMigpKQogICAgICAgICBzdGFydCA9IHN0ZDo6bWF4KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIo
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNo
SW4ubGVuZ3RoKCk7Ci0gICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQo
cG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5ndGgpOworICAgICAgICBzdGFydCA9
IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihjYWxsRnJh
bWUpLCAwLCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihzdHJpbmdUb1NlYXJjaEluLmhhc0luZml4U3RhcnRpbmdBdChzZWFyY2hTdHJpbmcsIHN0
YXJ0KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0VuZHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0
aGlzVmFsdWUudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1
bWVudCgwKTsKLSAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhl
YywgYTApOworICAgIEpTVmFsdWUgYTAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGJv
b2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBjYWxsRnJhbWUsIGEwKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAo
aXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBi
ZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCBjYW5ub3QgYmUg
YSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhl
eGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7CiAKLSAgICBK
U1ZhbHVlIGVuZFBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBl
bmRQb3NpdGlvbkFyZyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgdW5zaWduZWQgZW5k
ID0gbGVuZ3RoOwogICAgIGlmIChlbmRQb3NpdGlvbkFyZy5pc0ludDMyKCkpCiAgICAgICAgIGVu
ZCA9IHN0ZDo6bWF4KDAsIGVuZFBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAo
IWVuZFBvc2l0aW9uQXJnLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW5kID0gY2xhbXBBbmRU
cnVuY2F0ZVRvVW5zaWduZWQoZW5kUG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5n
dGgpOworICAgICAgICBlbmQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChlbmRQb3NpdGlv
bkFyZy50b0ludGVnZXIoY2FsbEZyYW1lKSwgMCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5oYXNJbmZpeEVuZGlu
Z0F0KHNlYXJjaFN0cmluZywgc3RkOjptaW4oZW5kLCBsZW5ndGgpKSkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMsIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluLCBTdHJpbmcgc2VhcmNoU3Ry
aW5nLCBKU1ZhbHVlIHBvc2l0aW9uQXJnKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nSW5jbHVkZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIFN0
cmluZyBzdHJpbmdUb1NlYXJjaEluLCBTdHJpbmcgc2VhcmNoU3RyaW5nLCBKU1ZhbHVlIHBvc2l0
aW9uQXJnKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICB1bnNpZ25lZCBzdGFydCA9IDA7CkBAIC0xNzY4LDcwICsxNzcyLDcwIEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywKICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFyZy5hc0lu
dDMyKCkpOwogICAgIGVsc2UgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1Nl
YXJjaEluLmxlbmd0aCgpOwotICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2ln
bmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgc3Rh
cnQgPSBjbGFtcEFuZFRydW5jYXRlVG9VbnNpZ25lZChwb3NpdGlvbkFyZy50b0ludGVnZXIoY2Fs
bEZyYW1lKSwgMCwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5maW5kKHNlYXJjaFN0cmluZywgc3RhcnQpICE9IG5v
dEZvdW5kKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRo
aXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwotICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBl
eGVjLCBhMCk7CisgICAgSlNWYWx1ZSBhMCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAg
Ym9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGNhbGxGcmFtZSwgYTApOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
IChpc1JlZ3VsYXJFeHByZXNzaW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90
IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzIGNhbm5vdCBi
ZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5n
KGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhjYWxsRnJh
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFs
dWUgcG9zaXRpb25BcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGV4ZWMsIHN0cmluZ1RvU2Vh
cmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgY2FsbEZyYW1lLCBzdHJpbmdUb1NlYXJj
aEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBBU1NFUlQoY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNW
YWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRo
aXNWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBKU1ZhbHVlIGEwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBKU1ZhbHVlIHBv
c2l0aW9uQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBzdHJpbmdUb1NlYXJjaElu
LCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGNhbGxGcmFtZSwgc3RyaW5nVG9TZWFyY2hJbiwg
c2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgSlNTdHJp
bmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNT
dHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVj
dCh2bSktPnN0cmluZ0l0ZXJhdG9yU3RydWN0dXJlKCksIHN0cmluZykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAogZW51bSBj
bGFzcyBOb3JtYWxpemF0aW9uRm9ybSB7IE5GQywgTkZELCBORktDLCBORktEIH07CkBAIC0xOTE1
LDIxICsxOTE5LDIxIEBAIHN0YXRpYyBKU1ZhbHVlIG5vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcsIE5vcm1hbGl6YXRpb25Gb3JtIGZvCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyh2bSwgV1RGTW92ZShyZXN1bHQpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9y
bWFsaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOworICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBmb3JtID0gTm9ybWFs
aXphdGlvbkZvcm06Ok5GQzsKLSAgICBKU1ZhbHVlIGZvcm1WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIEpTVmFsdWUgZm9ybVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIWZvcm1WYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIFN0cmluZyBmb3JtU3Ry
aW5nID0gZm9ybVZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgZm9ybVN0
cmluZyA9IGZvcm1WYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmIChmb3JtU3RyaW5nID09ICJO
RkMiKQpAQCAtMTk0MSwxMCArMTk0NSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGVsc2Ug
aWYgKGZvcm1TdHJpbmcgPT0gIk5GS0QiKQogICAgICAgICAgICAgZm9ybSA9IE5vcm1hbGl6YXRp
b25Gb3JtOjpORktEOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZXhlYywgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFs
aXphdGlvbiBmb3JtIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihj
YWxsRnJhbWUsIHNjb3BlLCAiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRp
b24gZm9ybSJfcyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobm9ybWFsaXplKGV4ZWMsIHN0cmluZywgZm9ybSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoY2FsbEZyYW1lLCBz
dHJpbmcsIGZvcm0pKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCA3ZDU1MGQ3ZDE2NGYx
Y2VkNjVjNDYzZWFhMzc0ZmZkNzhhNGQyMDkyLi41YzI2OGFjMWExZDlkOWI2ZDlmNTVhMDZhMDA0
ZWMxYTE3ZWU5MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaApAQCAtNjEsMTAgKzYxLDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKAogCiB2b2lkIHN1YnN0
aXR1dGVCYWNrcmVmZXJlbmNlcyhTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4
cCopOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVh
dENoYXJhY3RlcihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3BsaXRGYXN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5h
bChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z1N1YnN0ckludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4IGVk
OWZhODBkYzdmZjU1NjE2Njc0ZTkxNTI0MzBmMTM2NzQ2NjVjYmIuLmYzNzkwNzcyZjIwYTJlOWQ4
ZjQ2MjI0MjRiOTYyMDZiMTExYTI5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fQogCkBAIC01Niw3ICs1Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmc3ltYm9sCiBAZW5kCiAqLwog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBTeW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFN5bWJvbCwgbnVsbHB0cikKQEAgLTc3LDQzICs3Nyw0
MyBAQCB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJv
bFByb3RvdHlwZSogcHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBkZXNjcmlwdGlvbiA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZGVzY3JpcHRpb24gPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmIChkZXNjcmlwdGlvbi5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtKSk7CiAKLSAgICBTdHJp
bmcgc3RyaW5nID0gZGVzY3JpcHRpb24udG9XVEZTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN0
cmluZyA9IGRlc2NyaXB0aW9uLnRvV1RGU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJv
bDo6Y3JlYXRlV2l0aERlc2NyaXB0aW9uKHZtLCBzdHJpbmcpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqIGV4ZWMpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTU3RyaW5nKiBzdHJp
bmdLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmluZyog
c3RyaW5nS2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1N0cmluZyhjYWxsRnJhbWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0
cmluZyBzdHJpbmcgPSBzdHJpbmdLZXktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcg
PSBzdHJpbmdLZXktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5
bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS5zeW1i
b2xGb3JLZXkoc3RyaW5nKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpj
cmVhdGUodm0sIHZtLnN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZykpKTsKIH0K
IAogY29uc3QgQVNDSUlMaXRlcmFsIFN5bWJvbEtleUZvclR5cGVFcnJvciB7ICJTeW1ib2wua2V5
Rm9yIHJlcXVpcmVzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgc3ltYm9sIl9zIH07CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1
Y3RvcktleUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBzeW1ib2xWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xW
YWx1ZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1i
b2xLZXlGb3JUeXBlRXJyb3IpKTsKIAogICAgIFByaXZhdGVOYW1lIHByaXZhdGVOYW1lID0gYXNT
eW1ib2woc3ltYm9sVmFsdWUpLT5wcml2YXRlTmFtZSgpOwogICAgIFN5bWJvbEltcGwmIHVpZCA9
IHByaXZhdGVOYW1lLnVpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFByb3RvdHlwZS5jcHAKaW5kZXggNDJhMDdjNmE0M2E0N2NkNjQyOTIzOWU5YWJlYTk5
NmJhZDgwMTdmNi4uMjM0ZWIxODkxOWI5YTk5NDkzMTRmNDQ2MDYxZThjOWNmMDBkNmE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CkBAIC0zNCw5ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC04OCwzOCArODgsMzggQEAg
aW5saW5lIFN5bWJvbCogdHJ5RXh0cmFjdFN5bWJvbChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVl
KQogICAgIHJldHVybiBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCkt
PmludGVybmFsVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3lt
Ym9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvR2V0dGVyRGVzY3JpcHRpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0
cnlFeHRyYWN0U3ltYm9sKHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1i
b2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIXN5bWJvbCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IFN5bWJvbERlc2NyaXB0aW9uVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBjb25zdCBhdXRvIGRlc2NyaXB0aW9uID0gc3ltYm9sLT5k
ZXNjcmlwdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRpb24uaXNO
dWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3ltYm9sKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xUb1N0cmlu
Z1R5cGVFcnJvcik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBzeW1ib2wtPmRlc2NyaXB0aXZlU3RyaW5nKCkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFsdWVP
ZihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFBy
b3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBTeW1ib2xWYWx1
ZU9mVHlwZUVycm9yKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHN5bWJvbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGhyb3dTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dT
Y29wZS5oCmluZGV4IDU1MzU1ZDY5NjFlZDhjNDQyNGIwZWI3ZGU4NWJjNTkwZDYyZWVhNmIuLmJj
NzhiM2EzMTI2YmU3MmU3MmUzOWI0M2E2YWNlZjg5ZmNiYzc0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpT
T2JqZWN0OwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogCiAjaWYgRU5BQkxFKEVYQ0VQ
VElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5Q29udHJvbGxlci5oCmluZGV4IDY0ZDNmNTUwNGU1NTAxOTA5
ZGJhNmZkMTBhZWQ5ODljMTk4ODc3ZTguLmMyMWFjYWUyMThjNzI2YTBhZTdlZTFlZTU4ODhhYTQx
ZWExYWJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVk
QXJyYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaApAQCAtMzAsOSArMzAsMTAgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
IGNsYXNzIEpTQXJyYXlCdWZmZXI7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK3VzaW5nIEV4ZWNT
dGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxUeXBlZEFycmF5Q29udHJvbGxlcj4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggMzliZWE1ZGVjNzA0OTQyZmMyNWRiOWI3YzllODdlYmViODE2
ZmZlZC4uMDcwMGZjYTVmNjY2N2E2MDc2N2YyNDgxYzZhMGI0MGU0YmIwNzE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVD
YWNoZTsKIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQ29tcGFjdFZhcmlhYmxlTWFw
OwogY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyOwogY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyOwotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhjZXB0aW9u
U2NvcGU7CiBjbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKQEAgLTE4MCw3
ICsxODAsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0
IFZhbHVlUHJvZmlsZTsKIAotdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwordXNpbmcgRXhl
Y1N0YXRlID0gQ2FsbEZyYW1lOwogCiBzdHJ1Y3QgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUgewogICAg
IExvY2FsVGltZU9mZnNldENhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNVHJhcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJh
cHMuaAppbmRleCBjMTZkM2EyZTBlNjU5NDQ5N2Q5NDcyZDBhY2M1ZGE4MDZlNjc5NzcxLi4wZWZi
NjBjMzc0ZWYxYTE3OTAzZjVjMzNlMGE3YWNlM2ZhODIzYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5oCkBAIC0zNiw4ICszNiw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5n
IEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgVk1UcmFwcyB7CiAgICAgdHlwZWRlZiB1
aW50OF90IEJpdEZpZWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgK
aW5kZXggZDM1NjNhZjgzZTdiNmZlOTc3YTA0NDM1NzFhZWIyZjFhMTcxYWVkNi4uZDJhZTA1MzZj
MjAxYzE1Y2FmZDk4MmVkZWUwNDMwZmJjMzRmN2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XYXRjaGRvZy5oCkBAIC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBWTTsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogY2xhc3MgV2F0Y2hkb2cgOiBwdWJsaWMgV1RGOjpUaHJl
YWRTYWZlUmVmQ291bnRlZDxXYXRjaGRvZz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggMzlhMjA3NjBhMDE5OTBlNjBiN2FkYTJjYWJkNjY5ZGI3MDVlYWY4ZS4u
ZTRlYTk1OTQyNzZkNjg5ODdmMTNlMzE3ZDI0NzUyNmMzZWIyOTc0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCkBAIC00
NSw1NCArNDUsNTMgQEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdl
YWtNYXAoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsV2Vha01hcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBXZWFrTWFwQ29uc3RydWN0b3I6OldlYWtNYXBDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxs
V2Vha01hcCwgY29uc3RydWN0V2Vha01hcCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwg
IldlYWtNYXAiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFr
TWFwIikpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0g
ICAgU3RydWN0dXJlKiB3ZWFrTWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+
d2Vha01hcFN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha01hcFN0cnVjdHVyZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU1dl
YWtNYXAqIHdlYWtNYXAgPSBKU1dlYWtNYXA6OmNyZWF0ZSh2bSwgd2Vha01hcFN0cnVjdHVyZSk7
Ci0gICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUg
aXRlcmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtNYXAp
OwogCi0gICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+SlNPYmplY3Q6OmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9
IHdlYWtNYXAtPkpTT2JqZWN0OjpnZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVu
Y3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZm9yRWFj
aEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBuZXh0SXRlbSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKGNhbGxGcmFtZSwgaXRl
cmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIG5leHRJdGVt
KSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAg
ICAgaWYgKCFuZXh0SXRlbS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEpTVmFsdWUg
a2V5ID0gbmV4dEl0ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CisgICAg
ICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDApKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
IAotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbmV4dEl0ZW0uZ2V0KGV4ZWMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigxKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0SXRlbS5nZXQoY2Fs
bEZyYW1lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKQEAgLTEwMCw3ICs5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKHZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dl
ZCgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBjYWxsKGV4ZWMsIGFkZGVy
RnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3
ZWFrTWFwLCBhcmd1bWVudHMpOworICAgICAgICBjYWxsKGNhbGxGcmFtZSwgYWRkZXJGdW5jdGlv
biwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtNYXAs
IGFyZ3VtZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtN
YXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90
eXBlLmNwcAppbmRleCBjNzNmZDNlYzcwMjU5MTEyZGQ1ZDE1YzJhMDY1ZTE5MjEwY2RhZWY3Li5j
ZDRjNTlhYjkyYmZkZTY0NjFkNjViMTZkMmU1YmEwNmY5ZjdjY2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApAQCAtMzMsMTAg
KzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vha01hcFByb3Rv
dHlwZTo6c19pbmZvID0geyAiV2Vha01hcCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcFByb3RvdHlwZSkgfTsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcERlbGV0ZShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBHZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm90b0Z1bmNXZWFrTWFwSGFzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtNYXBHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
dm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CkBAIC01MSw5ICs1MSw5IEBAIHZvaWQgV2Vha01hcFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJXZWFrTWFwIiksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgc3RhdGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha01hcCogZ2V0V2Vh
a01hcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKQEAg
LTY5LDE4ICs2OSwxOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtNYXAqIGdldFdlYWtN
YXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcERl
bGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jV2Vha01hcERlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChj
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGtleS5pc09iamVjdCgpICYmIG1hcC0+cmVtb3ZlKGFzT2Jq
ZWN0KGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
V2Vha01hcEdldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvKiBtYXAgPSBnZXRXZWFrTWFwKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byogbWFwID0gZ2V0V2Vha01h
cChjYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwpAQCAtODksMjEgKzg5
LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1hcC0+Z2V0
KGFzT2JqZWN0KGtleSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90
b0Z1bmNXZWFrTWFwSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGF1dG8qIG1hcCA9IGdldFdlYWtNYXAo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBtYXAgPSBnZXRX
ZWFrTWFwKGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oa2V5LmlzT2JqZWN0KCkgJiYgbWFwLT5oYXMo
YXNPYmplY3Qoa2V5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90
b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byogbWFwID0gZ2V0V2Vha01hcChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1dG8qIG1hcCA9IGdldFdlYWtN
YXAoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhbWFwKTsKICAgICBpZiAo
IW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVm
Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ0NmYyZTdlODg5ZDQ4NDdlNTY5ZWIyMGZhNmM4Nzg4OTY1
MjRmNTEuLmU4YjI1MzgwY2RiZDFjNjBkZmEyN2Y5MDQyZDRjY2NmMWJiZDE1OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNv
bnN0cnVjdG9yLmNwcApAQCAtNDUsMzMgKzQ1LDMyIEBAIHZvaWQgV2Vha09iamVjdFJlZkNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIHBy
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWFrUmVmKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1JlZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
UmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtPYmplY3RSZWZDb25zdHJ1
Y3Rvcjo6V2Vha09iamVjdFJlZkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrUmVmLCBjb25zdHJ1Y3RXZWFr
UmVmKQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vh
a1JlZihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsV2Vha1JlZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1JlZiIpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rp
b25UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYWtSZWYiKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1Jl
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUg
YW4gb2JqZWN0Il9zKTsKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkZp
cnN0IGFyZ3VtZW50IHRvIFdlYWtSZWYgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CiAKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBTdHJ1Y3R1cmUqIFdlYWtP
YmplY3RSZWZTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrT2JqZWN0UmVm
U3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogV2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrT2JqZWN0UmVmU3RydWN0dXJlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2Vha09iamVjdFJl
Zjo6Y3JlYXRlKHZtLCBXZWFrT2JqZWN0UmVmU3RydWN0dXJlLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKS5nZXRPYmplY3QoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShKU1dlYWtPYmplY3RSZWY6OmNyZWF0ZSh2bSwgV2Vha09iamVjdFJlZlN0
cnVjdHVyZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09i
amVjdFJlZlByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
T2JqZWN0UmVmUHJvdG90eXBlLmNwcAppbmRleCA1MmY5ZWFjZGEwMTMxZDM1MTExMDI0ZWFmMTM3
NWY0YzAzZTNhZDk1Li44OTljZDNhODVhMWUyNjUzNTdiOTJmMDYyNDllZWZkMjIyYTllOWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29u
c3QgQ2xhc3NJbmZvIFdlYWtPYmplY3RSZWZQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtSZWYi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdl
YWtPYmplY3RSZWZQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3RvRnVuY1dlYWtSZWZEZXJlZihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtSZWZEZXJlZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiB2b2lkIFdlYWtPYmplY3RSZWZQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAgLTQ3LDkg
KzQ3LDkgQEAgdm9pZCBXZWFrT2JqZWN0UmVmUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5n
KHZtLCAiV2Vha1JlZiIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtPYmpl
Y3RSZWYqIGdldFdlYWtSZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7CkBAIC02NSwxMCArNjUsMTAg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtS
ZWZEZXJlZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Ci0gICAgYXV0byogcmVmID0gZ2V0
V2Vha1JlZihjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvKiByZWYgPSBnZXRXZWFrUmVmKGNhbGxGcmFt
ZSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXJlZikK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNjUyNDlkNWJjMGExNTRhNmNkMTNiMmVkM2U0NzVmNWRmYmIxZThiOC4uMTdkZWI4ODU1
N2MyYTM2ZTg1OWNkZTRlMDgzYTUwYzdlOWRjMjBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCkBAIC00NSw0OCArNDUs
NDcgQEAgdm9pZCBXZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2Vh
a1NldFByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1Nl
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBXZWFrU2V0Q29uc3RydWN0b3I6OldlYWtTZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha1NldCwg
Y29uc3RydWN0V2Vha1NldCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtTZXQi
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJXZWFrU2V0IikpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgU3RydWN0
dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha1NldFN0
cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3
VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU1dlYWtTZXQqIHdl
YWtTZXQgPSBKU1dlYWtTZXQ6OmNyZWF0ZSh2bSwgd2Vha1NldFN0cnVjdHVyZSk7Ci0gICAgSlNW
YWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgaXRlcmFibGUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwogCi0gICAg
SlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha1NldC0+SlNPYmplY3Q6OmdldChleGVjLCB2bS5w
cm9wZXJ0eU5hbWVzLT5hZGQpOworICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtTZXQt
PkpTT2JqZWN0OjpnZXQoY2FsbEZyYW1lLCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgQ2FsbERh
dGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxs
VHlwZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZm9yRWFjaEluSXRlcmFi
bGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0
VmFsdWUpIHsKKyAgICBmb3JFYWNoSW5JdGVyYWJsZShjYWxsRnJhbWUsIGl0ZXJhYmxlLCBbJl0o
Vk0mLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KG5leHRWYWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7
Ci0gICAgICAgIGNhbGwoZXhlYywgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBl
LCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNh
bGwoY2FsbEZyYW1lLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVy
RnVuY3Rpb25DYWxsRGF0YSwgd2Vha1NldCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha1NldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCmluZGV4IGY1ZTA3ODAxZmM4MDExMjgw
ZmJlNzdlZWQyYTk3YTZlZWRmYzc4MTMuLjBmNzM1ZGIwZmQ2MTczZjQyN2RhYzVjYWMwNWMyYjIw
MWFiYjI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRQcm90b3R5cGUuY3BwCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dCBDbGFzc0luZm8gV2Vha1NldFByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vha1NldCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha1NldFBy
b3RvdHlwZSkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9G
dW5jV2Vha1NldERlbGV0ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERlbGV0
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEhhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1Nl
dEFkZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB2b2lkIFdlYWtTZXRQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKQEAgLTQ5LDkgKzQ5LDkgQEAgdm9pZCBXZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBq
c1N0cmluZyh2bSwgIldlYWtTZXQiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNX
ZWFrU2V0KiBnZXRXZWFrU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQor
QUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRXZWFrU2V0KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgewpAQCAtNjcsMzAgKzY3LDMwIEBAIEFM
V0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0RGVs
ZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oa2V5LmlzT2JqZWN0KCkgJiYgc2V0LT5yZW1vdmUoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFr
U2V0SGFzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBhdXRvKiBzZXQgPSBnZXRXZWFrU2V0KGNhbGxGcmFtZSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNldCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oa2V5LmlzT2JqZWN0KCkgJiYgc2V0LT5oYXMoYXNPYmplY3Qoa2V5KSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFr
U2V0QWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgYXV0byogc2V0ID0gZ2V0V2Vha1NldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGF1dG8qIHNldCA9IGdldFdlYWtTZXQoY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhc2V0KTsKICAgICBpZiAoIXNldCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAppbmRleCAzNTU5MmE0MDBiNzkxNmMwY2E0OTMwNDUyNWMxNzg5MmY3
N2EzMDdkLi4xNTMzYjBiOTQxZmUwNzg3ODdlZWQwNThkN2M1ODUxZWY4ZmI5MjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC04ODUsMTEgKzg4NSwx
MSBAQCBjbGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5vZGUgewogcHJp
dmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAg
IGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICAgICAgYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVRHZXR0ZXJDb21wbGV4
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiAob2JqZWN0KQogICAg
ICAgICAgICAgb2JqZWN0LT5tX2VuYWJsZUV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC05NDksMTYgKzk0OSwxNiBAQCBj
bGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAg
cmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbldpdGhUeXBlQ2hlY2soRXhlY1N0YXRlKiBleGVjKQorICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2l0aFR5cGVDaGVjayhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB7CiAg
ICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBET01KSVROb2RlKiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklU
Tm9kZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCF0aGlzT2Jq
ZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUo
KSkpOwogICAgIH0KIApAQCAtMTAyOCwxNSArMTAyOCwxNSBAQCBjbGFzcyBET01KSVRDaGVja1N1
YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uV2l0aFR5cGVDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCisgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XaXRoVHlwZUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCo+KHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3QqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
ICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxG
cmFtZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRo
aXNPYmplY3QtPnZhbHVlKCkpKTsKICAgICB9CiAKQEAgLTEyOTQsOCArMTI5NCw4IEBAIHZvaWQg
RWxlbWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSb290KiByb290KQogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFs
aXplKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0
cmVhbWluZ1BhcnNlckZpbmFsaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNs
YXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
cHVibGljOgpAQCAtMTM2MCwyNiArMTM2MCwyNiBAQCBjbGFzcyBXYXNtU3RyZWFtaW5nUGFyc2Vy
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogY29uc3QgQ2xhc3NJbmZvIFdhc21T
dHJlYW1pbmdQYXJzZXI6OnNfaW5mbyA9IHsgIldhc21TdHJlYW1pbmdQYXJzZXIiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdhc21TdHJlYW1p
bmdQYXJzZXIpIH07CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNt
U3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2VyKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxXYXNtU3RyZWFtaW5nUGFyc2Vy
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSkpOwogCi0gICAgYXV0byBkYXRhID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBkYXRhID0gZ2V0V2FzbUJ1ZmZlckZyb21W
YWx1ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRo
aXNPYmplY3QtPnN0cmVhbWluZ1BhcnNlcigpLmFkZEJ5dGVzKGJpdHdpc2VfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5maXJzdCksIGRhdGEuc2Vjb25kKSkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoRXhl
Y1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21T
dHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8V2FzbVN0cmVhbWluZ1BhcnNlcio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJzZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGhpc09iamVjdC0+c3RyZWFtaW5nUGFyc2VyKCkuZmlu
YWxpemUoKSkpKTsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxh
clZNOjpzX2luZm8gPSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
CiAKIC8vIFRyaWdnZXJzIGEgY3Jhc2ggaW1tZWRpYXRlbHkuCiAvLyBVc2FnZTogJHZtLmNyYXNo
KCkKLXN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmFzaChFeGVjU3RhdGUqKQorc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9f
Q1JBU0ggRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwogICAgIENSQVNIKCk7CkBAIC0xNDAzLDE0ICsxNDAzLDE0IEBAIHN0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmFz
aChFeGVjU3RhCiAKIC8vIEV4ZWN1dGVzIGEgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBpZiB0aGUg
Zmlyc3QgYXJndW1lbnQgaXMgdHJ1dGh5IG9yIGlzIHVuc2V0LgogLy8gVXNhZ2U6ICR2bS5icmVh
a3BvaW50KDxjb25kaXRpb24+KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25CcmVha3BvaW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQnJlYWtwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwogICAgIC8vIE5vdGhpbmcgc2hvdWxkIHRocm93IGhlcmUgYnV0IHdlIG1p
Z2h0IGFzIHdlbGwgZG91YmxlIGNoZWNrLi4uCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTShzY29wZSk7Ci0gICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkgfHwgZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKQor
ICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgfHwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0Jvb2xlYW4oY2FsbEZyYW1lKSkKICAgICAgICAgV1RGQnJlYWtwb2ludFRyYXAoKTsK
IAogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTE0MTgsNyArMTQxOCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQnJlYWtwb2ludChF
eGVjU3RhdGUqIGV4ZWMpCiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBp
cyBhIERGRyBmcmFtZS4KIC8vIFVzYWdlOiBpc0RGRyA9ICR2bS5kZmdUcnVlKCkKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uREZHVHJ1ZShFeGVjU3RhdGUqKQor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25ERkdUcnVlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CkBA
IC0xNDI2LDEzICsxNDI2LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uREZHVHJ1ZShFeGVjU3RhdGUqKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgZnJhbWUgaXMgYSBGVEwgZnJhbWUuCiAvLyBVc2FnZTogaXNGVEwgPSAkdm0uZnRsVHJ1
ZSgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZUTFRydWUo
RXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RlRMVHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihmYWxzZSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNwdU1mZW5jZShFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAjaWYgQ1BVKFg4Nl82NCkgJiYg
IU9TKFdJTkRPV1MpCkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdU1mZW5jZShFeGVjU3RhdGUqKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1UmR0c2MoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1UmR0c2MoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAj
aWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCkBAIC0xNDU0LDcgKzE0NTQsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVJkdHNjKEV4ZWNTdGF0
ZSopCiAjZW5kaWYKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcHVDcHVpZChFeGVjU3RhdGUqKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcHVDcHVpZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAh
T1MoV0lORE9XUykKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3B1Q3B1aWQoRXhlY1N0YXRlKikKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVBhdXNlKEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVBhdXNlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogI2lm
IENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQpAQCAtMTQ4MSwxMyArMTQ4MSwxMyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNwdVBhdXNlKEV4ZWNTdGF0
ZSopCiAvLwogLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTQXJyYXlCdWZmZXIs
IHdlIGxvYWQgdGhlIGJ1dHRlcmZseQogLy8gYW5kIGNsZmx1c2ggYXQgdGhlIGFkZHJlc3Mgb2Yg
dGhlIGJ1dHRlcmZseS4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3B1Q2xmbHVzaChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNwdUNsZmx1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMSkuaXNJbnQzMigpKQorICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS5pc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7CiAKICAgICBhdXRvIGNsZmx1c2ggPSBbXSAodm9pZCogcHRyKSB7CkBAIC0xNDk4
LDExICsxNDk4LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3B1Q2xmbHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBWZWN0b3I8dm9pZCo+IHRvRmx1
c2g7CiAKLSAgICB1aW50MzJfdCBvZmZzZXQgPSBleGVjLT5hcmd1bWVudCgxKS5hc1VJbnQzMigp
OworICAgIHVpbnQzMl90IG9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuYXNVSW50MzIo
KTsKIAotICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNB
cnJheUJ1ZmZlclZpZXcqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpKQorICAgIGlmIChKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAgICAgICAgIHRvRmx1c2guYXBwZW5kKGJpdHdpc2Vf
Y2FzdDxjaGFyKj4odmlldy0+dmVjdG9yKCkpICsgb2Zmc2V0KTsKLSAgICBlbHNlIGlmIChKU09i
amVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVu
dCgwKSkpIHsKKyAgICBlbHNlIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkgewogICAgICAgICBzd2l0Y2gg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBA
IC0xNTE5LDcgKzE1MTksOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNwdUNsZmx1c2goRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjbGZsdXNoKHB0cik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oZmFsc2UpKTsKICNlbmRpZgogfQpAQCAtMTU2OCwyNSArMTU2OSwyNSBAQCBzdGF0
aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rpb24oSlNWYWx1ZSB0
aGVGdW5jdGlvblZhbHVlKQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUg
aXMgYSBMTEludCBmcmFtZS4KIC8vIFVzYWdlOiBpc0xMSW50ID0gJHZtLmxsaW50VHJ1ZSgpCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxMaW50VHJ1ZShFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkxMaW50VHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgaWYgKCFleGVjKQorICAgIGlm
ICghY2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIENhbGxlckZyYW1lSklUVHlwZUZ1bmN0b3IgZnVuY3RvcjsKLSAgICBleGVjLT5p
dGVyYXRlKGZ1bmN0b3IpOworICAgIGNhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdG9yLmppdFR5cGUoKSA9PSBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3Vy
cmVudCBmcmFtZSBpcyBhIGJhc2VsaW5lIEpJVCBmcmFtZS4KIC8vIFVzYWdlOiBpc0Jhc2VsaW5l
SklUID0gJHZtLmppdFRydWUoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25KSVRUcnVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSklUVHJ1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
aWYgKCFleGVjKQorICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIENhbGxlckZyYW1lSklUVHlwZUZ1bmN0b3IgZnVu
Y3RvcjsKLSAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGNhbGxGcmFtZS0+aXRlcmF0
ZShmdW5jdG9yKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdG9y
LmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCkpOwogfQogCkBAIC0xNTk0LDEzICsx
NTk1LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSklU
VHJ1ZShFeGVjU3RhdGUqIGV4ZWMpCiAvLyBVc2FnZToKIC8vIGZ1bmN0aW9uIGYoKSB7IH07CiAv
LyAkdm0ubm9JbmxpbmUoZik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbk5vSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9JbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgIGlmIChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgCi0gICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKIAogICAgIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rpb24odGhlRnVuY3Rpb25WYWx1ZSkpCiAg
ICAgICAgIGV4ZWN1dGFibGUtPnNldE5ldmVySW5saW5lKHRydWUpOwpAQCAtMTYxMCwyOCArMTYx
MSwyOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vSW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gUnVucyBhIGZ1bGwgR0Mgc3luY2hyb25vdXNseS4K
IC8vIFVzYWdlOiAkdm0uZ2MoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkdDKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTUluc3BlY3Rv
cjo6Z2MoZXhlYyk7CisgICAgVk1JbnNwZWN0b3I6OmdjKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gUnVucyB0aGUgZWRlbkdD
IHN5bmNocm9ub3VzbHkuCiAvLyBVc2FnZTogJHZtLmVkZW5HQygpCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUg
YXNzZXJ0U2NvcGU7Ci0gICAgVk1JbnNwZWN0b3I6OmVkZW5HQyhleGVjKTsKKyAgICBWTUluc3Bl
Y3Rvcjo6ZWRlbkdDKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogLy8gRHVtcHMgdGhlIGhhc2hlcyBvZiBhbGwgc3Vic3BhY2VzIGN1
cnJlbnRseSByZWdpc3RlcmVkIHdpdGggdGhlIFZNLgogLy8gVXNhZ2U6ICR2bS5kdW1wU3Vic3Bh
Y2VIYXNoZXMoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25E
dW1wU3Vic3BhY2VIYXNoZXMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIFZNSW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VIYXNoZXMoJnZtKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTY1MCwx
MiArMTY1MSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBTdWJzcGFjZUhhc2hlcyhFeGVjU3RhdGUqIGV4ZWMpCiAvLyBOb3RlOiB5b3UgY2Fubm90
IHRvU3RyaW5nKCkgYSBjb2RlQmxvY2ssIHVubGlua2VkQ29kZUJsb2NrLCBvciBleGVjdXRhYmxl
IGJlY2F1c2UKIC8vIHRoZXJlIGFyZSBpbnRlcm5hbCBvYmplY3RzIGFuZCBub3QgYSBKUyBvYmpl
Y3QuIEhlbmNlLCB5b3UgY2Fubm90IGRvIHN0cmluZwogLy8gY29uY2F0ZW5hdGlvbiB3aXRoIHRo
ZW0uCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxGcmFt
ZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNhbGxGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgdW5zaWduZWQgZnJh
bWVOdW1iZXIgPSAxOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMSkgewotICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKQEAgLTE2NjUsMTggKzE2NjYsMTggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBm
cmFtZU51bWJlciA9IHZhbHVlLmFzVUludDMyKCkgKyAxOwogICAgIH0KIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNEb2xsYXJWTUNhbGxGcmFtZTo6Y3JlYXRlKGV4ZWMsIGZyYW1lTnVt
YmVyKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RvbGxhclZNQ2FsbEZyYW1lOjpj
cmVhdGUoY2FsbEZyYW1lLCBmcmFtZU51bWJlcikpOwogfQogCiAvLyBHZXRzIGEgdG9rZW4gZm9y
IHRoZSBDb2RlQmxvY2sgZm9yIGEgc3BlY2lmaWVkIGZyYW1lIGluZGV4LgogLy8gVXNhZ2U6IGNv
ZGVCbG9ja1Rva2VuID0gJHZtLmNvZGVCbG9ja0ZvckZyYW1lKDApIC8vIGZyYW1lIDAgaXMgdGhl
IHRvcCBmcmFtZS4KIC8vIFVzYWdlOiBjb2RlQmxvY2tUb2tlbiA9ICR2bS5jb2RlQmxvY2tGb3JG
cmFtZSgpIC8vIGltcGxpZXMgZnJhbWUgMCBpLmUuIGN1cnJlbnQgZnJhbWUuCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q29kZUJsb2NrRm9yRnJhbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIHVuc2lnbmVkIGZy
YW1lTnVtYmVyID0gMTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDEpIHsKLSAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlm
IChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIXZhbHVl
LmlzVUludDMyKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCkBAIC0xNjg2LDIwICsxNjg3LDIwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBmcmFtZU51bWJlciA9IHZhbHVlLmFzVUludDMyKCkgKyAxOwogICAgIH0KIAotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gVk1JbnNwZWN0b3I6OmNvZGVCbG9ja0ZvckZyYW1lKGV4
ZWMsIGZyYW1lTnVtYmVyKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IFZNSW5zcGVjdG9y
Ojpjb2RlQmxvY2tGb3JGcmFtZShjYWxsRnJhbWUsIGZyYW1lTnVtYmVyKTsKICAgICBpZiAoY29k
ZUJsb2NrKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvZGVCbG9jayk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIENvZGVC
bG9jayogY29kZUJsb2NrRnJvbUFyZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGcm9tQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgQ29kZUJsb2NrKiBjYW5k
aWRhdGVDb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewogICAg
ICAgICBKU0Z1bmN0aW9uKiBmdW5jID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHZh
bHVlLmFzQ2VsbCgpKTsKQEAgLTE3MTIsNyArMTcxMyw3IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNv
ZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY2FuZGlkYXRlQ29k
ZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4odmFsdWUuYXNDZWxsKCkpOwogICAgIH0K
IAotICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2sgJiYgVk1JbnNwZWN0b3I6OmlzVmFsaWRDb2Rl
QmxvY2soZXhlYywgY2FuZGlkYXRlQ29kZUJsb2NrKSkKKyAgICBpZiAoY2FuZGlkYXRlQ29kZUJs
b2NrICYmIFZNSW5zcGVjdG9yOjppc1ZhbGlkQ29kZUJsb2NrKGNhbGxGcmFtZSwgY2FuZGlkYXRl
Q29kZUJsb2NrKSkKICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUNvZGVCbG9jazsKIAogICAgIGlm
IChjYW5kaWRhdGVDb2RlQmxvY2spCkBAIC0xNzI2LDI0ICsxNzI3LDI0IEBAIHN0YXRpYyBDb2Rl
QmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQogLy8gVXNhZ2U6ICR2bS5w
cmludCgiY29kZWJsb2NrID0gIiwgJHZtLmNvZGVCbG9ja0Zvcihjb2RlQmxvY2tUb2tlbikpCiAv
LyBOb3RlOiB5b3UgY2Fubm90IHRvU3RyaW5nKCkgYSBjb2RlQmxvY2sgYmVjYXVzZSBpdCdzIGFu
IGludGVybmFsIG9iamVjdCBhbmQgbm90CiAvLyBhIEpTIG9iamVjdC4gSGVuY2UsIHlvdSBjYW5u
b3QgZG8gc3RyaW5nIGNvbmNhdGVuYXRpb24gd2l0aCBpdC4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ29kZUJsb2NrRm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjb2RlQmxvY2tGcm9tQXJnKGV4ZWMpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Y29kZUJsb2NrRnJvbUFyZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiAgICAgV1RGOjpTdHJp
bmdQcmludFN0cmVhbSBzdHJlYW07CiAgICAgaWYgKGNvZGVCbG9jaykgewogICAgICAgICBzdHJl
YW0ucHJpbnQoKmNvZGVCbG9jayk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYy0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHN0cmVhbS50b1N0cmlu
ZygpKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKIC8vIFVzYWdlOiAkdm0uZHVtcFNvdXJjZUZvcihmdW5jdGlvbk9iaikKIC8vIFVzYWdl
OiAkdm0uZHVtcFNvdXJjZUZvcihjb2RlQmxvY2tUb2tlbikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFNvdXJjZUZvcihFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTb3VyY2VGb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNvZGVCbG9ja0Zyb21BcmcoZXhlYyk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjb2RlQmxvY2tGcm9tQXJnKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKICAgICBpZiAoY29k
ZUJsb2NrKQogICAgICAgICBjb2RlQmxvY2stPmR1bXBTb3VyY2UoKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTc1MSwyMSArMTc1MiwyMSBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBTb3VyY2VGb3IoRXhl
Y1N0YXRlKiBleGVjKQogCiAvLyBVc2FnZTogJHZtLmR1bXBCeXRlY29kZUZvcihmdW5jdGlvbk9i
aikKIC8vIFVzYWdlOiAkdm0uZHVtcEJ5dGVjb2RlRm9yKGNvZGVCbG9jaykKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVt
cEJ5dGVjb2RlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjb2RlQmxvY2tGcm9tQXJnKGV4ZWMpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUFyZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7
CiAgICAgaWYgKGNvZGVCbG9jaykKICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgZG9QcmludChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgYWRkTGluZUZlZWQp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgYm9vbCBhZGRMaW5lRmVlZCkKIHsKICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVj
LT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSBhcmcgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoYXJnLmlzQ2VsbCgpCiAg
ICAgICAgICAgICAmJiAhYXJnLmlzT2JqZWN0KCkKICAgICAgICAgICAgICYmICFhcmcuaXNTdHJp
bmcoKQpAQCAtMTc3Myw3ICsxNzc0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRvUHJpbnQo
RXhlY1N0YXRlKiBleGVjLCBib29sIGFkZExpbmVGZWVkKQogICAgICAgICAgICAgZGF0YUxvZyhh
cmcpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGFy
Z1N0ciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvV1RGU3RyaW5nKGV4ZWMpOworICAg
ICAgICBTdHJpbmcgYXJnU3RyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1dU
RlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgZGF0YUxvZyhhcmdTdHIpOwogICAgIH0KQEAgLTE3
ODQsNDEgKzE3ODUsNDEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGRvUHJpbnQoRXhlY1N0YXRl
KiBleGVjLCBib29sIGFkZExpbmVGZWVkKQogCiAvLyBQcmludHMgYSBzZXJpZXMgb2YgY29tbWEg
c2VwYXJhdGUgc3RyaW5ncyB3aXRob3V0IGFwcGVuZGluZyBhIG5ld2xpbmUuCiAvLyBVc2FnZTog
JHZtLmRhdGFMb2coc3RyMSwgc3RyMiwgc3RyMykKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRGF0YUxvZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRhdGFMb2coSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKICAgICBjb25zdCBib29sIGFkZExpbmVGZWVkID0gZmFsc2U7Ci0g
ICAgcmV0dXJuIGRvUHJpbnQoZXhlYywgYWRkTGluZUZlZWQpOworICAgIHJldHVybiBkb1ByaW50
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhZGRMaW5lRmVlZCk7CiB9CiAKIC8vIFByaW50cyBh
IHNlcmllcyBvZiBjb21tYSBzZXBhcmF0ZSBzdHJpbmdzIGFuZCBhcHBlbmRzIGEgbmV3bGluZS4K
IC8vIFVzYWdlOiAkdm0ucHJpbnQoc3RyMSwgc3RyMiwgc3RyMykKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIGNvbnN0IGJvb2wgYWRkTGluZUZlZWQgPSB0cnVl
OwotICAgIHJldHVybiBkb1ByaW50KGV4ZWMsIGFkZExpbmVGZWVkKTsKKyAgICByZXR1cm4gZG9Q
cmludChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYWRkTGluZUZlZWQpOwogfQogCiAvLyBEdW1w
cyB0aGUgY3VycmVudCBDYWxsRnJhbWUuCiAvLyBVc2FnZTogJHZtLmR1bXBDYWxsRnJhbWUoKQot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2FsbEZyYW1l
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHVtcENhbGxGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgLy8gV2hlbiB0
aGUgY2FsbGVycyBjYWxsIHRoaXMgZnVuY3Rpb24sIHRoZXkgYXJlIGV4cGVjdGluZyB0byBkdW1w
IHRoZWlyCiAgICAgLy8gb3duIGZyYW1lLiBTbyBza2lwIDEgZm9yIHRoaXMgZnJhbWUuCi0gICAg
Vk1JbnNwZWN0b3I6OmR1bXBDYWxsRnJhbWUoZXhlYywgMSk7CisgICAgVk1JbnNwZWN0b3I6OmR1
bXBDYWxsRnJhbWUoY2FsbEZyYW1lLCAxKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCiAvLyBEdW1wcyB0aGUgSlMgc3RhY2suCiAvLyBVc2FnZTogJHZt
LnByaW50U3RhY2soKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25EdW1wU3RhY2soRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wU3RhY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIC8v
IFdoZW4gdGhlIGNhbGxlcnMgY2FsbCB0aGlzIGZ1bmN0aW9uLCB0aGV5IGFyZSBleHBlY3Rpbmcg
dG8gZHVtcCB0aGUKICAgICAvLyBzdGFjayBzdGFydGluZyB0aGVpciBvd24gZnJhbWUuIFNvIHNr
aXAgMSBmb3IgdGhpcyBmcmFtZS4KLSAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKGV4ZWMsIDEp
OworICAgIFZNSW5zcGVjdG9yOjpkdW1wU3RhY2soY2FsbEZyYW1lLCAxKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xODI3LDEyICsxODI4LDEy
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN0YWNr
KEV4ZWNTdGF0ZSogZXhlYykKIC8vIFVzYWdlOiAkdm0uZHVtcFJlZ2lzdGVycygpIC8vIGR1bXAg
dGhlIHJlZ2lzdGVycyBvZiB0aGUgY3VycmVudCBDYWxsRnJhbWUuCiAvLyBGSVhNRTogQ3VycmVu
dGx5LCB0aGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBwaHlzaWNhbCBmcmFtZS4gV2Ugc2hvdWxkIG1h
a2UKIC8vIGl0IGR1bXAgdGhlIGxvZ2ljYWwgZnJhbWUgKGkuZS4gYmUgYWJsZSB0byBkdW1wIGlu
bGluZWQgZnJhbWVzIGFzIHdlbGwpLgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EdW1wUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFJlZ2lzdGVycyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7CiAgICAgdW5zaWduZWQgcmVxdWVzdGVkRnJhbWVJbmRleCA9IDE7Ci0gICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1VJbnQzMigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTg0Myw3ICsx
ODQ0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
UmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICB1bnNpZ25lZCBmcmFtZUlu
ZGV4ID0gMDsKLSAgICBleGVjLT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7
CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSB7CiAg
ICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIGlmIChmcmFt
ZUluZGV4KysgIT0gcmVxdWVzdGVkRnJhbWVJbmRleCkKICAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOwpAQCAtMTg1NiwxMCArMTg1NywxMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBSZWdpc3RlcnMoRXhlY1N0YXRlKiBl
eGVjKQogCiAvLyBEdW1wcyB0aGUgaW50ZXJuYWwgbWVtb3J5IGxheW91dCBvZiBhIEpTQ2VsbC4K
IC8vIFVzYWdlOiAkdm0uZHVtcENlbGwoY2VsbCkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENlbGwoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2VsbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFs
dWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKICAgICAKQEAgLTE4Njks
MjIgKzE4NzAsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25EdW1wQ2VsbChFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIEdldHMgdGhlIGRhdGFMb2cgZHVtcCBv
ZiB0aGUgaW5kZXhpbmdNb2RlIG9mIHRoZSBwYXNzZWQgdmFsdWUuCiAvLyBVc2FnZTogJHZtLnBy
aW50KCJpbmRleGluZ01vZGUgPSAiICsgJHZtLmluZGV4aW5nTW9kZShqc1ZhbHVlKSkKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSW5kZXhpbmdNb2RlKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SW5kZXhpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQorICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7
CiAKICAgICBXVEY6OlN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKLSAgICBzdHJlYW0ucHJpbnQo
SW5kZXhpbmdUeXBlRHVtcChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKS0+
aW5kZXhpbmdNb2RlKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4
ZWMtPnZtKCksIHN0cmVhbS50b1N0cmluZygpKSk7CisgICAgc3RyZWFtLnByaW50KEluZGV4aW5n
VHlwZUR1bXAoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKS0+aW5k
ZXhpbmdNb2RlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGdsb2Jh
bE9iamVjdC0+dm0oKSwgc3RyZWFtLnRvU3RyaW5nKCkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JbmxpbmVDYXBhY2l0eShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklubGluZUNh
cGFjaXR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSkpCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+aW5saW5lQ2FwYWNpdHkoKSkpOwogCiAg
ICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMTg5MiwyMiArMTg5MywyMiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklubGluZUNhcGFjaXR5
KEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gR2V0cyB0aGUgZGF0YUxvZyBkdW1wIG9mIGEgZ2l2ZW4g
SlMgdmFsdWUgYXMgYSBzdHJpbmcuCiAvLyBVc2FnZTogJHZtLnByaW50KCJ2YWx1ZSA9ICIgKyAk
dm0udmFsdWUoanNWYWx1ZSkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKICAgICBXVEY6OlN0cmluZ1ByaW50U3RyZWFtIHN0cmVhbTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkgewogICAgICAg
ICBpZiAoaSkKICAgICAgICAgICAgIHN0cmVhbS5wcmludCgiLCAiKTsKLSAgICAgICAgc3RyZWFt
LnByaW50KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgc3RyZWFtLnByaW50
KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMtPnZtKCksIHN0cmVhbS50b1N0cmluZygp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxPYmplY3QtPnZt
KCksIHN0cmVhbS50b1N0cmluZygpKSk7CiB9CiAKIC8vIEdldHMgdGhlIHBpZCBvZiB0aGUgY3Vy
cmVudCBwcm9jZXNzLgogLy8gVXNhZ2U6ICR2bS5wcmludCgicGlkID0gIiArICR2bS5nZXRwaWQo
KSkKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UElEKEV4
ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdl
dFBJRChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdl
dEN1cnJlbnRQcm9jZXNzSUQoKSkpOwpAQCAtMTkxNSwzNDIgKzE5MTYsMzQxIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UElEKEV4ZWNTdGF0ZSopCiAK
IC8vIE1ha2UgdGhlIGdsb2JhbE9iamVjdCBoYXZlIGEgYmFkIHRpbWUuIERvZXMgbm90aGluZyBp
ZiB0aGUgb2JqZWN0IGlzIG5vdCBhIEpTR2xvYmFsT2JqZWN0LgogLy8gVXNhZ2U6ICR2bS5oYXZl
QUJhZFRpbWUoZ2xvYmFsT2JqZWN0KQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25IYXZlQUJhZFRpbWUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXZlQUJhZFRpbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAg
SlNWYWx1ZSBvYmpWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgb2JqVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqVmFsdWUuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAog
ICAgIEpTT2JqZWN0KiBvYmogPSBhc09iamVjdChvYmpWYWx1ZS5hc0NlbGwoKSk7Ci0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pih2bSwgb2JqKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICBKU0dsb2JhbE9iamVjdCog
dGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZtLCBvYmopOworICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAK
LSAgICBnbG9iYWxPYmplY3QtPmhhdmVBQmFkVGltZSh2bSk7CisgICAgdGFyZ2V0LT5oYXZlQUJh
ZFRpbWUodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsK
IH0KIAogLy8gQ2hlY2tzIGlmIHRoZSBvYmplY3QgKG9yIGl0cyBnbG9iYWwgaWYgdGhlIG9iamVj
dCBpcyBub3QgYSBnbG9iYWwpIGlzIGhhdmluZyBhIGJhZCB0aW1lLgogLy8gVXNhZ2U6ICR2bS5p
c0hhdmluZ0FCYWRUaW1lKG9iaikKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzSGF2aW5nQUJhZFRpbWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
Ci0gICAgSlNWYWx1ZSBvYmpWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUg
b2JqVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqVmFsdWUuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IAogICAgIEpTT2JqZWN0KiBvYmogPSBhc09iamVjdChvYmpWYWx1ZS5hc0NlbGwoKSk7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPih2bSwgb2JqKTsKLSAgICBpZiAoZ2xvYmFsT2JqZWN0KQotICAgICAgICBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSk7CisgICAg
SlNHbG9iYWxPYmplY3QqIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2
bSwgb2JqKTsKKyAgICBpZiAodGFyZ2V0KQorICAgICAgICBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRhcmdldC0+aXNIYXZpbmdBQmFkVGltZSgpKSk7CiAKLSAgICBnbG9iYWxPYmplY3QgPSBv
YmotPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgIHRhcmdldD0g
b2JqLT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5pc0hhdmluZ0FCYWRUaW1lKCkp
KTsKIH0KIAogLy8gQ3JlYXRlcyBhIG5ldyBnbG9iYWwgb2JqZWN0LgogLy8gVXNhZ2U6ICR2bS5j
cmVhdGVHbG9iYWxPYmplY3QoKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwg
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBqc051bGwoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwot
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNP
YmplY3QqIGpzVGFyZ2V0ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2VsbCgpKTsKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSW1wdXJl
UHJveHlUeXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc1RhcmdldC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KSwgSW1wdXJlUHJveHlUeXBlKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBqc1RhcmdldCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
cm94eSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBSdW50aW1lQXJyYXkq
IGFycmF5ID0gUnVudGltZUFycmF5OjpjcmVhdGUoZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2soY2FsbEZyYW1lKTsKKyAgICBSdW50aW1lQXJyYXkqIGFycmF5ID0gUnVudGltZUFycmF5Ojpj
cmVhdGUoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVOdWxs
Um9wZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU51bGxSb3BlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1JvcGVTdHJpbmc6OmNyZWF0ZU51bGxGb3JUZXN0aW5nKHZtKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIEpTVmFsdWUgdGFyZ2V0
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIEpTT2JqZWN0KiBkZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgaWYgKHRh
cmdldC5pc09iamVjdCgpKQogICAgICAgICBkZWxlZ2F0ZSA9IGFzT2JqZWN0KHRhcmdldC5hc0Nl
bGwoKSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbXB1cmVHZXR0ZXI6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbXB1cmVHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgSW1wdXJlR2V0dGVyKiByZXN1bHQgPSBJbXB1
cmVHZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBkZWxlZ2F0ZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3Rv
bUdldHRlck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gQ3VzdG9tR2V0dGVyOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gQ3VzdG9tR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwogICAgIEN1c3RvbUdldHRlciogcmVzdWx0
ID0gQ3VzdG9tR2V0dGVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVROb2Rl
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVROb2RlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgRE9NSklUR2V0dGVyOjpjcmVh
dGUodm0sIERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGpzTnVsbCgpKSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9N
SklUTm9kZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIERPTUpJVEdldHRlcjo6
Y3JlYXRlKHZtLCBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBqc051bGwoKSkpKTsKICAgICBET01KSVROb2RlKiByZXN1bHQgPSBET01KSVROb2RlOjpjcmVh
dGUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURP
TUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNO
dWxsKCkpOwogICAgIERPTUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0dGVyOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOwotICAg
IERPTUpJVEdldHRlckNvbXBsZXgqIHJlc3VsdCA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0
ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0ZXJDb21wbGV4KiByZXN1
bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25P
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklURnVuY3Rpb25PYmpl
Y3QqIHJlc3VsdCA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
anNOdWxsKCkpOworICAgIERPTUpJVEZ1bmN0aW9uT2JqZWN0KiByZXN1bHQgPSBET01KSVRGdW5j
dGlvbk9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOwotICAgIERPTUpJVENoZWNrU3ViQ2xh
c3NPYmplY3QqIHJlc3VsdCA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZSh2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0
KiByZXN1bHQgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9N
SklUR2V0dGVyQmFzZUpTT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgRE9NSklUR2V0
dGVyQmFzZUpTT2JqZWN0KiByZXN1bHQgPSBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdQYXJzZXIoRXhlY1N0YXRlKiBleGVj
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVXYXNt
U3RyZWFtaW5nUGFyc2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXYXNtU3RyZWFtaW5n
UGFyc2VyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoV2FzbVN0cmVhbWluZ1BhcnNlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QpKTsKIH0KICNlbmRpZgogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU3RhdGlj
Q3VzdG9tQWNjZXNzb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0YXRpY0N1c3RvbUFj
Y2Vzc29yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
anNOdWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RhdGljQ3VzdG9tQWNjZXNz
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgYXV0
byogcmVzdWx0ID0gU3RhdGljQ3VzdG9tQWNjZXNzb3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGJhc2UgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghYmFzZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgZGVsZWdhdGUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAg
ICBKU1ZhbHVlIGRlbGVnYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWRl
bGVnYXRlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgSW1wdXJlR2V0dGVyKiBpbXB1cmVHZXR0ZXIgPSBqc0R5bmFtaWNDYXN0
PEltcHVyZUdldHRlcio+KHZtLCBhc09iamVjdChiYXNlLmFzQ2VsbCgpKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFpbXB1cmVHZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIEltcHVyZUdldHRlciJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYW4gSW1wdXJlR2V0
dGVyIl9zKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogICAgIGlt
cHVyZUdldHRlci0+c2V0RGVsZWdhdGUodm0sIGFzT2JqZWN0KGRlbGVnYXRlLmFzQ2VsbCgpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGluKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlQnVpbHRpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxIHx8ICFleGVjLT5hcmd1bWVudCgwKS5pc1N0cmluZygpKQorICAg
IGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWNhbGxGcmFtZS0+YXJndW1l
bnQoMCkuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAotICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmluZyhleGVjLT5hcmd1
bWVudCgwKSktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmlu
ZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRleHQsIHsgfSk7Ci0gICAgSlNGdW5jdGlvbiog
ZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0s
IHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvbyIpLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCktPmxpbmsodm0sIG51
bGxwdHIsIHNvdXJjZSksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNGdW5j
dGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUodm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvbyIpLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCktPmxpbmso
dm0sIG51bGxwdHIsIHNvdXJjZSksIGdsb2JhbE9iamVjdCk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGZ1bmMpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAy
IHx8ICFleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKQorICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA8IDIgfHwgIWNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogCi0gICAgU3RyaW5nIHN0ciA9
IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0
ciA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShjYWxsRnJhbWUpOwog
CiAgICAgU3ltYm9sSW1wbCogc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgc3RyKSk7CiAgICAgaWYgKCFzeW1ib2wp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJVbmtub3duIHByaXZh
dGUgbmFtZS4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiVW5rbm93biBwcml2YXRlIG5hbWUuIik7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKS5nZXQoZXhlYywgc3ltYm9sKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkuZ2V0KGNhbGxGcmFtZSwgc3ltYm9sKSkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3QoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVS
b290KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSb290OjpjcmVhdGUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUm9vdDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBS
b290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsK
KyAgICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkNhbm5vdCBj
cmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iX3MpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cm9vdCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxGcmFtZSwgIkNhbm5vdCBjcmVhdGUgRWxl
bWVudCB3aXRob3V0IGEgUm9vdC4iX3MpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShF
bGVtZW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcm9vdCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRFbGVt
ZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwotICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2bSwg
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3Qq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEVsZW1lbnQqIHJlc3Vs
dCA9IHJvb3QtPmVsZW1lbnQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/
IHJlc3VsdCA6IGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVNpbXBsZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVNpbXBsZU9i
amVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU2ltcGxlT2JqZWN0OjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoU2ltcGxlT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEhpZGRlblZhbHVlKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0SGlkZGVuVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWND
YXN0PFNpbXBsZU9iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgU2ltcGxlT2Jq
ZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBnZXRI
aWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGdldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rp
b24iX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzaW1wbGVPYmplY3QtPmhpZGRlblZhbHVlKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEhpZGRlblZhbHVl
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uU2V0SGlkZGVuVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgU2lt
cGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZt
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVj
dCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbnZhbGlkIHVzZSBv
ZiBzZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIHNldEhpZGRlblZhbHVlIHRlc3Qg
ZnVuY3Rpb24iX3MpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIHNpbXBsZU9iamVjdC0+c2V0SGlkZGVuVmFs
dWUodm0sIHZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNoYWRv
d0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1bmN0aW9uc09uU3Rh
Y2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGF1dG8qIHNoYWRvd0NoaWNrZW4g
PSB2bS5zaGFkb3dDaGlja2VuKCkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRvd0NoaWNrZW4tPmZ1bmN0aW9uc09uU3RhY2so
ZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRvd0NoaWNrZW4tPmZ1
bmN0aW9uc09uU3RhY2soY2FsbEZyYW1lKSk7CiAgICAgfQogCi0gICAgSlNBcnJheSogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKLSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGV4ZWMsICZ2bSwgWyZdIChT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVzIHsKKyAgICBTdGFj
a1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgJnZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRv
cikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwogICAgICAgICBpZiAodmlzaXRvci0+aXNJbmxpbmVkRnJhbWUoKSkKICAg
ICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICBpZiAodmlz
aXRvci0+aXNXYXNtRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNv
bnRpbnVlOwotICAgICAgICByZXN1bHQtPnB1c2goZXhlYywganNDYXN0PEpTT2JqZWN0Kj4odmlz
aXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgcmVzdWx0LT5wdXNoKGNhbGxGcmFt
ZSwganNDYXN0PEpTT2JqZWN0Kj4odmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKICAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7IC8vIFRoaXMgZnVuY3Rpb24gaXMg
b25seSBjYWxsZWQgZnJvbSB0ZXN0cy4KICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CiAgICAgfSk7CkBAIC0yMjU4LDgxICsyMjU4LDgxIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1bmN0aW9uc09uU3RhY2so
RXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEdsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblNob3VsZE5vdFRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hv
dWxkTm90VGhyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHZtLnNldEdsb2Jh
bENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KGZhbHNlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbihFeGVjU3RhdGUqIGV4ZWMp
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9y
RXhwcmVzc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKICAgICB2bS50eXBlUHJvZmlsZXJMb2co
KS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uRmluZFR5
cGVGb3JFeHByZXNzaW9uIl9zKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZt
KSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8
SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5q
c0V4ZWN1dGFibGUoKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlz
U3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVu
dCgxKSktPnZhbHVlKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkuaXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIFN0cmluZyBzb3VyY2VD
b2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIHVu
c2lnbmVkIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzb3VyY2VDb2RlVGV4dC5maW5k
KHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpKTsKICAgICAK
ICAgICBTdHJpbmcganNvblN0cmluZyA9IHZtLnR5cGVQcm9maWxlcigpLT50eXBlSW5mb3JtYXRp
b25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1h
bCwgb2Zmc2V0LCBleGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB2bSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNPTlBhcnNlKGNhbGxGcmFtZSwganNvblN0cmluZykpOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJldHVyblR5cGVGb3IoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25SZXR1cm5UeXBlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0udHlwZVByb2ZpbGVyKCkpOwogICAgIHZtLnR5cGVQcm9maWxl
ckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgImpzYyBUZXN0aW5nIEFQSTogZnVuY3Rpb25S
ZXR1cm5UeXBlRm9yIl9zKTsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7
CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4
ZWN1dGFibGUoKTsKIAogICAgIHVuc2lnbmVkIG9mZnNldCA9IGV4ZWN1dGFibGUtPnR5cGVQcm9m
aWxpbmdTdGFydE9mZnNldCh2bSk7CiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSB2bS50eXBlUHJv
ZmlsZXIoKS0+dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxl
clNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiwgb2Zmc2V0LCBleGVjdXRhYmxlLT5zb3Vy
Y2VJRCgpLCB2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywg
anNvblN0cmluZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGNhbGxG
cmFtZSwganNvblN0cmluZykpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3QoKSAm
JiB2YWx1ZS5nZXRPYmplY3QoKS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKTsKICAgICB2
YWx1ZS5nZXRPYmplY3QoKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwogICAgIHJldHVy
biBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyhFeGVjU3RhdGUq
IGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBC
YXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOwogICAgIHZtLmNvbnRy
b2xGbG93UHJvZmlsZXIoKS0+ZHVtcERhdGEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRl
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNG
dW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2Jq
ZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1
bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoZXhl
Yy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0
cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBTdHJp
bmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmco
KTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcp
KTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhl
Y3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAgLTIzNDEsMTggKzIzNDEsMTggQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNpY0Jsb2Nr
RXhlY3V0ZWQoRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihoYXNFeGVjdXRlZCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkJhc2ljQmxvY2tFeGVj
dXRpb25Db3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKLSAgICBKU1ZhbHVlIGZ1
bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9u
VmFsdWUuaXNGdW5jdGlvbih2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwo
KS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKLSAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNT
dHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJzdHJp
bmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKS0+dmFsdWUoY2FsbEZyYW1lKTsK
ICAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCku
dG9TdHJpbmcoKTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhz
dWJzdHJpbmcpKTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJp
bmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAgLTIzNjEsNyArMjM2
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQmFzaWNC
bG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoZXhlY3V0aW9uQ291bnQpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6KEV4ZWNTdGF0ZSopCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbkZ1
enooSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewogICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CiAgICAgT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpID0gdHJ1ZTsK
QEAgLTI0MTIsMjIgKzI0MTIsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNoYW5nZURlYnVn
Z2VyTW9kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYywgT3B0aW9uU2V0PENvZGUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxlKEV4
ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAg
IHJldHVybiBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShleGVjLCB7IENvZGVHZW5lcmF0aW9u
TW9kZTo6RGVidWdnZXIgfSk7CisgICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxl
KGNhbGxGcmFtZSwgeyBDb2RlR2VuZXJhdGlvbk1vZGU6OkRlYnVnZ2VyIH0pOwogfQogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1v
ZGVXaGVuSWRsZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7Ci0gICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxlKGV4ZWMsIHsg
fSk7CisgICAgcmV0dXJuIGNoYW5nZURlYnVnZ2VyTW9kZVdoZW5JZGxlKGNhbGxGcmFtZSwgeyB9
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxl
dGVBbGxDb2RlV2hlbklkbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxldGVBbGxDb2RlV2hlbklkbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIFZNKiB2bSA9ICZn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgdm0tPndoZW5JZGxlKFs9XSAoKSB7CiAgICAgICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIHZtLT5kZWxldGVBbGxDb2Rl
KFByZXZlbnRDb2xsZWN0aW9uQW5kRGVsZXRlQWxsQ29kZSk7CkBAIC0yNDM1LDQxICsyNDM1LDQx
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVsZXRlQWxs
Q29kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdENvdW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4
ZWMtPnZtKCkuaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcC5nbG9iYWxPYmplY3RDb3Vu
dCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2xvYmFsT2JqZWN0Rm9yT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkpOwotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPmdsb2JhbE9iamVjdChl
eGVjLT52bSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0dsb2JhbE9iamVjdCogcmVz
dWx0ID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCi0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAg
IEpTVmFsdWUgcHJvcGVydHkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJv
cGVydHkuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50
b0lkZW50aWZpZXIoZXhlYyk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N0cmluZyhwcm9w
ZXJ0eSktPnRvSWRlbnRpZmllcihjYWxsRnJhbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgdmFsdWUuZ2V0UHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgdmFsdWUuZ2V0UHJvcGVydHlTbG90
KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0yNDgxLDE1ICsyNDgxLDE1
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVy
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9h
ZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVy
ID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0ZXIqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOwor
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0
ZXIqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFnZXR0
ZXJTZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxp
ZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIgdGVzdCBmdW5jdGlvbjogYXJndW1l
bnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVy
IHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRlclNldHRlciJfcyk7CiAgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMjQ5OCwyMCArMjQ5OCwx
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRHZXR0
ZXJGcm9tR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Z2V0dGVyKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVzdEdldHRl
clNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRGVsdGFCZXR3ZWVuQnV0dGVyZmxpZXMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJm
bGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgSlNPYmplY3QqIGEgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBKU09iamVjdCogYiA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBKU09iamVjdCogYSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgSlNPYmplY3QqIGIgPSBqc0R5bmFtaWNDYXN0
PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIGlmICghYSB8fCAh
YikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihQTmFOKSk7CiAKQEAg
LTI1MjMsMjAgKzI1MjIsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyhFeGVjU3RhdGUqIGUKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGRlbHRhKSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsR0NU
aW1lKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uVG90YWxHQ1RpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodm0uaGVhcC50b3RhbEdDVGltZSgpLnNlY29u
ZHMoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blBhcnNlQ291bnQoRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUGFyc2VDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGdsb2JhbFBhcnNlQ291bnQubG9hZCgpKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNXYXNtU3VwcG9ydGVkKEV4ZWNT
dGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzV2Fz
bVN1cHBvcnRlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW1iZWRkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbWJlZGRlci5oCmluZGV4IGEyMzc5ZmQ1ODljODlkZjYz
NTdlNmU0NDFiZWQyYTUxODczOWNhM2UuLjk3YmIxMGM5OGU4Y2Y5M2VhNzNkMTk4NTllYTc4YTY0
OWQ4NjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbWJl
ZGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbWJlZGRlci5oCkBA
IC0zNiw3ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFj
ZSBXYXNtIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5LmNwcAppbmRleCBkMWIzOGExNDhhMmI0OTQxZmNlNjkyNzI3MTkzZWFjZjE3YTBmZDIxLi4z
OTQ2NGE4YWMwMzM4MTNmMjc3MjA0MWU2OGRhN2QwMDM5NzRjMDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAtNjksOSArNjksOSBA
QCBGT1JfRUFDSF9XRUJBU1NFTUJMWV9DT05TVFJVQ1RPUl9UWVBFKERFRklORV9DQUxMQkFDS19G
T1JfQ09OU1RSVUNUT1IpCiAKICN1bmRlZiBERUZJTkVfQ0FMTEJBQ0tfRk9SX0NPTlNUUlVDVE9S
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGls
ZUZ1bmMoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVu
YyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5VmFsaWRhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAt
MTU4LDIzICsxNTgsMjIgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFz
eW5jSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWYKICAgICB9KSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1
bmMoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlDb21waWxlRnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CiAKLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlz
ZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Byb21pc2VE
ZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1l
LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3Jl
YXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFs
dWUodm0sIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAKICAgICAgICAgaWYg
KFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICAgICAgcmVqZWN0KGV4
ZWMsIGNhdGNoU2NvcGUsIHByb21pc2UpOworICAgICAgICAgICAgcmVqZWN0KGNhbGxGcmFtZSwg
Y2F0Y2hTY29wZSwgcHJvbWlzZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdlYkFzc2Vt
Ymx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKGV4ZWMsIHByb21pc2UsIFdURk1vdmUoc291
cmNlKSk7CisgICAgICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmNJbnRlcm5h
bChjYWxsRnJhbWUsIHByb21pc2UsIFdURk1vdmUoc291cmNlKSk7CiAKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH0KQEAgLTMwNCw0MiAr
MzAzLDQxIEBAIHZvaWQgSlNXZWJBc3NlbWJseTo6d2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5h
dGVBc3luYyhFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzCiAgICAgQ0xFQVJfQU5EX1JFVFVSTl9J
Rl9FWENFUFRJT04oY2F0Y2hTY29wZSwgdm9pZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0
YW50aWF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6
dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgewogICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAotICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOwogICAgICAgICBKU09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1lbnQu
Z2V0T2JqZWN0KCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaW1wb3J0QXJndW1lbnQuaXNVbmRl
ZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLAorICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KGNhbGxGcmFtZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwKICAgICAgICAgICAgICAgICAi
c2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIG11c3QgYmUgdW5kZWZp
bmVkIG9yIGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZv
clZhbHVlKHZtLCBpbXBvcnRBcmd1bWVudCkpKTsKICAgICAgICAgICAgIENMRUFSX0FORF9SRVRV
Uk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9t
aXNlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFsdWUgZmlyc3RBcmd1
bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICAgICAgSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBtb2R1
bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZmlyc3RBcmd1bWVu
dCkpCi0gICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1
bGVLZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21K
Uyk7CisgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGNhbGxGcmFtZSwgcHJvbWlzZSwg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0
ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6
RnJvbUpTKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5z
dGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
UHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6
OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOworICAg
ICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgY2FsbEZyYW1lLCBwcm9taXNl
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgZmlyc3RB
cmd1bWVudCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5zdGFuY2UsIFdh
c206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKICAgICB9CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNT
dGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5VmFsaWRhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8gW2Jhc2UsIGJ5dGVTaXplXSA9IGdldFdhc21CdWZmZXJGcm9tVmFsdWUo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gW2Jhc2UsIGJ5dGVTaXplXSA9IGdl
dFdhc21CdWZmZXJGcm9tVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBC
QlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBQbGFuOjpk
b250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhyb3cgYW4g
T09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxsIE9PTS4K
QEAgLTM0NywyMCArMzQ1LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoYmFzZSwg
Ynl0ZVNpemUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBKU1Byb21p
c2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjp0cnlDcmVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlz
ZURlZmVycmVkOjp0cnlDcmVhdGUoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QpOwogCiAgICAgVmVj
dG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgdm0ucHJvbWlzZURlZmVy
cmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVu
Y2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+Y29tcGlsZVN0cmVhbWluZykKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgZXhlYywgcHJvbWlz
ZSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
IHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBDb21waWxlU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4ganNjLCBvbmx5IGluIGJyb3dz
ZXIgZW52aXJvbm1lbnQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNzEsMjEg
KzM2OCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRl
U3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwogCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZl
cnJlZDo6dHJ5Q3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6dHJ5Q3JlYXRlKGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHsKICAgICAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFy
Z3VtZW50KDEpOworICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgxKTsKICAgICAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3Vt
ZW50LmdldE9iamVjdCgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWltcG9ydEFyZ3VtZW50Lmlz
VW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKKyAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChjYWxsRnJhbWUsIGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsCiAgICAgICAgICAgICAg
ICAgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyBt
dXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
cnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSk7CiAgICAgICAgICAgICBD
TEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
cHJvbWlzZS0+cHJvbWlzZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zOTYsNyArMzkyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3Ry
ZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKgogICAgICAgICAgICAgICAgIHZtLnByb21pc2VEZWZl
cnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRl
bmNpZXMpKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcv
Yi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1l
bW9yeSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9y
eSB0eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KLSAg
ICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmlu
c3RhbnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgZXhlYywgcHJvbWlzZSwgZXhlYy0+YXJn
dW1lbnQoMCksIGltcG9ydE9iamVjdCk7CisgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2Jq
ZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSW5zdGFudGlh
dGVTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBqc2MsIG9ubHkgaW4gYnJvd3NlciBlbnZp
cm9ubWVudC4KICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAppbmRleCAwMTcxYzE0YWI0
NzM0NDAwOTAyM2EzZTQxYWE0ZDZjYmMwZTQ2M2I1Li43MWU0MWRjNWQ4ZjAwNjY3MjMyMWI1OTg1
ZTExOTk2YzU4N2E3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5oCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHkgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNXZWJBc3NlbWJseShWTSYsIFN0cnVj
dHVyZSopOwogfTsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNv
bXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJl
YW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2YyZDE3ZGYyNzJiOTdk
YmMwNjM4ZjFkZjc3MGMwOTBlYTliMmVjYi4uYzczNjg1Y2RmM2UwYWU1NTA4NmUzZmM5N2FhNmI2
MzdlMTA1ZTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAg
LTQ0LDIxICs0NCwyMSBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZQogIEBlbmQKICAqLwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgYXV0byYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIG1lc3NhZ2Ug
PSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganND
YXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZt
KS0+d2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAgSlNWYWx1ZSBtZXNz
YWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1
Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHN0cnVjdHVyZSwgbWVz
c2FnZSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNW
YWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0
cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdChleGVjLT52bSgpKS0+d2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVj
LCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7
CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUNvbXBpbGVF
cnJvclN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5
cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVj
dG9yKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqIHRo
aXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGRkZTQyYzU2ZjdlNTU1Y2Q3NjA0NGZhMWM4MzE3
ZWYxYjIzMGZiOTYuLmIxZTY0OWY3YmI2NzNkODhhMTY5ZmZhNDA5NTM2MDVhZDg1MDE5YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCkBAIC01OCwxMSArNTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShXZWJBc3NlbWJseUZ1bmN0aW9uKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKTsKKyAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBq
c0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAg
V2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25h
dHVyZUluZGV4KCk7CiAgICAgY29uc3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNt
OjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIApAQCAtNzgsMTQg
Kzc4LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3Nl
bWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBXYXNtOjpJbnN0YW5jZSogd2FzbUlu
c3RhbmNlID0gJmluc3RhbmNlLT5pbnN0YW5jZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBhcmdJ
bmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgKythcmdJbmRl
eCkgewotICAgICAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KGFyZ0luZGV4KTsKKyAg
ICAgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGFyZ0luZGV4KTsKICAgICAg
ICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpKSB7CiAgICAgICAgIGNhc2Ug
V2FzbTo6STMyOgotICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGFyZy50b0ludDMy
KGV4ZWMpKTsKKyAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShhcmcudG9JbnQzMihj
YWxsRnJhbWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OkZ1bmNy
ZWY6IHsKICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJn
KSAmJiAhYXJnLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IoZXhlYywgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlv
biIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGNh
bGxGcmFtZSwgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkFu
eXJlZjoKQEAgLTk0LDEwICs5NCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBhcmcgPSBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNt
OjpGMzI6Ci0gICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVp
bnQzMl90PihhcmcudG9GbG9hdChleGVjKSkpOworICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6
ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYXJnLnRvRmxvYXQoY2FsbEZyYW1lKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6RjY0OgotICAgICAgICAgICAg
YXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYXJnLnRvTnVtYmVy
KGV4ZWMpKSk7CisgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0
PHVpbnQ2NF90PihhcmcudG9OdW1iZXIoY2FsbEZyYW1lKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgV2FzbTo6Vm9pZDoKICAgICAgICAgY2FzZSBXYXNtOjpGdW5jOgpAQCAt
MTE3LDcgKzExNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxX
ZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBUaGUgcmVhc29uIGZv
ciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3ZlcmZsb3cs
IGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKICAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQgdGhlIGds
b2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVlLgogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2Fs
bEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBj
b250ZXh0LCBhcmdDb3VudCwgYXJncyk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRy
LCBnbG9iYWxPYmplY3QsIHdhc21GdW5jdGlvbiwgY29udGV4dCwgYXJnQ291bnQsIGFyZ3MpOwog
CiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25s
eSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2CiAgICAgV2FzbTo6SW5zdGFuY2UqIHByZXZXYXNt
SW5zdGFuY2UgPSB2bS53YXNtQ29udGV4dC5sb2FkKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7CiAgICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgogICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGNhbGxGcmFtZSkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQuc3RvcmUod2FzbUlu
c3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDY4NDJmOTU4
YmQ5OGE4M2FkNTM5MWJkYmFmODIyY2EzMjU2MWNlMTMuLjA4ZjQ0YTk3NDE0ZjRiMDVjZjhmMTI4
NTEwZmU3ODQ0YjA3ZjY4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcApAQCAt
NTgsMzggKzU4LDM4IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfCiAKIHVzaW5nIFdhc206OlBs
YW47CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gSWYgbW9kdWxlT2JqZWN0
IGlzIG5vdCBhIFdlYkFzc2VtYmx5Lk1vZHVsZSBpbnN0YW5jZSwgYSBUeXBlRXJyb3IgaXMgdGhy
b3duLgotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNX
ZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4o
dm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgImZpcnN0IGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11
c3QgYmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVu
dGltZVR5cGVGb3JWYWx1ZSh2bSwgZXhlYy0+YXJndW1lbnQoMCkpKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0
ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJmaXJzdCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5JbnN0
YW5jZSBtdXN0IGJlIGEgV2ViQXNzZW1ibHkuTW9kdWxlIl9zLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOwog
CiAgICAgLy8gSWYgdGhlIGltcG9ydE9iamVjdCBwYXJhbWV0ZXIgaXMgbm90IHVuZGVmaW5lZCBh
bmQgVHlwZShpbXBvcnRPYmplY3QpIGlzIG5vdCBPYmplY3QsIGEgVHlwZUVycm9yIGlzIHRocm93
bi4KLSAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
SlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgSlNP
YmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwogICAgIGlm
ICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5JbnN0YW5j
ZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNy
ZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJzZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHku
SW5zdGFuY2UgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpKTsKICAg
ICAKLSAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+d2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKKyAg
ICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIG1vZHVsZSwgaW1wb3J0T2Jq
ZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUo
KSksIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGNhbGxGcmFt
ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4obW9k
dWxlLT5tb2R1bGUoKSksIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRp
b24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0
LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAm
V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9k
ZTo6RnJvbUpTKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgY2FsbEZyYW1l
LCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2Ut
Pm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21U
b0pTRXhjZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUluc3RhbmNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25U
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIldlYkFzc2VtYmx5Lkluc3RhbmNlIikpOwogfQog
CiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
Y3BwCmluZGV4IGY4MWIyYTFkNjEzMTFjNDFkOWVhNjlhNmQxMjBlNTgyMWJmYTg1ZWIuLmNhNmY5
NDI1NWExZjkzNDlmMWI3YmY1NWZjMGU2MDIyNzEwODE5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbmNlUHJv
dG9GdW5jRXhwb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogfQogCiAjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaCIKQEAgLTYxLDEyICs2MSwxMiBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGdldEluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1
bmNFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBpbnN0YW5jZSA9IGdldEluc3RhbmNlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7IAorICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBnZXRJbnN0YW5jZShj
YWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5z
dGFuY2UtPm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNDczYzI2M2RkZmQzY2Q4ZGNiNTA4OTI5ZWVmMTE5ZjA2YmRjMDUx
MC4uMzQxMDhhMDljMzQ5NTc4Y2NlZDI0NTMwZjc3Y2Q4ZDMzYjQ5ZDBmZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDIxICs0NCwyMSBAQCBjb25zdCBDbGFzc0lu
Zm8gV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmQmFzZTo6cwogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgYXV0byYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvKiBzdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBl
eGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKSk7
CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBhdXRv
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1
cmUsIG1lc3NhZ2UpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIHN0cnVj
dHVyZSwgbWVzc2FnZSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
SlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJv
clN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+d2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVj
LCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7
CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUxpbmtFcnJv
clN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVO
b3RoaW5nLCBmYWxzZSkpOwogfQogCiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKiBX
ZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IDIzNzEyNjdiNWUzNjg3Y2FiM2NiYWRm
NzE3MWEyOGQ0NzRkMDk2YjUuLmE3YzFjNjFjYTM3OWJkM2NmOGY2ZmU4ZDUxNTNlZmY5YTczODEy
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC00OCwzMiArNDgsMzIgQEAgY29u
c3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW4KICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5TWVtb3J5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25lIGFy
Z3VtZW50Il9zKSkpOworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSAhPSAxKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1lbW9y
eSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Il9zKSkpOwogCiAgICAgSlNPYmplY3QqIG1l
bW9yeURlc2NyaXB0b3I7CiAgICAgewotICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgaXRzIGZpcnN0
IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVU
eXBlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgaXRzIGZpcnN0
IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykpKTsKICAgICAgICAgbWVtb3J5RGVzY3JpcHRv
ciA9IGpzQ2FzdDxKU09iamVjdCo+KGFyZ3VtZW50KTsKICAgICB9CiAKICAgICBXYXNtOjpQYWdl
Q291bnQgaW5pdGlhbFBhZ2VDb3VudDsKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaW5pdGlh
bCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbml0aWFsIik7Ci0gICAgICAgIEpTVmFs
dWUgbWluU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMsIGluaXRpYWwpOwor
ICAgICAgICBKU1ZhbHVlIG1pblNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChjYWxs
RnJhbWUsIGluaXRpYWwpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICB1aW50MzJfdCBzaXplID0gdG9Ob25XcmFwcGlu
Z1VpbnQzMihleGVjLCBtaW5TaXplVmFsdWUpOworICAgICAgICB1aW50MzJfdCBzaXplID0gdG9O
b25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUsIG1pblNpemVWYWx1ZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlm
ICghV2FzbTo6UGFnZUNvdW50Ojppc1ZhbGlkKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMg
dG9vIGxhcmdlIl9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZy
YW1lLCAiV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJn
ZSJfcykpKTsKICAgICAgICAgaWYgKFdhc206OlBhZ2VDb3VudChzaXplKS5ieXRlcygpID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUp
KSk7CiAgICAgICAgIGluaXRpYWxQYWdlQ291bnQgPSBXYXNtOjpQYWdlQ291bnQoc2l6ZSk7CiAg
ICAgfQogCkBAIC04MiwyMyArODIsMjMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMKICAgICAg
ICAgLy8gSW4gV2ViSURMLCAicHJlc2VudCIgbWVhbnMgdGhhdCBbW0dldF1dIHJlc3VsdCBpcyB1
bmRlZmluZWQsIG5vdCBbW0hhc1Byb3BlcnR5XV0gcmVzdWx0LgogICAgICAgICAvLyBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtZGljdGlvbmFyaWVzCiAgICAgICAgIElkZW50
aWZpZXIgbWF4aW11bSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtIik7Ci0g
ICAgICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMs
IG1heGltdW0pOworICAgICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0
b3ItPmdldChjYWxsRnJhbWUsIG1heGltdW0pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIW1heFNpemVWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCBzaXplID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihleGVjLCBtYXhTaXplVmFsdWUpOworICAgICAgICAgICAgdWludDMyX3Qgc2l6
ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBtYXhTaXplVmFsdWUpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIGlmICghV2FzbTo6UGFnZUNvdW50Ojppc1ZhbGlkKHNpemUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSJfcykpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0n
IHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIl9zKSkpOwogICAgICAgICAgICAgbWF4aW11bVBhZ2VD
b3VudCA9IFdhc206OlBhZ2VDb3VudChzaXplKTsKIAogICAgICAgICAgICAgaWYgKGluaXRpYWxQ
YWdlQ291bnQgPiBtYXhpbXVtUGFnZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLAotICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICInbWF4aW11bScgcGFnZSBjb3VudCBt
dXN0IGJlIHRoYW4gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlhbCcgcGFnZSBj
b3VudCJfcykpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICInbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIHRo
YW4gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlhbCcgcGFnZSBjb3VudCJfcykp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8qIGpzTWVtb3J5
ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOworICAgIGF1dG8qIGpz
TWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGNhbGxGcmFtZSwgdm0sIGdsb2Jh
bE9iamVjdC0+d2ViQXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFJlZlB0cjxXYXNt
OjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKGluaXRpYWxQYWdlQ291
bnQsIG1heGltdW1QYWdlQ291bnQsCkBAIC0xMDYsMTggKzEwNiwxOCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNT
dGF0ZSogZXhlYwogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWlt
KSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAg
ICAgWyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdl
Q291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVt
b3J5LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7
IH0pOwogICAgIGlmICghbWVtb3J5KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhl
YykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lKSkpOwog
CiAgICAganNNZW1vcnktPmFkb3B0KG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWVtb3J5KTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1i
bHlNZW1vcnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5NZW1v
cnkiKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgIldlYkFz
c2VtYmx5Lk1lbW9yeSIpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3RvciogV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiB0aGlzUHJvdG90eXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuY3BwCmluZGV4IDE0NDFhOWI0ZjVhNDIyOWI2OWJlNWI2NjQwYTk3MDQ0NzBj
MmMwODQuLmMxNDIxMTc1NDBlYTRmODEzOGY5NDQ1NTI5M2EzZmEyN2MwNDVmMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eU1lbW9yeVByb3RvRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogfQog
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgiCkBAIC02NiwzMSAr
NjYsMzEgQEAgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5TWVtb3J5KiBnZXRNZW1vcnkoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgdmEKICAgICByZXR1cm4gbWVtb3J5OwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5j
R3JvdyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdl
dE1lbW9yeShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBKU1dlYkFzc2VtYmx5
TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoY2FsbEZyYW1lLCB2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICAKLSAgICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpOworICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKIAotICAgIFdhc206OlBhZ2VDb3VudCByZXN1bHQgPSBtZW1v
cnktPmdyb3codm0sIGV4ZWMsIGRlbHRhKTsKKyAgICBXYXNtOjpQYWdlQ291bnQgcmVzdWx0ID0g
bWVtb3J5LT5ncm93KHZtLCBjYWxsRnJhbWUsIGRlbHRhKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHJlc3VsdC5wYWdlQ291bnQoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZm
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZXhlYywgdm0sIGV4ZWMt
PnRoaXNWYWx1ZSgpKTsgCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVt
b3J5KGNhbGxGcmFtZSwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOyAKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShtZW1vcnktPmJ1ZmZlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNmJhYjk0ZWM5OWRjMGZmMzE3ODA2ZDhjNWQ5Y2UyNDMzN2RmMmI5NS4uZWJmZTdhNzcyODFi
MzlhY2ZhNjQ0MjUyMzk2YzJiZDQyZjExMDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5j
cHAKQEAgLTQ2LDkgKzQ2LDkgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlNb2R1bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhw
b3J0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxl
SW1wb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVj
dG9yLmx1dC5oIgpAQCAtNjUsMjMgKzY1LDIyIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luCiAg
QGVuZAogICovCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1
bGVDdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKSk7CisgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MikpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihjYWxsRnJhbWUp
KSk7CiAKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpT
V2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJs
eU1vZHVsZSo+KHZtLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAo
IW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIldlYkFzc2VtYmx5Lk1vZHVs
ZS5jdXN0b21TZWN0aW9ucyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3Vt
ZW50Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFz
c2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHku
TW9kdWxlIGFyZ3VtZW50Il9zKSkpOwogCi0gICAgY29uc3QgU3RyaW5nIHNlY3Rpb25OYW1lU3Ry
aW5nID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWMpOworICAgIGNv
bnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSkuZ2V0U3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoY2FsbEZyYW1lLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIAogICAgIGNvbnN0IGF1dG8m
IGN1c3RvbVNlY3Rpb25zID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmN1c3RvbVNlY3Rp
b25zOwpAQCAtODksOSArODgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAo
U3RyaW5nOjpmcm9tVVRGOChzZWN0aW9uLm5hbWUpID09IHNlY3Rpb25OYW1lU3RyaW5nKSB7CiAg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2VjdGlvbi5w
YXlsb2FkLmRhdGEoKSwgc2VjdGlvbi5wYXlsb2FkLnNpemUoKSk7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYykpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUpKSk7
CiAKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZTo6RGVmYXVsdCksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICAgICAgcmVzdWx0LT5w
dXNoKGNhbGxGcmFtZSwgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpLCBXVEZN
b3ZlKGJ1ZmZlcikpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTk5LDE3ICs5OCwxNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0
YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVs
ZUltcG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFz
c2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyBjYWxsZWQgd2l0aCBu
b24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50Il9zKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRl
VHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzIGNhbGxlZCB3
aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiX3MpKSk7CiAKLSAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVj
dCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUs
IG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogCiAgICAgY29uc3QgYXV0byYgaW1wb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5m
b3JtYXRpb24oKS5pbXBvcnRzOwpAQCAtMTE4LDEyICsxMTYsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFt
ZSIpOwogICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAia2luZCIpOwogICAgICAgICBmb3IgKGNvbnN0IFdhc206OkltcG9ydCYgaW1wIDogaW1wb3J0
cykgewotICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNh
bGxGcmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbW9kdWxlLCBqc1N0cmluZyh2bSwg
U3RyaW5nOjpmcm9tVVRGOChpbXAubW9kdWxlKSkpOwogICAgICAgICAgICAgb2JqLT5wdXREaXJl
Y3Qodm0sIG5hbWUsIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KGltcC5maWVsZCkpKTsK
ICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyh2bSwgU3RyaW5n
KG1ha2VTdHJpbmcoaW1wLmtpbmQpKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMs
IG9iaik7CisgICAgICAgICAgICByZXN1bHQtPnB1c2goY2FsbEZyYW1lLCBvYmopOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTMxLDE3ICsxMjksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSog
bW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWND
YXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJs
eS5Nb2R1bGUuZXhwb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3Vt
ZW50Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIldlYkFz
c2VtYmx5Lk1vZHVsZS5leHBvcnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUg
YXJndW1lbnQiX3MpKSk7CiAKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShjYWxsRnJhbWUsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCiAgICAgY29uc3QgYXV0
byYgZXhwb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOwpAQCAtMTQ5
LDExICsxNDYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1v
ZHVsZUV4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpOwogICAgICAgICBJZGVudGlmaWVyIGtp
bmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAia2luZCIpOwogICAgICAgICBmb3IgKGNv
bnN0IFdhc206OkV4cG9ydCYgZXhwIDogZXhwb3J0cykgewotICAgICAgICAgICAgSlNPYmplY3Qq
IG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3Qq
IG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBvYmotPnB1dERp
cmVjdCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSkp
OwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtpbmQsIGpzU3RyaW5nKHZtLCBTdHJp
bmcobWFrZVN0cmluZyhleHAua2luZCkpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1c2goZXhl
Yywgb2JqKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChjYWxsRnJhbWUsIG9iaik7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNjEsMjIgKzE1OCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlN
b2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAot
ICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUo
dm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8dWludDhfdD4gc291cmNl
ID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShXZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoZXhlYywgV1RGTW92ZShzb3VyY2UpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShjYWxsRnJhbWUsIFdURk1vdmUoc291cmNl
KSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2Vi
QXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwg
IldlYkFzc2VtYmx5Lk1vZHVsZSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgIldlYkFzc2VtYmx5Lk1vZHVsZSIpKTsKIH0KIAogSlNXZWJBc3NlbWJseU1vZHVsZSog
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmNwcAppbmRleCA4ZGU5ZDJkZDA4MjgwNmExY2M4ZjMyNDcyMzgyYmJmMjIzOGFhNmQ1
Li5hMmY0ODllNGY3NDIxNzg4MTllZDAzYWE4NWVmOTc2Zjg2MTAzYTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDQsMjMgKzQ0LDIzIEBAIGNvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlCiAgQGVuZAogICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAg
IFN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkg
OiBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLmlz
VW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoY2FsbEZyYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBh
dXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JT
dHJ1Y3R1cmUoKSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUobWVzc2FnZVN0cmluZykpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShjYWxsRnJhbWUsIHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUobWVzc2FnZVN0cmluZykpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+d2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwg
bnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGNhbGxGcmFtZSwgZXJyb3JT
dHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCiBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0
cnVjdG9yLmNwcAppbmRleCA0NWM4ZWIxMWM4YTY5Yjg5ZWIyZjljZDhjMWVlMzVlNDBhYzI2MmQx
Li40OWZlNWUyYjY2ZWUyZTgwZjU1NTgwN2I4MzI2OWVmMDNlNzhlYThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDcwICs0NSw3MCBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
ZgogIEBlbmQKICAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3Qq
IG1lbW9yeURlc2NyaXB0b3I7CiAgICAgewotICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMgZmly
c3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0
ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZSBleHBlY3RzIGl0cyBmaXJz
dCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpKSk7CiAgICAgICAgIG1lbW9yeURlc2NyaXB0
b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCiAgICAgV2FzbTo6VGFi
bGVFbGVtZW50VHlwZSB0eXBlOwogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBlbGVtZW50SWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxlbWVudCIpOwotICAgICAgICBKU1Zh
bHVlIGVsZW1lbnRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBlbGVtZW50SWRl
bnQpOworICAgICAgICBKU1ZhbHVlIGVsZW1lbnRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdl
dChjYWxsRnJhbWUsIGVsZW1lbnRJZGVudCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIFN0cmluZyBlbGVtZW50U3Ry
aW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgZWxl
bWVudFN0cmluZyA9IGVsZW1lbnRWYWx1ZS50b1dURlN0cmluZyhjYWxsRnJhbWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICBpZiAoZWxlbWVudFN0cmluZyA9PSAiZnVuY3JlZiIgfHwgZWxlbWVudFN0cmluZyA9PSAi
YW55ZnVuYyIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RnVu
Y3JlZjsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudFN0cmluZyA9PSAiYW55cmVmIikKICAgICAg
ICAgICAgIHR5cGUgPSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWY7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZSBl
eHBlY3RzIGl0cyAnZWxlbWVudCcgZmllbGQgdG8gYmUgdGhlIHN0cmluZyAnZnVuY3JlZicgb3Ig
J2FueXJlZiciX3MpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFt
ZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0
aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnYW55cmVmJyJfcykpKTsKICAgICB9CiAKICAgICBJZGVu
dGlmaWVyIGluaXRpYWxJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbml0aWFs
Iik7Ci0gICAgSlNWYWx1ZSBpbml0aWFsU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0
KGV4ZWMsIGluaXRpYWxJZGVudCk7CisgICAgSlNWYWx1ZSBpbml0aWFsU2l6ZVZhbHVlID0gbWVt
b3J5RGVzY3JpcHRvci0+Z2V0KGNhbGxGcmFtZSwgaW5pdGlhbElkZW50KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHVpbnQzMl90
IGluaXRpYWwgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGluaXRpYWxTaXplVmFsdWUpOwor
ICAgIHVpbnQzMl90IGluaXRpYWwgPSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgaW5p
dGlhbFNpemVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIEluIFdlYklETCwgInByZXNlbnQiIG1lYW5zIHRoYXQg
W1tHZXRdXSByZXN1bHQgaXMgdW5kZWZpbmVkLCBub3QgW1tIYXNQcm9wZXJ0eV1dIHJlc3VsdC4K
ICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtZGljdGlvbmFyaWVz
CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgSWRlbnRpZmllciBtYXhpbXVt
SWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSIpOwotICAgIEpTVmFs
dWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMsIG1heGltdW1JZGVu
dCk7CisgICAgSlNWYWx1ZSBtYXhTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoY2Fs
bEZyYW1lLCBtYXhpbXVtSWRlbnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFtYXhTaXplVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICBtYXhpbXVtID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBtYXhTaXpl
VmFsdWUpOworICAgICAgICBtYXhpbXVtID0gdG9Ob25XcmFwcGluZ1VpbnQzMihjYWxsRnJhbWUs
IG1heFNpemVWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgaWYgKGluaXRpYWwgPiAqbWF4aW11bSkgewot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLAotICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIidtYXhp
bXVtJyBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgJ2luaXRp
YWwnIHByb3BlcnR5Il9zKSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsCisgICAgICAgICAgICAgICAgY3Jl
YXRlUmFuZ2VFcnJvcihjYWxsRnJhbWUsICInbWF4aW11bScgcHJvcGVydHkgbXVzdCBiZSBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcykpKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6
VGFibGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtLCB0eXBlKTsKICAgICBpZiAoIXdhc21U
YWJsZSkgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3Vs
ZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLAorICAgICAgICAgICAgY3JlYXRl
UmFuZ2VFcnJvcihjYWxsRnJhbWUsICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CiAgICAg
fQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShK
U1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxlYXNlTm9u
TnVsbCgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCB2bSwgZ2xvYmFsT2Jq
ZWN0LT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxlYXNlTm9uTnVs
bCgpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNX
ZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5VGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwg
IldlYkFzc2VtYmx5LlRhYmxlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiV2ViQXNzZW1ibHkuVGFibGUiKSk7CiB9CiAKIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3RvciogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHAKaW5kZXggZTFjMWZiYWMxNTY4NGJhNDE5ZTg2YjU0YTBjOWE3
NGMzOTI5MDAxYy4uMDk5YzQwZjk1MGI3ZTlmZjFhNjE5ODUwOGM4YzUyYTlhMDU5OTk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlUYWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxl
UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0
KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0dyb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgiCkBAIC02
Nyw3MiArNjcsNzIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKiBn
ZXRUYWJsZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWwKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2Vt
Ymx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHRhYmxlLT5sZW5ndGgoKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jR3JvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhl
Yy0+dGhpc1ZhbHVlKCkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJs
ZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgdWludDMyX3Qg
ZGVsdGEgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICB1aW50MzJfdCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdWludDMyX3Qgb2xkTGVuZ3RoID0gdGFibGUtPmxlbmd0
aCgpOwogCiAgICAgaWYgKCF0YWJsZS0+Z3JvdyhkZWx0YSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdy
b3cgdGhlIHRhYmxlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihjYWxsRnJh
bWUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUg
dGFibGUiX3MpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG9sZExl
bmd0aCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseVRhYmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1dlYkFzc2Vt
Ymx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoY2FsbEZyYW1lLCB2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25XcmFw
cGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgdWludDMyX3QgaW5kZXgg
PSB0b05vbldyYXBwaW5nVWludDMyKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBpZiAoaW5kZXggPj0gdGFibGUtPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRl
Z2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoY2FsbEZyYW1lLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBl
LmdldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxl
Il9zKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YWJsZS0+Z2V0KGluZGV4KSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTV2ViQXNzZW1ibHlUYWJs
ZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIEpT
V2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShjYWxsRnJhbWUsIHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCi0gICAgdWlu
dDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGluZGV4ID49IHRhYmxlLT5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90
b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUg
dGFibGUiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgIldl
YkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhh
biB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKIAogICAgIGlmICh0YWJsZS0+dGFibGUo
KS0+YXNGdW5jcmVmVGFibGUoKSkgewogICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNt
RnVuY3Rpb247CiAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBl
ckZ1bmN0aW9uOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5
SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9u
KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJXZWJBc3NlbWJseS5UYWJsZS5w
cm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFu
IGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKSkpOworICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUs
IGNyZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUu
c2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNl
IG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKSkpOwogCiAgICAgICAgIGlmICh2YWx1ZS5pc051
bGwoKSkKICAgICAgICAgICAgIHRhYmxlLT5jbGVhcihpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bi5jcHAKaW5kZXggY2RlNGYzY2YyNjA0YWRkNzZjYzA0ZmIyMjRmOWE1MmJkMmRhMDM3Ni4uYjFk
MmU0ZWVhMTVjYzFlM2VjYzAzOGQxOThlZjU1OWRjM2I0YTU4OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgfTsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21GdW5j
dGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpOworICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBqc0Nh
c3Q8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IHdhc21GdW5j
dGlvbi0+ZnVuY3Rpb24oKTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5tZXRo
b2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgQXJnTGlzdChleGVjKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGNhbGxGcmFtZSwgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgQXJnTGlzdChjYWxsRnJhbWUp
KSkpOwogfQogCiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6V2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpbXBvcnRhYmxl
RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJy
b3JDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKaW5k
ZXggM2YwNmE2YmZmMTE2OGEyNTc2OWRkYTZjYzZiYjNmNzJjNDJiM2E5ZS4uNDRiNjhiMmYyY2Ni
NjIzNmQ2OWRlY2Q0Yjk4YmE0YTY0OWYwMDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJFcnJvckNvZGUuaApAQCAtMjcsOCArMjcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBZYXJyIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKaW5kZXgg
YjY4YWQ5MDk3NWI4ZjlkMWYyNWQwMmI2YmFmYzRlZDdlZDYyNjhlNC4uM2E5MjUwN2NmZTdlYjM3
ZjIzM2NhMDY2MmY4MWQ0OTczNGE4MWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCkBAIC0zNiw4ICszNiw5IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2Fs
bEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCmluZGV4IDBj
NGZhMjQ3MDllMmI3MDMyZWQ0OGY0MjNiODAxYzFhYjBmMjUxODAuLmI0MzBkNjM2NTMxMGE4OWE3
Zjk1NDQzZTBlNjgyNDY5N2NlZWY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCkBAIC0zMSw4ICszMSw5
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIE9CSkNfQ0xBU1MgUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRl
eCA1YzgzYTM3YTFiODM3Y2UzMTc1Zjc0OWMwZTE3NTNiNTk0YjUyZDI2Li4yMDZjMWQ1OWYzYjdl
ZGZmYWZmNDE4YWI2ZTBhNjVhOGJiOWM3YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMzYsOCArMzYsOSBAQAogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH07
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuaAppbmRleCBhNDQ3MTMyNDAzYjU3ZWViMjg2ZDRkMmZhYTQxYmUwYjlj
MDRjNjRkLi40ZTIwNTM1YzU2YWYyZTdkYWRhYzAwOWU3NmFmMDJjMzkwYTFjM2Q3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC0zNCw4ICsz
NCw5IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggNTUz
YTQyOTcxNTAyODFmZjA3ZjM0NGE4ZmZiZjc0NTA3NjBkNmZjNi4uODgxZWY2NDQ5YWMzM2ZiMTMw
Y2VkZDE5ZmYwZDViNDU0NWY0NTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdC5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKaW5kZXgg
NzdhYTM3MWZlZTM3OGExMjEyNjVlNGIyYTRhNTA2MjYwMGViNmIwZC4uYTQ5ZWI0MWFkYWYwYWE0
NTUxOTRiOTYwOWQ5M2ZkZDhkZmVmNjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDI5Zjk1OTFmM2RlM2M4NDlmYzY0ZGQ2NWEx
NjIyYzBiMzk4YzcwMjAuLjYxYTk1MGUxNGVjMzNmMzE4OGRhZmJjMzMzMTkxZWRlZmM1YzlkZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUluZm8uaCIK
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBKU1ZhbHVlOwogY2xhc3MgU2xvdFZpc2l0b3I7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmgKaW5kZXggZTFhMWFhYTI1ZmE1ZDdmYTNhMzI5MTA2YjQwNmRlZDNkNGMyM2JjZi4u
NmEyYWEyNDFlZjE4NDRkM2JkZTc0ZDIzMjdlYzEzZGJmYjczOGVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmgKQEAgLTMyLDggKzMyLDkgQEAKICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgVk07Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuaAppbmRleCBmMDY3Y2IwYTgzOGZlNDEwYTVlZjMzMTRkMmIwZDk0NGI2
ZTUwNTVmLi4yZmJhMzI2OTRlYzk1OTA4MzUzMTk0OWY1N2FkMjhlMDUxNDdlYjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0z
Miw5ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmdTZWN1cml0eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nU2VjdXJpdHkuaAppbmRleCBlYmRiOGE5MDBkMTc1YzY4MDNkMWJhYWU5YjljMzYx
ZmIzMmQxMzUxLi43ZjJmZTE3Y2YwOWNiNTRlZmQxODhjNTMwNGMzYzE3OTJjZDNlYmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmgK
QEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0
ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggNGNi
NWJmMGEwZGIzYzgzOTU0YjgyM2Q2Mzk5ZTZiMzQzOTgwYmRjNi4uZTRlYjQ3MzIzMDk0ZjkzY2Y2
NmVlZTJkOWU4YjQ4YWZlYWQwNDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC00NSw3ICs0NSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNzIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yIDogcHVi
bGljIEpTRE9NQnVpbHRpbkNvCiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwotICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0
YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKICAgICBKU0M6
OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNP
YmplY3QmKTsKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QqKTsKQEAgLTExMSwxMSArMTExLDExIEBAIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPEpTRE9NT2JqZWN0SW5zcGVjdG9yPEpTQ2xhc3M+Ojppc0NvbXBsZXhX
cmFwcGVyLCBKU0M6OkpTCiAgICAgcmV0dXJuIGNvbnRleHQgPyBjcmVhdGVXcmFwcGVyPHR5cGVu
YW1lIEpTQ2xhc3M6OkRPTVdyYXBwZWQ+KGNvbnN0cnVjdG9yLmdsb2JhbE9iamVjdCgpLCBKU0Ns
YXNzOjpET01XcmFwcGVkOjpjcmVhdGUoKmNvbnRleHQpKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmNvbnN0cnVjdChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xh
c3M+Ojpjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0gSlND
Ojpqc0Nhc3Q8SlNET01CdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7Ci0g
ICAgcmV0dXJuIGNhc3RlZFRoaXMtPmNhbGxDb25zdHJ1Y3Rvcigqc3RhdGUsIGNyZWF0ZUpTT2Jq
ZWN0KCpjYXN0ZWRUaGlzKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IEpTQzo6anNDYXN0PEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y2FsbENvbnN0cnVjdG9yKCpj
YWxsRnJhbWUsIGNyZWF0ZUpTT2JqZWN0KCpjYXN0ZWRUaGlzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNvbnN0cnVjdFR5cGUgSlNET01CdWlsdGluQ29u
c3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmgKaW5kZXggMDE3NjdhOTQwYjBjNWExZDllYWIxMDU3MTI0MmNk
YjRmNjVjODM2Mi4uOTY1NjM2YWQ5NDYxYzcwYzA4Mzc0YmNhZDQ5MjMwMGY1MGQ4ZjcxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaApAQCAtNDcs
NyArNDcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUNvbnN0cnVj
dG9yIDogcHVibGljIEpTRE9NQ29uc3RydWN0b3JCYXNlCiAgICAgLy8gVXN1YWxseSBkZWZpbmVk
IGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3Bl
cnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CiAgICAgLy8gTXVzdCBiZSBk
ZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKik7Cisg
ICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01Db25z
dHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCmluZGV4IDk2YmFk
MjQ1NjcxZGQ5MDJlZmU0YzNlMmJmZGMxMzQwZGFmNWNhNDQuLjI2MzQyMjE4Y2U2ODhhYTI2NGZj
ZDAwYjU1ZGRkZTYzNDc5ODUyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKQEAgLTI5LDExICsyOSwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNET01Db25zdHJ1Y3RvckJhc2UpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIl9zKTsKKyAgICB0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3Bl
cmF0b3IiX3MpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaAppbmRleCBmMGIxMDNmMGM1OWE1YTFkODRiMWJmYTcxNzc0
YmM1YWE5OTM3YmQwLi5iOTAxMWRlZDI5YTYwNjQ4NDZlZmRmOThkZjE2ODcwY2ZhNGZjMzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgKQEAgLTQ2LDExICs0NiwxMSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSA6
IHB1YmxpYyBKU0RPTQogICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXph
dGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpIHsgfQogCi0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCisgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJy
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAg
ICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICBKU0M6OnRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiSWxsZWdhbCBjb25zdHJ1Y3RvciJfcyk7CisgICAgICAgIEpTQzo6dGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIklsbGVnYWwgY29uc3RydWN0b3IiX3MpOwogICAg
ICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc051bGwoKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggODAzMGQzNTQwZjViMTQ2NDk0YzUwNmJiYmNmYjhlMjQzMmFmMTdlYi4uZjk3MDE3NDkx
ZWNiNGQ4YzNhZjI2NzRlNmVjM2I3NmJjZTBiNzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTQsOSArNTQsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRp
bnMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVC
eXRlU3RyZWFtQVBJRW5hYmxlZChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVyVHlwZUVycm9y
Rm9yQnVpbHRpbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTUdsb2JhbE9iamVjdDo6
c19pbmZvID0geyAiRE9NR2xvYmFsT2JqZWN0IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01HbG9iYWxPYmplY3QpIH07
CiAKQEAgLTc1LDM5ICs3NSwzOSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNlbGwpLT5K
U0RPTUdsb2JhbE9iamVjdDo6fkpTRE9NR2xvYmFsT2JqZWN0KCk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWFrZVRoaXNUeXBlRXJyb3JGb3JCdWlsdGlucyhFeGVjU3RhdGUq
IGV4ZWNTdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZVRoaXNUeXBlRXJy
b3JGb3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoZXhlY1N0YXRlKTsKLSAgICBBU1NFUlQoZXhlY1N0YXRl
LT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0gICAgVk0mIHZtID0gZXhlY1N0YXRlLT52bSgpOwor
ICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA9PSAyKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgYXV0byBpbnRlcmZhY2VOYW1l
ID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsK
KyAgICBhdXRvIGludGVyZmFjZU5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmdldFN0cmluZyhjYWxsRnJhbWUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgYXV0byBmdW5jdGlvbk5hbWUgPSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdl
dFN0cmluZyhleGVjU3RhdGUpOworICAgIGF1dG8gZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoY2FsbEZyYW1lKTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlVHlwZUVy
cm9yKGV4ZWNTdGF0ZSwgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRm
OCgpLmRhdGEoKSwgZnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjcmVhdGVUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlVGhpc1R5cGVFcnJv
ck1lc3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4KCkuZGF0YSgpLCBmdW5jdGlvbk5hbWUudXRmOCgp
LmRhdGEoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlR2V0dGVy
VHlwZUVycm9yRm9yQnVpbHRpbnMoRXhlY1N0YXRlKiBleGVjU3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1ha2VHZXR0ZXJUeXBlRXJyb3JGb3JCdWlsdGlucyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQo
ZXhlY1N0YXRlKTsKLSAgICBBU1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50KCkgPT0gMik7
Ci0gICAgVk0mIHZtID0gZXhlY1N0YXRlLT52bSgpOworICAgIEFTU0VSVChjYWxsRnJhbWUpOwor
ICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogCi0gICAgYXV0byBpbnRlcmZhY2VOYW1lID0gZXhlY1N0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsKKyAgICBhdXRvIGludGVyZmFjZU5hbWUg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmdldFN0cmluZyhjYWxsRnJhbWUpOwog
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgYXV0byBhdHRyaWJ1dGVOYW1lID0g
ZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlY1N0YXRlKTsKKyAg
ICBhdXRvIGF0dHJpYnV0ZU5hbWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdl
dFN0cmluZyhjYWxsRnJhbWUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKLSAg
ICBhdXRvIGVycm9yID0gc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNyZWF0ZVR5cGVFcnJv
cihleGVjU3RhdGUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUudXRm
OCgpLmRhdGEoKSwgYXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkpOworICAgIGF1dG8gZXJy
b3IgPSBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFt
ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZS51dGY4KCkuZGF0YSgp
LCBhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAgZXJyb3ItPnNldE5hdGl2ZUdl
dHRlclR5cGVFcnJvcigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXJyb3IpOwogfQog
CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBp
c1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoRXhlY1N0YXRlKikKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlYWRhYmxlQnl0ZVN0
cmVhbUFQSUVuYWJsZWQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01J
dGVyYXRvci5oCmluZGV4IDI3MDliMWZiOTgwZjE3MDM4ZGNiOWM3YTg0NzU2Nzk5Y2UyYTRlYmQu
LmFkOWZhODUxNzQ3YjM2YmYyOTRhNDJiMGU2NDZkOTk1ZmYxYmZhMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNXcmFwcGVyLCB0eXBlbmFtZSBJdGVyYXRvclRyYWl0cz4gY2xhc3MgSlNE
T01JdGVyYXRvclByb3RvdHkKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbmV4dChKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbmV4dChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogcHJpdmF0ZToKICAgICBKU0RPTUl0ZXJhdG9y
UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkgeyB9CkBAIC0yNDYsMTYgKzI0NiwxNiBAQCBKU0M6OkpTVmFsdWUgSlNE
T01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6bmV4dChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0ZXJh
dG9yVHJhaXRzPgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0
b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz46Om5leHQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0
b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz46Om5leHQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IEpTQzo6Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3Jh
cHBlciwgSXRlcmF0b3JUcmFpdHM+Kj4odm0sIHN0YXRlLT50aGlzVmFsdWUoKSk7CisgICAgYXV0
byBpdGVyYXRvciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlciwg
SXRlcmF0b3JUcmFpdHM+Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
aXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Ig
b2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiQ2Fubm90IGNhbGwgbmV4dCgpIG9uIGEgbm9uLUl0
ZXJhdG9yIG9iamVjdCJfcykpOwogCi0gICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhdG9yLT5uZXh0KCpzdGF0ZSkpOworICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShp
dGVyYXRvci0+bmV4dCgqY2FsbEZyYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IDI2NWU2ZDNlMzRjYzA0MTMw
YTIwZTY2MGE3YjVjYzVlODE3ZGEwNTQuLmQzYzg3YWI2OGVjMTFjMjQyMjZhNjIzNTNkYzQxMjE1
Njg1NjdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFt
ZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFt
ZWRDb25zdHJ1Y3Rvci5oCkBAIC00OCw3ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTUNvbnN0cnVjdG9y
CiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
JikgeyB9CiAgICAgLy8gTXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNs
YXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01OYW1lZENv
bnN0cnVjdG9yPEpTQ2xhc3M+KiBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2UuY3BwCmluZGV4IDIyNmJlZjk4YTM0NDJhNmQwZjQzNzE4Mjc5ZDJjOTA1N2Y1MDBjOGIuLmUx
ZWU2ZTczMzk1MWI1ZWY0Yjc1YjA5OTJlODE5NmY5NDc2NDk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIERP
TVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0bGVkKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYgogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7Ci0gICAgYXV0byogaGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoRXhlY1N0YXRlKikgbXV0YWJsZSB7CisgICAgYXV0byogaGFuZGxlciA9IEpT
Qzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmlu
ZyB7IH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJu
IEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
Y2QxZWRiYTA5YTdmMjdiZDJkNGZmNWI4ZDFiZGJiZjdkMGFlZTQ3ZS4uZTNjYzJmOWM0MTExMGNk
YWU4YTU0NzAxMTQ1MzU0ZjFkMDRmNjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNjQsOCArNjQsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25TaG93TW9kYWxEaWFsb2coRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbk9wZW5EYXRhYmFzZShFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uU2hvd01vZGFsRGlhbG9nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTYzMSw5ICs2MzEsOSBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU0RPTVdpbmRvdyogSURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdChFeGVjU3RhdGUm
IHN0YXRlKQogICAgIHJldHVybiB0b0pTRE9NV2luZG93KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNW
YWx1ZSgpLnRvVGhpcygmc3RhdGUsIE5vdFN0cmljdE1vZGUpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNh
bGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlQm9keT4oKnN0YXRlLCAi
b3BlbkRhdGFiYXNlIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNh
bGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlQm9keT4oKmNhbGxGcmFt
ZSwgIm9wZW5EYXRhYmFzZSIpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuRGF0YWJh
c2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAK
aW5kZXggNGI5Y2UwYTM1MGNkNTdjZWY4ODkwZTY4NmNkYmViZWE4ODNmNTBiYi4uMzQ2MjgxNDIy
ZjM3MGI3N2Q1ZWE3Y2I0MWYxZDFmYjBlMDc0MDc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU0V4dGVuZGFibGVNZXNz
YWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDdhMjliYTI1ZWM2NTRhMTdiZWU0ODVkODY4ZDlhZGM4MGRlYzE3NzUuLjQw
YmIyYzI2YjI1ZDI5YTExOWI0MGE5YjJlZjFhOWNjNjhjZDI3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MSw5ICs0
MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNTdGF0
ZSYgZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxl
bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvKiBq
c0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRE9NQ29uc3RydWN0b3JCYXNlKj4oZXhlYy5qc0NhbGxl
ZSgpKTsKQEAgLTU2LDggKzU2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNTdGF0ZSYgZXhlYykKIAogICAgIEpTVmFsdWUgbmV3VGFy
Z2V0VmFsdWUgPSBleGVjLnRoaXNWYWx1ZSgpOwogICAgIGF1dG8qIG5ld1RhcmdldCA9IG5ld1Rh
cmdldFZhbHVlLmdldE9iamVjdCgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KG5ld1RhcmdldC0+Z2xvYmFsT2JqZWN0KHZtKSk7Ci0gICAgSlNW
YWx1ZSBodG1sRWxlbWVudENvbnN0cnVjdG9yVmFsdWUgPSBKU0hUTUxFbGVtZW50OjpnZXRDb25z
dHJ1Y3Rvcih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBuZXdUYXJnZXRHbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihuZXdUYXJnZXQtPmdsb2JhbE9iamVjdCh2
bSkpOworICAgIEpTVmFsdWUgaHRtbEVsZW1lbnRDb25zdHJ1Y3RvclZhbHVlID0gSlNIVE1MRWxl
bWVudDo6Z2V0Q29uc3RydWN0b3Iodm0sIG5ld1RhcmdldEdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KG5ld1RhcmdldFZhbHVlID09IGh0bWxFbGVtZW50Q29uc3RydWN0b3JWYWx1ZSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAibmV3LnRhcmdldCBpcyBub3Qg
YSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciJfcyk7CiAKQEAgLTc2LDE0ICs3Niwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTSFRNTEVsZW1lbnQo
RXhlY1N0YXRlJiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywg
c2NvcGUsICJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50Il9zKTsK
IAogICAgIGlmICghZWxlbWVudEludGVyZmFjZS0+aXNVcGdyYWRpbmdFbGVtZW50KCkpIHsKLSAg
ICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlID0gZ2V0RE9NU3RydWN0dXJlPEpTSFRNTEVs
ZW1lbnQ+KHZtLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgU3RydWN0dXJlKiBiYXNlU3RydWN0
dXJlID0gZ2V0RE9NU3RydWN0dXJlPEpTSFRNTEVsZW1lbnQ+KHZtLCAqbmV3VGFyZ2V0R2xvYmFs
T2JqZWN0KTsKICAgICAgICAgYXV0byogbmV3RWxlbWVudFN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKCZleGVjLCBuZXdUYXJnZXRWYWx1ZSwgYmFz
ZVN0cnVjdHVyZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVt
ZW50OjpjcmVhdGUoZWxlbWVudEludGVyZmFjZS0+bmFtZSgpLCBkb2N1bWVudCk7CiAgICAgICAg
IGVsZW1lbnQtPnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKmVsZW1lbnRJbnRlcmZhY2UpOwot
ICAgICAgICBhdXRvKiBqc0VsZW1lbnQgPSBKU0hUTUxFbGVtZW50OjpjcmVhdGUobmV3RWxlbWVu
dFN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBlbGVtZW50LmdldCgpKTsKLSAgICAgICAgY2FjaGVX
cmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudC5wdHIoKSwganNFbGVtZW50KTsK
KyAgICAgICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1l
bnRTdHJ1Y3R1cmUsIG5ld1RhcmdldEdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7CisgICAg
ICAgIGNhY2hlV3JhcHBlcihuZXdUYXJnZXRHbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQu
cHRyKCksIGpzRWxlbWVudCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbGVt
ZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDEwZDZmOTQyM2ZkZjU1YTQ3NTJlM2Ri
ZjlkYzY5YzY4MzBhZDkxYWQuLjQyOTU4OWU4OGQwNzIxZDBmZTI5ZTY3MjgxNTdlNDVlZDRjMzcy
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTM5LDI2ICsxMzksMjYgQEAgYm9vbCBwbHVnaW5FbGVt
ZW50Q3VzdG9tUHV0KEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFBsdWdpbihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUGx1Z2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGV4ZWMtPmpzQ2FsbGVlKCkpOworICAgIEpTSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAKICAgICAvLyBHZXQgdGhlIHBsdWctaW4gc2NyaXB0IG9iamVjdC4KLSAgICBKU09i
amVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwor
ICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoY2FsbEZyYW1l
LCBlbGVtZW50KTsKICAgICBBU1NFUlQoc2NyaXB0T2JqZWN0KTsKIAotICAgIHNpemVfdCBhcmd1
bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBhcmd1bWVudENv
dW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRMaXN0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgaSsrKQotICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KGkpKTsK
KyAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChjYWxsRnJhbWUtPmFyZ3VtZW50KGkpKTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50TGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShleGVjLT52bSgp
LCBzY3JpcHRPYmplY3QsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgc2NyaXB0T2JqZWN0LCBjYWxsRGF0YSk7CiAgICAg
QVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KTsKIAogICAgIC8vIENhbGwgdGhlIG9i
amVjdC4KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgc2NyaXB0T2JqZWN0LCBjYWxs
VHlwZSwgY2FsbERhdGEsIGV4ZWMtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIHNjcmlwdE9iamVjdCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20uY3BwCmluZGV4IDhlOWNiOWViOTQ2Mzk0
ZjU4OTM4M2JiNDU2OGMyZWRhOTViOTMzMTYuLjJjZDAyYTg1ZGJiMmFiMjhiYjZkN2E2YmU3ZmEz
MGNmOTJjZWU5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
QW5pbWF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkFuaW1hdGlvbkN1c3RvbS5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkFuaW1hdGlv
biYgdmEKICAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBbmltYXRpb24oRXhl
Y1N0YXRlJiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNX
ZWJBbmltYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxKU0RPTUNvbnN0cnVjdG9yQmFzZSo+KHN0YXRlLmpzQ2FsbGVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA5ZWQx
MGVlODdhMTgyNDNjODE5ZTA3ZmM1NmNjNTI5YThkMWY1MmQxLi41MzY0ZDRmYmVhZmFmNmY0N2I3
NjdhMjBjODU4YmJjZGFiZGJmODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjgwLDE4ICsyODAsMTggQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBtb2R1bGVTY3IKIAogICAgIFJlZlB0cjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gbW9kdWxlU2Ny
aXB0KCZtb2R1bGVTY3JpcHRSZWYpOwogCi0gICAgYXV0byYgZnVsZmlsbEhhbmRsZXIgPSAqSlNO
YXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5LndpbmRvdygpLCAxLCBT
dHJpbmcoKSwgW21vZHVsZVNjcmlwdF0oRXhlY1N0YXRlKiBleGVjKSAtPiBKU0M6OkVuY29kZWRK
U1ZhbHVlIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvJiBmdWxmaWxs
SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHku
d2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7
CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZUtl
eSA9IGpzVmFsdWVUb01vZHVsZUtleShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAg
IElkZW50aWZpZXIgbW9kdWxlS2V5ID0ganNWYWx1ZVRvTW9kdWxlS2V5KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgIG1vZHVsZVNjcmlwdC0+bm90aWZ5TG9hZENvbXBsZXRlZCgqbW9kdWxl
S2V5LmltcGwoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiByZWplY3RIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVu
Y3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3RyaW5nKCksIFtt
b2R1bGVTY3JpcHRdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgICAgICBKU1ZhbHVlIGVycm9yVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBhdXRvJiByZWplY3RIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0
ZS52bSgpLCBwcm94eS53aW5kb3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVTY3JpcHRdKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7CisgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgSlNWYWx1ZSBlcnJvclZhbHVl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAgICAgaWYgKGVycm9yVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gSlNDOjphc09iamVjdChlcnJvclZh
bHVlKTsKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGZhaWx1cmVLaW5kVmFsdWUgPSBvYmplY3Qt
PmdldERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0
YSkuYnVpbHRpbk5hbWVzKCkuZmFpbHVyZUtpbmRQcml2YXRlTmFtZSgpKSkgewpAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgICAgICAgICBMb2FkYWJsZVNj
cmlwdDo6Q29uc29sZU1lc3NhZ2UgewogICAgICAgICAgICAgICAgIE1lc3NhZ2VTb3VyY2U6OkpT
LAogICAgICAgICAgICAgICAgIE1lc3NhZ2VMZXZlbDo6RXJyb3IsCi0gICAgICAgICAgICAgICAg
cmV0cmlldmVFcnJvck1lc3NhZ2UoKmV4ZWMsIHZtLCBlcnJvclZhbHVlLCBzY29wZSksCisgICAg
ICAgICAgICAgICAgcmV0cmlldmVFcnJvck1lc3NhZ2UoKmNhbGxGcmFtZSwgdm0sIGVycm9yVmFs
dWUsIHNjb3BlKSwKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTZiZTdjODI1MjBiMmY3OGI5OGYwZTg1ZjAw
MDIyYzgzNGVmZGRmYy4uZGQxM2M3ZDMzMTEyMjk3M2NhYmRkMzViMzYyZTVlM2JhNzEwYmM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAt
NDAsMTAgKzQwLDExIEBAIE9CSkNfQ0xBU1MgV2ViU2NyaXB0T2JqZWN0Owogc3RydWN0IE5QT2Jq
ZWN0OwogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFz
cyBKU01vZHVsZVJlY29yZDsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogbmFtZXNw
YWNlIEJpbmRpbmdzIHsKIGNsYXNzIEluc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAppbmRleCBhNjA2NmY0Y2UzOTk5OTZjNjU0ZGI2
MDNjMGE0NzI0ZGQwODQwMzY4Li4yNzlmNjJmYzlmMTk4MzFhMmE2MTI1MDc3ZDY5MmY1ODEwZGZj
ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuaApAQCAtMzQsMTEgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpT
SW50ZXJuYWxQcm9taXNlOwogY2xhc3MgSlNNb2R1bGVMb2FkZXI7CiBjbGFzcyBTb3VyY2VPcmln
aW47Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggMTUzODRhNzExZjM1NmNlZTQ3OGNhOTllMjU1
NWIxZWVhMjQ4MmFkMi4uN2NhNWY4OGZiZmFjOTUwNzYzNDM3NGQzNWY1MTVhYzc5N2M0YTBhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw4
IEBACiAjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Citj
bGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwCmluZGV4IDNhMzhhYzVlYzZhMjMwMTFiZGIxMTFlYTAxNjEyOGE1YjNiZmU1NzMu
LmE2ZGE2MzkzZjAwNzJmM2JkMzNjZjYyYWFmOGY5OGIwZmI1YmM5NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcApAQCAtMzksMTUgKzM5LDEz
IEBAIGVudW0gY2xhc3MgQ2xvbmVNb2RlIHsKICAgICBQYXJ0aWFsLAogfTsKIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVmZmVySW1wbChFeGVjU3RhdGUqLCBDbG9u
ZU1vZGUpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXJJ
bXBsKEV4ZWNTdGF0ZSogc3RhdGUsIENsb25lTW9kZSBtb2RlKQorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGNsb25lQXJyYXlCdWZmZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4
ZWNTdGF0ZSogc3RhdGUsIENsb25lTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChzdGF0ZSk7CiAg
ICAgQVNTRVJUKHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwotICAgIEFTU0VSVChzdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBBU1NFUlQoc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSA9PSBnbG9iYWxPYmplY3QpOwogCi0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8qIGJ1ZmZlciA9IHRvVW5zaGFy
ZWRBcnJheUJ1ZmZlcih2bSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC01OCw2MCArNTYsNjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFy
cmF5QnVmZmVySW1wbChFeGVjU3RhdGUqIHN0YXRlLCBDbG9uZU1vZGUgbW8KICAgICAgICAgQVNT
RVJUKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPT0gMyk7CiAgICAgICAgIGludCBzcmNCeXRlT2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9OdW1i
ZXIoc3RhdGUpKTsKICAgICAgICAgaW50IHNyY0xlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvTnVtYmVyKHN0YXRlKSk7Ci0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgYnVmZmVyLT5zbGljZShzcmNCeXRlT2Zmc2V0LCBzcmNC
eXRlT2Zmc2V0ICsgc3JjTGVuZ3RoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1
ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgYnVmZmVyLT5z
bGljZShzcmNCeXRlT2Zmc2V0LCBzcmNCeXRlT2Zmc2V0ICsgc3JjTGVuZ3RoKSkpOwogICAgIH0K
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS0+
dm0oKSwgc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUo
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCksIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQp
LCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5n
dGgoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjbG9uZUFycmF5QnVm
ZmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNsb25l
QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXJJbXBsKHN0YXRlLCBDbG9uZU1v
ZGU6OlBhcnRpYWwpOworICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVySW1wbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgQ2xvbmVNb2RlOjpQYXJ0aWFsKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlckltcGwoc3RhdGUsIENsb25lTW9kZTo6RnVsbCk7
CisgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXJJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCBDbG9uZU1vZGU6OkZ1bGwpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNT
RVJUKHN0YXRlKTsKLSAgICBBU1NFUlQoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgQVNT
RVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsK
IAotICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8qIGJ1ZmZlclZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0s
IHZhbHVlKTsKICAgICBBU1NFUlQoYnVmZmVyVmlldyk7CiAKICAgICBhdXRvKiBidWZmZXIgPSBi
dWZmZXJWaWV3LT51bnNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgdGhyb3dEYXRh
Q2xvbmVFcnJvcigqc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcigq
Y2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGF1dG8g
YnVmZmVyQ2xvbmUgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBidWZmZXJWaWV3
LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNJbnQ4QXJyYXkqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50OEFycmF5Ojpj
cmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0ludDhBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBX
VEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3
LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50MTZBcnJheSo+KHZtLCB2
YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQxNkFycmF5OjpjcmVh
dGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5
dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0ludDE2QXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUsIHN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2bSwgdmFs
dWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MzJBcnJheTo6Y3JlYXRl
KHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRl
T2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNJbnQzMkFycmF5OjpjcmVhdGUoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNVaW50OEFycmF5Kj4odm0sIHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4QXJyYXk6OmNyZWF0ZShz
dGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9m
ZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVWludDhBcnJheTo6Y3JlYXRlKGNhbGxGcmFtZSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5n
dGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVWludDhDbGFtcGVkQXJyYXkqPih2bSwg
dmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVy
Vmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShjYWxsRnJhbWUs
IHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQx
NkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Vp
bnQxNkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSks
IGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQxNkFycmF5OjpjcmVhdGUoY2FsbEZyYW1l
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0
KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNVaW50
MzJBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNV
aW50MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUp
LCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50MzJBcnJheTo6Y3JlYXRlKGNhbGxGcmFt
ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNl
dCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRmxv
YXQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Zsb2F0MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDMyQXJyYXk6OmNyZWF0ZShjYWxs
RnJhbWUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U0Zsb2F0NjRBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5OjpjcmVhdGUo
Y2FsbEZyYW1lLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNEYXRhVmlldyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNEYXRhVmlldzo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNEYXRhVmlldzo6Y3JlYXRlKGNhbGxGcmFt
ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNl
dCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmgKaW5kZXggYTZlNGY4MzA2MzNlYWM4
MzZmMDI4OTE2NzlhOGI1YjNkYTBiZjcxNS4uMjQ2NmI5Zjc1ZTdmMDZiZDM1YWE0NzM2OWI2Yzdj
ZDAwMDBhMDdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0
dXJlZENsb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENs
b25lLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICovCiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3Mg
Q2FsbEZyYW1lOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiB1c2luZyBFbmNvZGVkSlNWYWx1ZSA9
IGludDY0X3Q7Ci1jbGFzcyBFeGVjU3RhdGU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9u
ZUFycmF5QnVmZmVyVmlldyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNsb25lQXJyYXlCdWZmZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJl
ZENsb25lQXJyYXlCdWZmZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlC
dWZmZXJWaWV3KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGNjMDI4YzI1MTNhYjE4Y2U1MDU3NmNmNjg3OWY2
Zjc3NDE4OTc3N2UuLjA4NzYxNzk5NjFhNTU3MmI4NDFiNjg3NzMxYjQyNzk5NmIzNTE4OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25k
aXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShK
U0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAg
ICB9CiAKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYg
KEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIvLyBDdXN0b20gY29uc3RydWN0b3JcbiIpOwotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7
Y2xhc3NOYW1lfShKU0M6OkV4ZWNTdGF0ZSYpO1xuXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9KEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSYpO1xuXG4iKTsKICAgICB9CiAKICAgICBp
ZiAoTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CkBAIC0zOTcwLDcgKzM5
NzAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0
cmlidXRlKSA6IHVuZGVmOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUq
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopO1xuIik7CiAgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkbmFtZU9mRnVuY3Rp
b25XaXRob3V0VHlwZUNoZWNrID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9u
TmFtZSkgLiAiV2l0aG91dFR5cGVDaGVjayI7CkBAIC01MTg2LDggKzUxODYsOSBAQCBzdWIgR2Vu
ZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbgogICAgIHB1c2goQGNhbGxGdW5jdGlv
blRlbXBsYXRlQXJndW1lbnRzLCAiUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjoke2V4cG9zdXJlU2Nv
cGV9IikgaWYgJGhhc1Byb21pc2VSZXR1cm5UeXBlICYmICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntSZXR1cm5zT3duUHJvbWlzZX07CiAgICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVt
cGxhdGVBcmd1bWVudHMsICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0IikgaWYgKCRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtm
dW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiAke2lkbE9wZXJhdGlvblR5cGV9PCR7Y2xhc3NOYW1lfT46OiR7Y2FsbEZ1bmN0aW9u
TmFtZX08IiAuIGpvaW4oIiwgIiwgQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1lbnRzKSAuICI+
KCpzdGF0ZSwgXCIiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJcIik7XG4iKTsKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQpAQCAtNTQ3NCw4ICs1NDc1LDkgQEAgc3ViIEdlbmVy
YXRlU2VyaWFsaXplckRlZmluaXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTJHtpbnRlcmZhY2VOYW1lfTo6c2VyaWFsaXplKCpzdGF0ZSwg
KnRoaXNPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpO1xu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlc
biIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKUyR7aW50ZXJmYWNlTmFtZX0+OjpjYWxsPCR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFt
ZX1Cb2R5Pigqc3RhdGUsIFwiJHtzZXJpYWxpemVyRnVuY3Rpb25OYW1lfVwiKTtcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIp
OwpAQCAtNTUyMiwxMyArNTUyNCwxMyBAQCBzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0
aW9ucwogCiAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gImNhbGwke2NsYXNz
TmFtZX0iOwogCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtvdmVybG9hZEZ1bmN0aW9uUHJlZml4fShFeGVjU3RhdGUqIHN0YXRlKVxu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgJHtvdmVybG9hZEZ1bmN0aW9uUHJlZml4fShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwog
Ci0gICAgICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKCRsZWdhY3lDYWxsZXJzWzBdLCAk
aW50ZXJmYWNlLCAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCwgIiIsICJzdGF0ZSIpOworICAgICAg
ICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcigkbGVnYWN5Q2FsbGVyc1swXSwgJGludGVyZmFj
ZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAiZ2xvYmFsT2JqZWN0LCBzdGF0ZSIpOwog
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgfSBlbHNlIHsKQEAg
LTU1NDksMTMgKzU1NTEsMTMgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgog
CiAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9w
ZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICBpZiAoJGlzT3ZlcmxvYWRlZCkgewotICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNh
bGwke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0
ZSlcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNhbGwke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpXG4iKTsKICAgICB9CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCkBAIC02NDIzLDggKzY0MjUs
OSBAQCBFTkQKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQp
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtm
dW5jdGlvbk5hbWV9KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248JHtjbGFzc05hbWV9Pjo6Y2FsbDwke2Z1bmN0aW9uTmFtZX1DYWxs
ZXI+KCpzdGF0ZSwgIiR7cHJvcGVydHlOYW1lfSIpOwogfQogCkBAIC03MTg2LDEzICs3MTg5LDEz
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIAogICAgICAgICAgICAgbXkg
JG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKIAotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUq
IHN0YXRlKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4g
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpXG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAg
ICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3Jz
fVswXSwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAic3RhdGUiKTsK
KyAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKEB7JGludGVyZmFjZS0+Y29u
c3RydWN0b3JzfVswXSwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAi
Z2xvYmFsT2JqZWN0LCBzdGF0ZSIpOwogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMgPT0gMSkgewpAQCAtNzIx
NiwyMSArNzIxOSwyMiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAogICAg
IGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNvbnN0cnVjdG9yfSkgewotICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdChKU0M6OkV4ZWNT
dGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxh
dGU8PiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX06OmNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGV4ZWMp
O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGNvbnN0
cnVjdCR7Y2xhc3NOYW1lfSgqZXhlYyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBBU1NFUlQoc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gY29uc3RydWN0JHtjbGFzc05hbWV9KGds
b2JhbE9iamVjdCwgKnN0YXRlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAifVxuXG4iKTsKICAgICAgICAgIH0gZWxzaWYgKCFIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50
ZXJmYWNlKSAmJiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3Ry
dWN0b3J9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikpIHsKICAgICAgICAgICAgIG15
ICRpc092ZXJsb2FkZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRvcGVyYXRpb24t
PntvdmVybG9hZHN9fSA+IDE7CiAgICAgICAgICAgICBpZiAoJGlzT3ZlcmxvYWRlZCkgewotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4
ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSRvcGVy
YXRpb24tPntvdmVybG9hZEluZGV4fShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKVxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUp
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKVxuIik7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2FsbGVl
KCkpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU01hcExpa2UuY3BwCmluZGV4IDlkYTBkZWRkNGUzODlhYjhhYjhmNWRhY2MzM2RmNjVl
ZWJkMjk0ZGEuLjljMzg5OTUyMTRmYzA1MmFlZjMxOGI0OGQyYmY1MGVjMjk2NDcwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExp
a2UuY3BwCkBAIC00NSwxNSArNDUsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkdldChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkFkZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkRlbGV0ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25WYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXIoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjIyLDggKzIy
Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkdldEJvZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBX
VEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8
anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5Pigqc3RhdGUsICJnZXQiKTsKIH0KIApA
QCAtMjM4LDggKzIzOSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0JvZHkoSlNDOjpFeGVjU3RhCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFw
TGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5Pigqc3RhdGUsICJo
YXMiKTsKIH0KIApAQCAtMjUwLDggKzI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5KEpTQzo6RXhlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0Jv
ZHk+KCpzdGF0ZSwgImVudHJpZXMiKTsKIH0KIApAQCAtMjYyLDggKzI2NSw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNC
b2R5KEpTQzo6RXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
Zm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
S2V5c0JvZHk+KCpzdGF0ZSwgImtleXMiKTsKIH0KIApAQCAtMjc0LDggKzI3OCw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZh
bHVlc0JvZHkoSlNDOjpFeGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFs
dWVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzQm9keT4oKnN0YXRlLCAidmFsdWVzIik7CiB9CiAKQEAgLTI5MCw4ICsy
OTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25Gb3JFYWNoQm9keShKU0M6OkV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRo
aXMsIFdURk1vdmUoY2FsbGJhY2spKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keT4o
KnN0YXRlLCAiZm9yRWFjaCIpOwogfQogCkBAIC0zMDYsOCArMzEyLDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkQm9keShK
U0M6OkV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkFkZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkFkZEJvZHk+KCpzdGF0ZSwgImFkZCIpOwogfQogCkBAIC0zMTksOCArMzI2LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uQ2xlYXJCb2R5KEpTQzo6RXhlY1MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uQ2xlYXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyQm9keT4oKnN0YXRlLCAiY2xlYXIiKTsKIH0K
IApAQCAtMzM1LDggKzM0Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHkoSlNDOjpFeGVjCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGVC
b2R5Pigqc3RhdGUsICJkZWxldGUiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKaW5k
ZXggNzQ3ODk1OTMxMjI2MTI2ZWIzMTE4MTc5YjU4ODZkNjk0MDM1MmRhOC4uY2ZhMjgxMDEzYzFi
YTFlMDZhZjdmYjA5YTJiZTIzYTQ2MGE4NDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3Bw
CkBAIC00NSwxMiArNDUsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25z
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uR2V0KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbktleXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uR2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25IYXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbktleXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvblZhbHVlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAog
Ly8gQXR0cmlidXRlcwogCkBAIC0yMTYsOCArMjE2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KEpT
QzoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkR2V0VG9N
YXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
R2V0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0Qm9keT4oKnN0YXRlLCAiZ2V0Iik7CiB9
CiAKQEAgLTIzMiw4ICsyMzMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0JvZHkoSlNDOgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRl
LCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5Pigqc3RhdGUsICJoYXMiKTsKIH0KIApAQCAtMjQ0LDgg
KzI0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0JvZHkoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVk
VGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzQm9keT4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCkBAIC0yNTYsOCArMjU5LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25LZXlzQm9keShKU0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlr
ZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNCb2R5Pigqc3Rh
dGUsICJrZXlzIik7CiB9CiAKQEAgLTI2OCw4ICsyNzIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0Jv
ZHkoSgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1
ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRP
bmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keT4oKnN0YXRlLCAidmFsdWVzIik7
CiB9CiAKQEAgLTI4NCw4ICsyODksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5KAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9NYXBMaWtl
KCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNh
bGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5Pigqc3RhdGUs
ICJmb3JFYWNoIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
N2UzOWYwZDJiNzk1OTFhNjk0MTAzZDQwODRkMzU1NjM5ZjZkNjY4Zi4uYTE0NzdlMTJlZmRiNmY0
ZmJjOTIzMTk2ZjM2YWM1NTQzMzU1YWI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01P
YmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjI3LDggKzIyNyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvbkV4Y2l0aW5nCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxsPGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkJvZHk+
KCpzdGF0ZSwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKIH0KIApAQCAtMjQ1LDggKzI0Niw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvblBvc3RNZXNzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHk+KCpzdGF0ZSwgInBvc3RN
ZXNzYWdlIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDk0YmFhZjRmYmY5
NWYwOTA5OGQ2NmY3ZTAxOGViZGQ3MjZkMmRlZmIuLjMwZTRkOGQ1YTgwYjVlNzBlNGYzZGNiZDMw
NzU4MDFkN2U5YmVlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtNDcsOCArNDcs
OCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ0VSZWFjdGlvbnMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDRVJlYWN0aW9ucyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTQxNiw4
ICs0MTYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFj
dGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9u
cz46OmNhbGw8anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJl
YWN0aW9uc0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9ucyIpOwogfQogCkBAIC00
MzEsOCArNDMyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENF
UmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0UKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlv
bnNOb3ROZWVkZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9u
c05vdE5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWRCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IDhiMTk5NWZiNjllZWY2NWE4ZDEzOGQ2YzMy
OTcwMjJmNGU3NTYxMGMuLjM4ZDQxZjM1ZTFiZTYzODNjMTI4NGQwNzlmODFjZjliNjEyNWEwMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI1Niw4ICsyNTYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1
bmN0aW9uVAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgaW1wbC52YWx1ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXI+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCmluZGV4IDc1OWU5MGJiNTI3ZDY1ZDIxMmMxM2U5ZTM0ZDQ4NjY0ZmQzNDk1ZmEu
LjZjMDNmNDc2MjczMDk1YjM0NTNiNGJjOTAwNTllYjMyMzRhYTdjOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKQEAgLTUxLDE0ICs1MSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25JbnRlcmZhY2UoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50
QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE9w
dGlvbmFsVmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uVGVzdE9wZXJhdGlvbkludGVyZmFjZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRo
QXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRB
cmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0
aW9uYWxWYXJpYW50QXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTM1Myw4ICszNTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbklu
dGVyZmFjZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RD
YWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uSW50ZXJmYWNlQm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSIpOwog
fQogCkBAIC0zNjksOCArMzcwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb24KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRp
b25TcGVjaWZpZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvblNwZWNpZmll
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvblNwZWNpZmllZEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25TcGVjaWZpZWQi
KTsKIH0KIApAQCAtMzkzLDggKzM5NSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHNCb2R5Pigqc3RhdGUsICJ0ZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50cyIpOwogfQogCkBAIC00MTMsOCArNDE2LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
blRlc3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFj
ZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25X
aXRoTnVsbGFibGVBcmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFi
bGVBcmd1bWVudCIpOwogfQogCkBAIC00MzMsOCArNDM3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVy
YXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvblRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRB
cmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50Iik7
CiB9CiAKQEAgLTQ1Myw4ICs0NTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJh
dGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2Fs
bDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aE51bGxh
YmxlVmFyaWFudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZVZhcmlhbnRBcmd1bWVudCIpOwogfQogCkBAIC00NzEsOCArNDc3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvblRl
c3RPcGVyYXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5
cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0Q2FsbFRyYWNlcj46OmNhbGw8anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudEJvZHk+KCpzdGF0ZSwgInRlc3RP
cGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiKTsKIH0KIApAQCAtNDg5LDggKzQ5
Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJp
YW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZh
dWx0VmFyaWFudEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnRCb2R5
Pigqc3RhdGUsICJ0ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQiKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcAppbmRleCA1YWVmZDY5YTU0ZDFlMzBhZWFkYTA1MDQ3NGQ4YWU4Y2U1
Y2Q4YjYyLi42MTI3ZDhlMTQ3ZTdhNGI5Nzg5NDQ5NTg3YjBlODU4NDY4YTdmYzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklU
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RE9NSklULmNwcApAQCAtNTQsMTUgKzU0LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZVdpdGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RE
T01KSVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4pOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SXRlbShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1XaXRob3V0VHlwZUNoZWNrKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExVbnNpZ25l
ZFNob3J0PiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExVbnNpZ25lZFNob3J0Pik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0
ZVdpdGhvdXRUeXBlQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRC
eUlkV2l0aG91dFR5cGVDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJ
VDo6SURMSlNBcmd1bWVudFR5cGU8SURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9y
PElETERPTVN0cmluZz4+KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lV2l0aG91dFR5cGVDaGVjayhKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURM
QXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4pOwogCiAvLyBBdHRyaWJ1dGVzCkBAIC0x
MTI1LDggKzExMjUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5KAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwu
Z2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5Pigqc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsK
IH0KIApAQCAtMTE1Nyw4ICsxMTU4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDOjpFeGUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaXRl
bShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVt
Qm9keT4oKnN0YXRlLCAiaXRlbSIpOwogfQogCkBAIC0xMTg1LDggKzExODcsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25I
YXNBdHRyaWJ1dGVCb2R5KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29s
ZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVCb2R5Pigqc3RhdGUsICJoYXNBdHRyaWJ1dGUiKTsKIH0K
IApAQCAtMTIxMyw4ICsxMjE2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRCb2QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVs
ZW1lbnRJZCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudEJ5SWRCb2R5Pigqc3RhdGUsICJnZXRFbGVtZW50QnlJZCIpOwogfQogCkBAIC0x
MjQzLDggKzEyNDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1l
bnROYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50c0J5TmFtZUJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRzQnlOYW1lIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCA4OWRiNjQ0NThj
NzlhOTJiODQ3ODQwYjU5NTJjZTAxOGE4ZTFmMmQxLi41OTU3YjYzZTQwMTMxM2Q4MGVjY2M0MTgx
NzA0NGM5YTgxMzI1MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRp
bmdPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5k
aWYKIAogLy8gQXR0cmlidXRlcwpAQCAtMjk3LDggKzI5Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+Ojpj
YWxsPGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRp
bmdPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBiNmQ4ZDVjMjExNjI0
NDVjMWQxZjFjMTk2NWMyN2E1ODhiMTY2ODU1Li41NTRlYzhhMGQzYjdjZTc5NDEwMjk3ZmY3MGM2
YTZlMWE0Y2RlM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0x
NTMsOSArMTUzLDkgQEAgY2xhc3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogCiB1c2luZyBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+
OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0
ZS0+anNDYWxsZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA0MTJlNjVmMjhi
ZDQ4NzFiYTBkN2M2NzRlNzI3NDJjZjg5NjZmZDk0Li5iYzYwNWY3MDFiODEwYTk3NTM2ZGNhNjE3
ZTllMzIyOTcwZjM2NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9u
SXRlbShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI0Niw4ICsyNDYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5KEpTQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLml0ZW0oV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6Y2FsbDxqc1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHk+KCpzdGF0ZSwgIml0ZW0iKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCAyZmI1ZjYwZDA0M2I1Njg1MmJiZjkxYWFiZjAw
NDE4N2EwMmYzODRmLi5kNzgxMjg1ZDZlZDQwZWI0ODFkZWE2MDdmMGVhZjczMzc4NGQ2YTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMTIwLDIzICsxMjAsMjMgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJh
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZp
Y1dvcmxkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blRlc3RQcml2YXRlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFBy
aXZhdGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNl
bmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
VGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
blRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKICNlbmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC0yNTA4LDggKzI1MDgsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb25Cb2R5Pigqc3RhdGUsICJy
ZWd1bGFyT3BlcmF0aW9uIik7CiB9CiAKQEAgLTI1NjMsOCArMjU2NCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEF0UnVuCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0
YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogfQogCkBAIC0yNTgzLDggKzI1ODUs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25T
dGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b25TdGF0aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGxTdGF0aWM8anNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3Rh
dGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7CiB9CiAKQEAgLTI2MDMsOCAr
MjYwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZChF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZEJvZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGQiKTsKIH0KIApA
QCAtMjYyMSw4ICsyNjI1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGUKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJ
blNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQm9keT4oKnN0YXRlLCAiZW5h
YmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKTsKIH0KIApAQCAt
MjYzOSw4ICsyNjQ0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkQm9keT4oKnN0YXRlLCAiZW5h
YmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkIik7CiB9CiAKQEAg
LTI2NTQsOCArMjY2MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5j
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZh
dGVGdW5jdGlvbkJvZHksIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwg
InRlc3RQcml2YXRlRnVuY3Rpb24iKTsKIH0KIApAQCAtMjY3MCw4ICsyNjc3LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25DYWxjdWxhdGVTZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdEJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T25seT4oKnN0YXRlLCAi
Y2FsY3VsYXRlU2VjcmV0UmVzdWx0Iik7CiB9CiAKQEAgLTI2ODMsOCArMjY5MSw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uR2V0U2VjcmV0Qm9vCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJv
b2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJv
b2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9i
amVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJv
b2xlYW5Cb2R5Pigqc3RhdGUsICJnZXRTZWNyZXRCb29sZWFuIik7CiB9CiAKQEAgLTI2OTcsOCAr
MjcwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNh
bGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CmluZGV4IGYxY2U5ZWU0Njk3Njk0MTUyY2IzMzY2Mzg1YmQ1NTNjMDUxZTVmZWQuLmY1Zjg2N2M0
NGY1YTlkOTZiZjA2ZGRjM2YxYTRjNGMxN2M5YTU1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
RnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI3Niw4ICsyNzYsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlRnVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVkU2V0dGVyIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggYzAzZDc4YjZiNmU1YmNjZWJjZWMwYmRl
NTFmYjY0NGM1Y2QwYWM1MS4uZDQ1YWQwNmZlZDI1NmQ5MGYwNGJlN2RkZDc4MTFhODdlMTViOWFj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTY4LDMxICs2OCwzMSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uVGFrZU5vZGVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQoSlNDOjpFeGVjU3RhdGUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC0yNDQsOSArMjQ0
LDkgQEAgc3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFO
VDEgPT0gMSwgIlNVUFBMRU1FTlRBTENPTlNUQU4KIHN0YXRpY19hc3NlcnQoVGVzdFN1cHBsZW1l
bnRhbDo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0U3VwcGxlbWVudGFsIGRv
ZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYKIAotdGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtODczLDggKzg3Myw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkltcGxlbWVudHNNZXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMUJvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRo
b2QxIik7CiB9CiAKQEAgLTg5OCw4ICs4OTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpz
dGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmltcGxl
bWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDJCb2R5Pigqc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogfQog
CkBAIC05MTMsOCArOTE1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGgKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVudHNNZXRob2QzKCpzdGF0ZSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkltcGxlbWVudHNNZXRob2QzQm9keT4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDMiKTsK
IH0KIApAQCAtOTI5LDggKzkzMiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01lCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50
c01ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRl
cmZhY2U+OjpjYWxsU3RhdGljPGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kNEJvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRob2Q0Iik7CiB9CiAKQEAg
LTk0Niw4ICs5NTAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5KAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+Pigqc3RhdGUs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShpbXBsUmVzdWx0Lm5vZGVzKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJ
bnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVz
Qm9keT4oKnN0YXRlLCAidGFrZU5vZGVzIik7CiB9CiAKQEAgLTk2Myw4ICs5NjgsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJzdXBwbGVt
ZW50YWxNZXRob2QxIik7CiB9CiAKQEAgLTk4OCw4ICs5OTQsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBX
ZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpjb250
ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxN
ZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJm
YWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDJCb2R5Pigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiB9CiAKQEAgLTEwMDMs
OCArMTAxMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1lCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKCpzdGF0ZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRh
bE1ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2QzQm9keT4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMyIp
OwogfQogCkBAIC0xMDE5LDggKzEwMjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBs
ZW1lbnRhbE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEludGVyZmFjZT46OmNhbGxTdGF0aWM8anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvZDRCb2R5Pigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2Q0
Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDc0Zjg0NzVjOTJkZDJlNmI3ZjVhNTVi
MTcwNDdhNDY3YzMwYWVmYzIuLjg3YTg4MWQ0NTQ4ZTkyNGMzMzYxNGRjN2FlNDAxNzYzNzRlMGI1
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtNDIsMTEgKzQyLDExIEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRl
cmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
S2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlw
ZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmll
cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTE5OCw4ICsxOTgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyKEV4ZWNTdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdEl0ZXJhYmxlSXRlcmF0b3I+KCp0aGlz
T2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlND
OjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+
OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyPigqc3Rh
dGUsICJlbnRyaWVzIik7CiB9CiAKQEAgLTIwOCw4ICsyMDksOSBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyKEV4
ZWNTdGF0ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdEl0
ZXJhYmxlSXRlcmF0b3I+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpLZXkpKTsKIH0KIAot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBl
RnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEl0ZXJhYmxlPjo6Y2FsbDxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0Nh
bGxlcj4oKnN0YXRlLCAia2V5cyIpOwogfQogCkBAIC0yMTgsOCArMjIwLDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVz
Q2FsbGVyKEV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRl
PFRlc3RJdGVyYWJsZUl0ZXJhdG9yPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWUp
KTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25W
YWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNhbGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVG
dW5jdGlvblZhbHVlc0NhbGxlcj4oKnN0YXRlLCAidmFsdWVzIik7CiB9CiAKQEAgLTIyOCw4ICsy
MzEsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJhYmxlUHJvdG90
eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEV4ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoaXRlcmF0b3JGb3JFYWNoPFRlc3RJdGVyYWJsZUl0ZXJhdG9yPigqc3RhdGUsICp0aGlzT2Jq
ZWN0LCB0aHJvd1Njb3BlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNhbGw8anNUZXN0
SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpzdGF0ZSwgImZvckVhY2gi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NTdkNDBmZWVhMWQ3YzE0NGQzMDQxYzdjNWEzYTE0MzFhYTAxMDllMy4uYjM2NTdlZDhhZjliZDEz
YjkyYmRmNGVkNDk1NDE3MTkyY2YyNjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMK
IApAQCAtMjI2LDggKzIyNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKnN0YXRlKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cj46OmNhbGw8anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21GdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggYzkyMDY1
ZGM5NWY3MzIyY2QwOGJjMjdmNjFkZGE3ZWNlZjAxZmFjOC4uOTNjMWY0YjlkYWIzOGEyN2ZkZWUy
MzU5NzA0OTg5YzJlNDUwYmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAv
LyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0xODQsOCArMTg0LDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGVGdW5jdGlvbk0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpjYWxs
PGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZEJvZHk+
KCpzdGF0ZSwgIm1ldGhvZCIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA3MzU0N2FiOTc2
OGRiMmJjOWU4ZWNhNWMwZTRjYTMxODgxNWViOGFhLi40OGI3Y2NhZmJiMTdkZjU0NGE2M2YyNjc0
NDMwNjAzODY4MTI4ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zNDYsOCArMzQ2LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5Pigq
c3RhdGUsICJuYW1lZFNldHRlciIpOwogfQogCkBAIC0zNjYsOCArMzY3LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXJCb2R5Pigqc3RhdGUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAppbmRleCA2ZTk4Zjc2MDY3NGUwYmEwMzM2MmVkOGQ5MDI0MDI4Njdk
MGM4NWUxLi41YjIzMWRiNjkwYzk3NDVlN2U4OGYxNGRiY2U0OWE2ZmIyMzAzODdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC04OCw5ICs4OCw5IEBAIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwKIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxs
ZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAppbmRleCBhNGY2ZDgyMzNiMGRhMDAzZWMyZjI4ODcwMjVjNjE0MmM0N2RiZDczLi44M2Q3
Zjk5M2FhZWViNGQwNTZkMzNhMWRiMjQyOGY0YmNjMmY1YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZUZ1bmN0aW9uTmFtZWREZWxldGVyKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkRGVsZXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0yNTcsOCArMjU3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZERlbGV0ZXJCb2R5Pigqc3RhdGUsICJuYW1lZERlbGV0ZXIiKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGMz
OTFmMmY4Yjk1YThhMjg0MGJkNzQ0YTFhZTVlMjdjZjc3MDFlZWUuLjNhNDg5ZTFiNGIwODFhZjky
NWIzMDlkNjViNjYxNGY0YWZiYjdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJO
YW1lKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFt
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0yMzIsOCArMjMyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuZ2V0dGVy
TmFtZShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHk+KCpzdGF0ZSwgImdldHRlck5hbWUi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCmluZGV4IDU3YWU0YWUzZDk1NmYyZTRiMTA2N2YyYTY4MjkwN2IwOTA3NzNmMWIuLjhlNDIy
NGNhMmMyOGJmMTZlMGE4MDc1ZjVhOTVmMzE4N2EyNTk1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
CiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTI5OCw4ICsyOTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxs
PGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyQm9keT4oKnN0YXRlLCAibmFtZWRTZXR0ZXIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDU3NTc4NTc3ZmU3
NGY0ZmMxNDZhMzQ2YjY3NGFkODkxYWUxNGY0MzEuLjhlNDM0YjkwOGY4ODZmZWUxZDZmYmNmZjZm
ZDk0NGVmNjVjNGNlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4
ZWRTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25O
YW1lZFNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTMyMyw4ICszMjMsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKnN0YXRlLCAibmFtZWRT
ZXR0ZXIiKTsKIH0KIApAQCAtMzQwLDggKzM0MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlw
ZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2Fs
bDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRl
eGVkU2V0dGVyQm9keT4oKnN0YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5jcHAKaW5kZXggMzUyYzg2NTQ0MzQxY2MzMjE0ODdjZDJmNzVhNTlmNThkOGNhNDFhNy4u
MzE5NzNmZDRjNGQzM2UyOTk1OTgzOWY2ZDVlNWEwMTllZjE1NmVlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcApAQCAtNDQsOCArNDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5j
dGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVy
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9u
SW5kZXhlZFNldHRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90
b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMzQ2LDggKzM0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5Pigqc3RhdGUsICJuYW1l
ZFNldHRlciIpOwogfQogCkBAIC0zOTAsOCArMzkxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQ
cm8KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlck92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0
YXRlLCAiaW5kZXhlZFNldHRlciIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRleCAxMjczZmQ2
ZjFiYWM4ZWUyZTkxYWE5MTU4OTU1N2VjMTRlOWI4MTQwLi5mNmJmMjYzZTZmNTg2ZjgxNDg1Zjk3
NWVlYWVmZjJiZDM2MTI0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAK
QEAgLTMzNiw4ICszMzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpz
dGF0ZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggOTgzYmYzNGYwYjFjMDFhNDcz
NTNmN2EwZTdlOWI2ZmMxZDM2YzlkYi4uOGQ0MjdmZGY3MzUwMjFmNzJkZDdmODA2Yjg4Y2FlYzFj
OTc4NzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVy
YXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJp
YnV0ZXMKIApAQCAtMzIzLDggKzMyMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25V
bmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAppbmRleCA4NzA2ZWU1OGQ2ZTdhM2UxMDllMDNjMzIyNDlmMWQxMGRi
YjVjZjFlLi5hMmExODAxNzJiNzMzNWI0MTJmNWZiMWUzMjA3Y2U0N2RhMzA5MzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCkBAIC00OCwxOCArNDgsMTggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNh
bGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVh
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2Rl
UHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9s
SXRlcmF0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC05NSw5ICs5NSw5
IEBAIGNsYXNzIEpTVGVzdE5vZGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogdXNpbmcgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxK
U1Rlc3ROb2RlPjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMzAwLDgg
KzMwMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZShFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25UZXN0V29ya2VyUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQm9keSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFdvcmtlclByb21pc2UiKTsK
IH0KIApAQCAtMzE0LDggKzMxNSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRS
ZXN1bHQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2Vj
cmV0UmVzdWx0Qm9keSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0
YXRlLCAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Iik7CiB9CiAKQEAgLTMyNyw4ICszMjksOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpzdGF0ZSwgImdldFNl
Y3JldEJvb2xlYW4iKTsKIH0KIApAQCAtMzQxLDggKzM0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdl
dFNlY3JlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwu
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RO
b2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKTsKIH0K
IApAQCAtMzY4LDggKzM3Miw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihFeGVjU3RhdGUqCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxUZXN0Tm9kZUl0ZXJhdG9yPigqdGhpc09i
amVjdCwgSXRlcmF0aW9uS2luZDo6VmFsdWUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyPigqc3RhdGUsICJlbnRyaWVzIik7CiB9
CiAKQEAgLTM3OCw4ICszODMsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXIoRXhlY1N0YXRlKiwgSgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8VGVzdE5vZGVJdGVyYXRvcj4oKnRoaXNP
YmplY3QsIEl0ZXJhdGlvbktpbmQ6OktleSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtleXMiKTsKIH0KIApAQCAtMzg4LDgg
KzM5NCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyKEV4ZWNTdGF0ZSosCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShpdGVyYXRvckNyZWF0ZTxUZXN0Tm9kZUl0ZXJhdG9yPigqdGhpc09iamVjdCwgSXRlcmF0
aW9uS2luZDo6VmFsdWUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUp
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVmFsdWVzQ2FsbGVyPigqc3RhdGUsICJ2YWx1ZXMiKTsKIH0KIApAQCAtMzk4LDggKzQw
NSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaENhbGxlcihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShpdGVyYXRvckZvckVhY2g8VGVzdE5vZGVJdGVyYXRvcj4oKnN0YXRlLCAqdGhpc09iamVjdCwg
dGhyb3dTY29wZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2hDYWxsZXI+KCpzdGF0ZSwgImZvckVhY2giKTsKIH0KIApAQCAtNDIwLDggKzQy
OCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OQm9keShFeGVjU3RhdGUqIHN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3ROb2RlOjpzZXJpYWxpemUoKnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09O
Qm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZDgwOTY5ZTA0MDkz
ODY1YmE5NGU0YWFjNzk3ZTJiNzY1ZGI1MmQ5OC4uMjA5MzJlYjM3MTk4ODdjMDIxODJiYjEzOGQ2
ZTc0MGI4MmIxNzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE0MjAsMTc4ICsxNDIwLDE3OCBAQCB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUMgY29udmVydERpY3Rpb25hcnk8
VGVzdE9iajo6Q29uZGl0aW9uYQogLy8gRnVuY3Rpb25zCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QoSlNDOjpF
eGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEpTQzo6RXhlY1N0YXRlKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9u
Z01ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNS
ZXNvbHZlclBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsRW51bUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZ0FuZERlZmF1bHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93cyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0
cmluZ0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5n
QXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJp
bmdBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdB
cmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uUmV0dXJuaW5nTG9uZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvblJldHVybmluZ09iamVjdChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uUHJpdmF0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0
ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZVZvaWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmooSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhT
cGFjZXMoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZ0FuZERlZmF1bHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxVU1ZTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0Fu
ZERlZmF1bHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZ0FuZERlZmF1bHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc1VuZGVmaW5lZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZ0lzTnVsbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxMb25nTG9uZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TG9uZ0xvbmdJc1plcm8oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVu
c2lnbmVkTG9uZ0xvbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVu
c2lnbmVkTG9uZ0xvbmdJc1plcm8oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFNlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZUlzRW1wdHkoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNl
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxQcm9taXNlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxi
YWNrRnVuY3Rpb25BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1
bmN0aW9uQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhB
cmdzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhv
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RX
aXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0
TWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRN
ZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
b25nTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVz
b2x2ZXJQYXJhbWV0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVN0cmluZ01ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFy
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
dGFuZGFsb25lRW51bUFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5n
QXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0Fy
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhC
eXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlv
blJldHVybmluZ0xvbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVu
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVu
dExpc3RlbmVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZVZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoRXhlY1N0YXRlT2JqKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2Jq
RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1l
bnRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJXaW5kb3dBcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERl
ZmF1bHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051
bGwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc0VtcHR5U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmdJc0VtcHR5U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9u
Z0xvbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNp
Z25lZExvbmdMb25nSXNaZXJvKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxCb29sZWFuKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZVdyYXBwZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxSZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpD
YWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhD
YWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8
IEVOQUJMRShDb25kaXRpb24yKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdV
bmlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihKU0M6OkV4ZWNTdGF0
ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01l
dGhvZDIoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlv
bmFsUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vp
c2hpbmdVbmlvbnMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0
aW9uYWxVbmlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25h
bChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2lmIEVOQUJMRShD
b25kaXRpb24xKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKICNlbmRpZgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoVW5zaWduZWRMb25nU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldFNWR0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShKU0M6OkV4ZWNT
dGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBv
aW50RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShKU0M6OkV4ZWNTdGF0ZSop
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
RG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlND
OjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUq
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
Kik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcmNlUmFuZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlG
dW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0
cmluZ0xpc3RGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNl
cXVlbmNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudEJ5SWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRT
VkdEb2N1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01l
dGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
RG91YmxlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFueShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWND
dXN0b21Qcm9taXNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlzZUFuZFBy
b21pc2VQcm94eUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OwogI2lmIEVOQUJMRShDT05ESVRJT04xKSB8fCBFTkFCTEUoQ09ORElUSU9OMikKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsT3ZlcmxvYWQoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jv
b3QoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQ
YXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0M6
OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxE
aWN0aW9uYXJ5UGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnVmZmVyU291cmNlUGFyYW1ldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6
YXRpb25XaXRoRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtl
ckZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTk0MCw5ICsxOTQwLDkgQEAg
c3RhdGljX2Fzc2VydChUZXN0T2JqOjpDT05TVF9WQUxVRV8xNCA9PSAweDFhYmMsICJDT05TVF9W
QUxVRV8xNCBpbiBUZXN0T2JqIGRvZXMKIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfSU1Q
TCA9PSAxNSwgIkNPTlNUX0lNUEwgaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9t
IElETCIpOwogc3RhdGljX2Fzc2VydChUZXN0T2JqOjpyZWFkb25seSA9PSAwLCAicmVhZG9ubHkg
aW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogCi10ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0
cnVjdChFeGVjU3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihz
dGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0yNTA0LDkgKzI1MDQsOSBAQCB2b2lkIEpTVGVzdE9iajo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eQogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc3RhdGUs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGNhbGxKU1Rlc3RPYmoxKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNhbGxKU1Rlc3RPYmoxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTI1MTgs
OSArMjUxOCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEo
RXhlY1N0YXRlKiBzdGF0ZSkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmoyKEV4
ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RP
YmoyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTI1MzEsOSArMjUzMSw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajIoRXhlY1N0YXRlKiBzdGF0ZSkK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sZWdhY3lDYWxs
ZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MoV1RGTW92ZShwYXJhbSkpKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajMoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUtPmpz
Q2FsbGVlKCkpOwpAQCAtMjU0MywyMCArMjU0MywyMCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNhbGxKU1Rlc3RPYmozKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSlNUZXN0T2JqKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxKU1Rlc3RPYmooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBh
cmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwog
ICAgIGlmIChhcmdzQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajMo
c3RhdGUpOworICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajMoZ2xvYmFsT2JqZWN0LCBzdGF0
ZSk7CiAgICAgfQogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRp
c3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgICAgICBp
ZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBjYWxs
SlNUZXN0T2JqMShzdGF0ZSk7Ci0gICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMihzdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gY2FsbEpTVGVzdE9iajEoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7
CisgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMihnbG9iYWxPYmplY3QsIHN0YXRlKTsKICAg
ICB9CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQpA
QCAtNTU0NSw4ICs1NTQ1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXIKICAgICByZXR1cm4g
YXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3Rh
dGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiB9CiAKQEAgLTU1NjUsOCArNTU2Niw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMi
KTsKIH0KIApAQCAtNTU4NSw4ICs1NTg3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3IKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkQm9keT4oKnN0YXRlLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQiKTsKIH0KIApAQCAtNTYwMyw4ICs1NjA2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29y
bGRTcGVjaWZpY01ldGhvZEIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lm
aWNNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNp
ZmljTWV0aG9kQm9keT4oKnN0YXRlLCAid29ybGRTcGVjaWZpY01ldGhvZCIpOwogfQogCkBAIC01
NjE3LDggKzU2MjEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9k
eSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAiY2FsY3Vs
YXRlU2VjcmV0UmVzdWx0Iik7CiB9CiAKQEAgLTU2MzAsOCArNTYzNSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3Jl
dEJvb2xlYW5Cb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJnZXRTZWNyZXRCb29sZWFuIik7
CiB9CiAKQEAgLTU2NDQsOCArNTY1MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbkJvZHk+KCpz
dGF0ZSwgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpOwogfQogCkBAIC01NjYwLDggKzU2
NjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Wb2lkTWV0aG9kQm9keShKU0M6OgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1l
dGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RCb2R5
Pigqc3RhdGUsICJ2b2lkTWV0aG9kIik7CiB9CiAKQEAgLTU2ODIsOCArNTY5MCw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJnc0JvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RX
aXRoQXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQog
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RX
aXRoQXJnc0JvZHk+KCpzdGF0ZSwgInZvaWRNZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC01Njk1
LDggKzU3MDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keShKU0M6OgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2QoKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhv
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keT4oKnN0YXRlLCAiYnl0ZU1ldGhvZCIpOwogfQogCkBA
IC01NzE2LDggKzU3MjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3NCbwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhXVEZN
b3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUs
ICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKIH0KIApAQCAtNTcyOSw4ICs1NzQwLDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0
ZXRNZXRob2RCb2R5KEpTQzoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0
ZXQ+KGltcGwub2N0ZXRNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PY3RldE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0
TWV0aG9kQm9keT4oKnN0YXRlLCAib2N0ZXRNZXRob2QiKTsKIH0KIApAQCAtNTc1MCw4ICs1NzYy
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKG9jdGV0QXJn
KSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAib2N0ZXRN
ZXRob2RXaXRoQXJncyIpOwogfQogCkBAIC01NzYzLDggKzU3NzYsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9k
Qm9keShKU0M6OgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBs
LmxvbmdNZXRob2QoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRo
b2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kQm9keT4o
KnN0YXRlLCAibG9uZ01ldGhvZCIpOwogfQogCkBAIC01Nzg0LDggKzU3OTgsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25n
TWV0aG9kV2l0aEFyZ3NCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25n
PihpbXBsLmxvbmdNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFy
ZyksICpvYmpBcmcpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
b25nTWV0aG9kV2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
b25nTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKIH0K
IApAQCAtNTc5Nyw4ICs1ODEyLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQm9keShKU0M6OkUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2QoKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2JqTWV0aG9kQm9keT4oKnN0YXRlLCAib2JqTWV0aG9kIik7CiB9CiAKQEAg
LTU4MTgsOCArNTgzNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzQm9kCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25n
QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzQm9keT4oKnN0YXRlLCAib2JqTWV0aG9k
V2l0aEFyZ3MiKTsKIH0KIApAQCAtNTgzMSw4ICs1ODQ4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhv
ZEJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC51bmZv
cmdlYWJsZU1ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25V
bmZvcmdlYWJsZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5m
b3JnZWFibGVNZXRob2RCb2R5Pigqc3RhdGUsICJ1bmZvcmdlYWJsZU1ldGhvZCIpOwogfQogCkBA
IC01ODQ5LDggKzU4NjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC01ODY3LDggKzU4ODYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1JlcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQ
YXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVy
Iik7CiB9CiAKQEAgLTU4ODAsOCArNTkwMCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+
KCpzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2RCb2R5Pigqc3Rh
dGUsICJudWxsYWJsZVN0cmluZ01ldGhvZCIpOwogfQogCkBAIC01ODkyLDggKzU5MTMsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbk51bGxhYmxlU3RyaW5nU3RhdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3RyaW5n
U3RhdGljTWV0aG9kKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGlj
PGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZEJv
ZHk+KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kIik7CiB9CiAKQEAgLTU5MDks
OCArNTkzMSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5udWxs
YWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0
cmluZ1NwZWNpYWxNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z1NwZWNpYWxNZXRob2RCb2R5Pigqc3RhdGUsICJudWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2Qi
KTsKIH0KIApAQCAtNTkyNyw4ICs1OTUwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmdCb2QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVu
dW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQm9keT4oKnN0YXRlLCAibWV0
aG9kV2l0aEVudW1BcmciKTsKIH0KIApAQCAtNTk0NSw4ICs1OTY5LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFN0YW5kYWxvbmUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFN0YW5kYWxvbmVFbnVtQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFN0YW5k
YWxvbmVFbnVtQXJnIik7CiB9CiAKQEAgLTU5NjEsOCArNTk4Niw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxFbnVtQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmciKTsKIH0KIApAQCAtNTk3Nyw4ICs2MDAzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW4K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIpOwog
fQogCkBAIC01OTk2LDggKzYwMjMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQm9keT4oKnN0YXRl
LCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogfQogCkBAIC02MDE0LDgg
KzYwNDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoVVNWU3RyaW5nQXJnIik7CiB9CiAKQEAgLTYwMzIsOCArNjA2MSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZVVTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyIpOwogfQogCkBAIC02MDUwLDggKzYwODAsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoVVNWU3RyaW5nQQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJt
ZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogfQogCkBA
IC02MDY4LDggKzYwOTksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0Fy
ZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdCb2R5Pigqc3Rh
dGUsICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyIpOwogfQogCkBAIC02MDg2LDggKzYxMTgsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmdCb2R5
Pigqc3RhdGUsICJtZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnIik7CiB9CiAKQEAgLTYx
MDQsOCArNjEzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3Ry
aW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZyIpOwogfQogCkBAIC02MTIyLDggKzYxNTYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFs
dWVCb2R5KAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
ZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWVCb2R5Pigqc3RhdGUs
ICJzZXJpYWxpemVkVmFsdWUiKTsKIH0KIApAQCAtNjE0MCw4ICs2MTc1LDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFJlY29yZEJvZHkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFJlY29yZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aFJlY29yZCIpOwogfQogCkBAIC02MTU0LDggKzYxOTAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9
CiAKQEAgLTYxNjcsOCArNjIwNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1w
bC5tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZygpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uUmV0dXJuaW5nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25S
ZXR1cm5pbmdMb25nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nTG9uZyIpOwogfQogCkBAIC02MTgwLDggKzYyMTgsOSBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uUgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZh
Y2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QoKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Qm9keT4oKnN0YXRlLCAi
bWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCIpOwogfQogCkBAIC02MTkyLDggKzYy
MzEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2RCb2R5KEpTQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kKCpzdGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kQm9keT4oKnN0YXRlLCAiY3VzdG9tTWV0aG9kIik7CiB9CiAK
QEAgLTYyMDQsOCArNjI0NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRob2RXaXRoQXJncygqc3RhdGUp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9k
V2l0aEFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRo
b2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZFdpdGhBcmdzIik7CiB9CiAKQEAg
LTYyMjEsOCArNjI2Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2RCb2R5KEpTCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnByaXZhdGVNZXRo
b2QoV1RGTW92ZShhcmd1bWVudCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uUHJpdmF0ZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblBy
aXZhdGVNZXRob2RCb2R5LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUs
ICJwcml2YXRlTWV0aG9kIik7CiB9CiAKQEAgLTYyMzgsOCArNjI4MCw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0Fu
ZFByaXZhdGVNZXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKnN0YXRlLCBpbXBsLnB1YmxpY0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5k
UHJpdmF0ZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1Ymxp
Y0FuZFByaXZhdGVNZXRob2RCb2R5Pigqc3RhdGUsICJwdWJsaWNBbmRQcml2YXRlTWV0aG9kIik7
CiB9CiAKQEAgLTYyNjAsOCArNjMwMyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXJCb2R5CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVu
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lckJvZHk+KCpzdGF0ZSwgImFkZEV2ZW50
TGlzdGVuZXIiKTsKIH0KIApAQCAtNjI4Miw4ICs2MzI2LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0
ZW5lckIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVt
b3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyQm9k
eT4oKnN0YXRlLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogfQogCkBAIC02Mjk2LDggKzYzNDEs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEJvZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZChFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhFeGVjU3RhdGVWb2lkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZVZvaWRCb2R5Pigqc3RhdGUsICJ3aXRoRXhlY1N0YXRlVm9pZCIpOwogfQogCkBA
IC02MzA5LDggKzYzNTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqQm9keQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhFeGVjU3RhdGVPYmooKnN0YXRlKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aEV4ZWNTdGF0ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmooSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlT2JqQm9keT4o
KnN0YXRlLCAid2l0aEV4ZWNTdGF0ZU9iaiIpOwogfQogCkBAIC02MzIzLDggKzYzNzAsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoRXhlY1N0YXRlVm9pZEV4YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJ3aXRoRXhl
Y1N0YXRlVm9pZEV4Y2VwdGlvbiIpOwogfQogCkBAIC02MzM2LDggKzYzODQsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
RXhlY1N0YXRlT2JqRXhjZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24oKnN0YXRlKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhFeGVjU3RhdGVPYmpF
eGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRXhlY1N0
YXRlT2JqRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAid2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbiIp
OwogfQogCkBAIC02MzUzLDggKzY0MDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRCb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogfQog
CkBAIC02MzcwLDggKzY0MjAsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kRXhlY1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVCb2R5Pigqc3RhdGUsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSIpOwogfQogCkBAIC02Mzg2LDggKzY0
MzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlT2JqRXhjZXB0aW9uKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbiIpOwogfQogCkBAIC02NDAyLDggKzY0
NTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0
aFNwYWNlcygqc3RhdGUsICpjb250ZXh0KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRo
U3BhY2VzQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGVXaXRoU3BhY2VzIik7CiB9CiAKQEAgLTY0MjEsOCArNjQ3NCw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVu
dEFyZ3VtZW50CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhEb2N1bWVudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1l
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1
bWVudEJvZHk+KCpzdGF0ZSwgIndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CiB9CiAKQEAgLTY0Mzgs
OCArNjQ5Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudEJvZHk+KCpz
dGF0ZSwgIndpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Iik7CiB9CiAKQEAgLTY0NTIsOCArNjUw
Nyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudEJvZHk+KCpzdGF0ZSwgIndpdGhD
YWxsZXJXaW5kb3dBcmd1bWVudCIpOwogfQogCkBAIC02NDY4LDggKzY1MjQsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBcmciKTsKIH0K
IApAQCAtNjQ4NCw4ICs2NTQxLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKQEAgLTY1MDQsOCArNjU2Miw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTY1MjYsOCArNjU4NSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25PcHRpb25hCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJnc0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJncyIpOwogfQogCkBAIC02NTQyLDggKzY2MDIsOSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmci
KTsKIH0KIApAQCAtNjU1OCw4ICs2NjE5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVVNWU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsVVNWU3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7
CiB9CiAKQEAgLTY1NzQsOCArNjYzNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmci
KTsKIH0KIApAQCAtNjU5MCw4ICs2NjUzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKQEAg
LTY2MDYsOCArNjY3MCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKIH0K
IApAQCAtNjYyMiw4ICs2Njg3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNO
dWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNOdWxsQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNO
dWxsIik7CiB9CiAKQEAgLTY2MzgsOCArNjcwNCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZEJvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiB9CiAKQEAgLTY2NTQsOCArNjcy
MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0
cmluZ0lzTnVsbEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051
bGwiKTsKIH0KIApAQCAtNjY3MCw4ICs2NzM4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3QK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogfQogCkBAIC02Njg2
LDggKzY3NTUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVUwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJ
c0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5n
SXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CiAKQEAgLTY3MDIsOCArNjc3
Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1w
dHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CiAKQEAgLTY3MTgsOCArNjc4OSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTkJvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOIik7CiB9CiAKQEAgLTY3MzQsOCAr
NjgwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTkJvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4iKTsKIH0KIApAQCAtNjc1MCw4
ICs2ODIzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsKIH0KIApAQCAtNjc2Niw4ICs2ODQw
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNa
ZXJvQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8iKTsKIH0K
IApAQCAtNjc4Miw4ICs2ODU3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
VW5zaWduZWRMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2ln
bmVkTG9uZ0xvbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsVW5zaWduZWRMb25nTG9uZyIpOwogfQogCkBAIC02Nzk4LDggKzY4NzQsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVk
TG9uZ0xvbmdJc1plcm9Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExv
bmdMb25nSXNaZXJvIik7CiB9CiAKQEAgLTY4MTQsOCArNjg5MSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFNlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFNl
cXVlbmNlIik7CiB9CiAKQEAgLTY4MzAsOCArNjkwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFNlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFNlcXVlbmNlSXNFbXB0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eUJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSIpOwogfQogCkBAIC02ODQ2LDggKzY5MjUsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxCb29sZWFuIik7CiB9CiAKQEAgLTY4NjIsOCArNjk0Miw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZUJvZHk+KCpzdGF0
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlIik7CiB9CiAKQEAgLTY4NzgsOCAr
Njk1OSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbEFueSIpOwogfQogCkBAIC02ODk0LDggKzY5NzYsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxPYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxPYmplY3RCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsK
IH0KIApAQCAtNjkxMCw4ICs2OTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVyIik7CiB9CiAKQEAgLTY5MjYsOCArNzAxMCw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlcklzTnVsbEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbCIpOwogfQogCkBAIC02OTQyLDggKzcwMjcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxYUAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXJCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiKTsKIH0KIApAQCAtNjk1OCw4ICs3MDQ0LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0
aE9wdGlvbmFsUmVjb3JkIik7CiB9CiAKQEAgLTY5NzQsOCArNzA2MSw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFByCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxQcm9taXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
c3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsUHJvbWlzZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFBy
b21pc2UiKTsKIH0KIApAQCAtNjk5Miw4ICs3MDgwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJn
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiB9CiAKQEAgLTcwMTIsOCAr
NzEwMSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxi
YWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiB9CiAKQEAgLTcwMjgsOCArNzExOCw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0FuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0JvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiB9CiAKQEAgLTcwNDYs
OCArNzEzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFy
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKQEAg
LTcwNjYsOCArNzE1OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFjCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFy
Z0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rp
b25BcmciKTsKIH0KIApAQCAtNzA4Miw4ICs3MTc1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJn
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIp
OwogfQogCkBAIC03MDk3LDggKzcxOTEsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdC
b2R5Pigqc3RhdGUsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwog
fQogCkBAIC03MTE0LDggKzcyMDksOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmdCb2R5Pigqc3RhdGUsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBcmciKTsKIH0KIApAQCAtNzEyOCw4ICs3MjI0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qx
Qm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFs
TWV0aG9kMSIpOwogfQogCkBAIC03MTQ1LDggKzcyNDIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhv
ZDJCbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDJCb2R5Pigq
c3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKIH0KIApAQCAtNzE2Miw4ICs3MjYwLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxNZXRob2QzQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QzQm9keT4oKnN0YXRlLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CiB9CiAKQEAg
LTczNjMsOCArNzQ2Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RPdmVyCiAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiB9CiAKQEAgLTc0MjAsOCArNzUyMCw5IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hl
cj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogfQog
CkBAIC03NDY3LDggKzc1NjgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAgIHJldHVy
biBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24o
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2Fk
ZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbiIpOwogfQogCkBAIC03NTE2LDggKzc2MTgs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aAogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hp
bmdVbmlvbnNPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
MkRpc3Rpbmd1aXNoaW5nVW5pb25zIik7CiB9CiAKQEAgLTc1NjQsOCArNzY2Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDIgPyB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlv
bk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0
aW5ndWlzaGluZ1VuaW9uIik7CiB9CiAKQEAgLTc2MTMsOCArNzcxNyw5IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE51bGxhYmxlCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxh
YmxlVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlv
bk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbiIp
OwogfQogCkBAIC03NjYzLDggKzc3NjgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbAogICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVu
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0
aW9uYWxVbmlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRXaXRoT3B0aW9u
YWxVbmlvbiIpOwogfQogCkBAIC03NzEyLDggKzc4MTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxs
YWJsZQogICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRp
c3Rpbmd1aXNoaW5nUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFi
bGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXJP
dmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGlu
Z3Vpc2hpbmdQYXJhbWV0ZXIiKTsKIH0KIApAQCAtNzcyNSw4ICs3ODMyLDkgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFz
c01ldGhvZEJvZHkoSlMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kQm9keT4o
KnN0YXRlLCAiY2xhc3NNZXRob2QiKTsKIH0KIApAQCAtNzczOSw4ICs3ODQ3LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhPcHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9u
Zz4oVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoT3B0
aW9uYWwiKTsKIH0KIApAQCAtNzc1MSw4ICs3ODYwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDJCb2R5
KEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Y2xhc3NNZXRob2QyKCpz
dGF0ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9k
MihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QyQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2QyIik7CiB9CiAKQEAgLTc4MDQsOCArNzkxNCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDFPCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMU92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZDEiKTsKIH0K
IApAQCAtNzgyNiw4ICs3OTM3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xh
bXAoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wQm9keT4oKnN0YXRlLCAi
Y2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKIH0KIApAQCAtNzg0Miw4ICs3OTU0LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoQ2xhbXAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsQm9keT4oKnN0YXRlLCAi
Y2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsIik7CiB9CiAKQEAgLTc4NjIsOCArNzk3NSw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZUJvZHk+KCpzdGF0ZSwg
ImNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSIpOwogfQogCkBAIC03ODc4LDggKzc5OTIsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VS
YW5nZU9uT3B0aW9uYWxCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VP
bk9wdGlvbmFsIik7CiB9CiAKQEAgLTc4OTYsOCArODAxMSw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNp
Z25lZExvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhV
bnNpZ25lZExvbmdTZXF1ZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhV
bnNpZ25lZExvbmdTZXF1ZW5jZSIpOwogfQogCkBAIC03OTEzLDggKzgwMjksOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJp
bmdBcnJheUZ1bmN0aW9uQgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5zdHJpbmdBcnJheUZ1bmN0aW9uKFdURk1vdmUodmFsdWVzKSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbkJvZHk+KCpzdGF0ZSwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKIH0KIApAQCAtNzkzMCw4
ICs4MDQ3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPERPTVN0cmluZ0xpc3Q+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5kb21TdHJpbmdMaXN0RnVuY3Rp
b24oKnZhbHVlcykpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkRvbVN0cmluZ0xpc3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgImRvbVN0cmluZ0xpc3RGdW5j
dGlvbiIpOwogfQogCkBAIC03OTQ2LDggKzgwNjQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9u
YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRp
b25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldp
dGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJv
cGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlciIpOwogfQogCkBAIC03OTY2LDggKzgw
ODUsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVu
Y2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxh
YmxlU2VxdWVuY2UiKTsKIH0KIApAQCAtNzk4Myw4ICs4MTAzLDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5
SWRCb2R5KEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
SW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keT4oKnN0YXRlLCAiZ2V0RWxlbWVu
dEJ5SWQiKTsKIH0KIApAQCAtNzk5Niw4ICs4MTE3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnRCb2R5
KEoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR0RvY3Vt
ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIEJp
bmRpbmdTZWN1cml0eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoKnN0YXRlLCBpbXBsLmdldFNWR0Rv
Y3VtZW50KCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0Rv
Y3VtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1l
bnRCb2R5Pigqc3RhdGUsICJnZXRTVkdEb2N1bWVudCIpOwogfQogCkBAIC04MDE0LDggKzgxMzYs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MUJvZHkoSlNDOjpFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFCb2R5Pigqc3RhdGUs
ICJjb252ZXJ0MSIpOwogfQogCkBAIC04MDMyLDggKzgxNTUsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MkJvZHko
SlNDOjpFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDJCb2R5Pigqc3RhdGUsICJjb252ZXJ0MiIpOwogfQogCkBA
IC04MDUwLDggKzgxNzQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0M0JvZHkoSlNDOjpFeAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDNCb2R5Pigqc3RhdGUsICJjb252ZXJ0MyIpOwogfQogCkBAIC04MDY4LDggKzgxOTMsOSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NEJvZHkoSlNDOjpFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDRCb2R5Pigqc3RhdGUsICJjb252
ZXJ0NCIpOwogfQogCkBAIC04MDgxLDggKzgyMDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlv
bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRG
dW5jdGlvbigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11
dGFibGVQb2ludEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TXV0YWJsZVBvaW50RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIp
OwogfQogCkBAIC04MDk1LDggKzgyMjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2VCb2R5KEpTQzo6RXhlYwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PcmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cmFuZ2VCb2R5Pigqc3RhdGUsICJvcmFuZ2UiKTsKIH0KIApAQCAtODExNSw4ICs4MjQzLDkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljU3RyaW5nTWV0aG9kQm9keT4oKnN0YXRlLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsK
IH0KIApAQCAtODEzNSw4ICs4MjY0LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVN
ZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kQm9keT4oKnN0YXRl
LCAidmFyaWFkaWNEb3VibGVNZXRob2QiKTsKIH0KIApAQCAtODE1NSw4ICs4Mjg1LDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNOb2RlTWV0aG9kQm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNO
b2RlTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNO
b2RlTWV0aG9kQm9keT4oKnN0YXRlLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CiB9CiAKQEAgLTgx
NzUsOCArODMwNiw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2RCCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljVW5p
b25NZXRob2QiKTsKIH0KIApAQCAtODE5NSw4ICs4MzI3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55Qm9keShKU0M6OkV4
ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQW55KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQW55Qm9keT4oKnN0YXRlLCAiYW55Iik7CiB9CiAKQEAgLTgyMDksOCArODM0Miw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25CCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3Rh
dGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6
OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAg
LTgyMjcsOCArODM2MSw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RmxvYXRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxv
YXRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5LCBQcm9taXNl
RXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aEZsb2F0QXJndW1lbnQiKTsKIH0KIApAQCAtODI0MSw4ICs4Mzc2LDkgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvblcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4
Y2VwdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0
ZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7CiB9CiAKQEAgLTgyNTcsOCAr
ODM5Myw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJ
bnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9u
YWxJbnRBcmd1bWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRCb2R5
LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiKTsKIH0KIApAQCAtODMwMiw4ICs4
NDM5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGUKICAgICByZXR1cm4gYXJnc0NvdW50IDwg
MSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbk92ZXJsb2Fk
RGlzcGF0Y2hlciwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRl
LCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKIH0KIApAQCAtODMxNSw4ICs4NDUz
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2Jq
Pjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21p
c2VGdW5jdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpz
dGF0ZSwgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24iKTsKIH0KIApAQCAtODMyOCw4ICs4NDY3
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
UmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJvZHksIFBy
b21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RTdGF0aWNQ
cm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7CiB9CiAKQEAgLTgzNDAsOCArODQ4MCw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RDdXN0b21Qcm9taXNlRnVuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT50ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwgV1RGTW92ZShwcm9taXNl
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21Qcm9taXNlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbkJvZHksIFByb21pc2VF
eGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KCpzdGF0ZSwgInRlc3RDdXN0b21Qcm9taXNl
RnVuY3Rpb24iKTsKIH0KIApAQCAtODM1Miw4ICs4NDkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3Vz
dG9tUHIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6dGVzdFN0YXRpY0N1
c3RvbVByb21pc2VGdW5jdGlvbigqc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVz
dFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y0N1c3RvbVByb21pc2VGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rp
b25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPigqc3RhdGUsICJ0
ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTgzNjQsOCArODUwNiw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT50ZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbigqc3RhdGUpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+
OjpjYWxsUmV0dXJuaW5nT3duUHJvbWlzZTxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uQm9keT4oKnN0YXRlLCAidGVzdEN1c3RvbVJl
dHVybnNPd25Qcm9taXNlRnVuY3Rpb24iKTsKIH0KIApAQCAtODM3Nyw4ICs4NTIwLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFJldHVybnNPd25Qcm9taXMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
UHJvbWlzZTxJRExWb2lkPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwudGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9t
aXNlPEpTVGVzdE9iaj46OmNhbGxSZXR1cm5pbmdPd25Qcm9taXNlPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb25Cb2R5
Pigqc3RhdGUsICJ0ZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbiIp
OwogfQogCkBAIC04NDMyLDggKzg1NzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkTwogICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxPdmVybG9hZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWRPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgImNvbmRp
dGlvbmFsT3ZlcmxvYWQiKTsKIH0KIApAQCAtODQ4Miw4ICs4NjI3LDkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29u
ZGl0aW9uYWxPdmUKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxP
dmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2Fk
T3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7
CiB9CiAKQEAgLTg1MDAsOCArODY0Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3RCb2R5CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jv
b3QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHk+KCpzdGF0ZSwgImF0dGFjaFNo
YWRvd1Jvb3QiKTsKIH0KIApAQCAtODUxOCw4ICs4NjY1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4
dGVybmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Bl
cmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9w
ZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1l
dGVyQm9keT4oKnN0YXRlLCAib3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRl
ciIpOwogfQogCkBAIC04NTM2LDggKzg2ODQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3Vy
Y2VQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJCb2R5
Pigqc3RhdGUsICJidWZmZXJTb3VyY2VQYXJhbWV0ZXIiKTsKIH0KIApAQCAtODU1NCw4ICs4NzAz
LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRCb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
ZWdhY3lDYWxsZXJOYW1lZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxl
Z2FjeUNhbGxlck5hbWVkQm9keT4oKnN0YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKIH0KIApA
QCAtODU3NSw4ICs4NzI1LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW0KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJldHVyblZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlv
bkJvZHk+KCpzdGF0ZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIpOwogfQogCkBAIC04
NTk2LDggKzg3NDcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmV0dXJuVmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9u
V2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlv
bldpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBz
dGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uQm9keT4oKnN0YXRlLCAidGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiIpOwogfQogCkBAIC04NjEwLDggKzg3
NjIsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2lu
ZG93RnVuY3Rpb24iKTsKIH0KIApAQCAtODYyNCw4ICs4Nzc3LDkgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxs
eUV4cG9zZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uQm9keT4o
KnN0YXRlLCAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIik7CiB9CiAKQEAg
LTg2MzgsOCArODc5Miw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBbmRXb3JrZXJGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbkJv
ZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlv
biIpOwogfQogCkBAIC04NjUxLDggKzg4MDYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkoSlNDOjpFeAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpzdGF0ZSwgaW1w
bC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUp
CiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCkBAIC04Njg1LDggKzg4NDEsOSBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09O
Qm9keShFeGVjU3RhdGUqIHN0YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2Jq
OjpzZXJpYWxpemUoKnN0YXRlLCAqdGhpc09iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0
b0pTT04iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCmluZGV4IDU2MTk3NjAyODhhOTBjZTgwM2FlNWE0MTA4OGViNmUzYjIxN2Y1NjAuLjMyNjYz
NzRmODc0MDljNmZhNDkwM2E5ZDI2MTdlMjdjMzIyNmU1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgY2xhc3MgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogCiB1c2luZyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+OwogCi1z
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTg4LDkgKzg4LDkgQEAg
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMShFeGVjU3RhdGUqIHMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKQEAgLTEwMSw5ICsxMDEs
OSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMyKEV4ZWNTdGF0ZSogcwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczMoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwpAQCAtMTE0LDkg
KzExNCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczMoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVj
dCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0x
MjcsOSArMTI3LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChFeGVjU3RhdGUqIHMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUo
b2JqZWN0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0gICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsK
QEAgLTE0MCwyNiArMTQwLDI2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoRXhlY1N0YXRlKiBzCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG9iamVjdCkpKTsKIH0KIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KEV4ZWNTdGF0ZSogc3RhdGUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+
KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMCkgewot
ICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoc3Rh
dGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czUoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQogICAgIGlmIChhcmdzQ291bnQgPT0gMSkg
ewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBh
c09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQXJyYXlCdWZmZXI+KHZtKSkK
LSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
MShzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczEoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlz
aGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJp
dHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoZ2xvYmFsT2JqZWN0LCBzdGF0
ZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0
KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNCbG9iPih2bSkpCi0gICAgICAgICAgICBy
ZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMoc3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKGds
b2JhbE9iamVjdCwgc3RhdGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1i
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzNShzdGF0ZSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzNChzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CisgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChnbG9iYWxPYmplY3Qs
IHN0YXRlKTsKICAgICB9CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCmluZGV4IDM3NTg5MDE3Y2NhNDQyY2NmZWViNzM3ZTlk
YmU0Zjk5YmI1N2E5YWUuLjJhMjlhNDhjNDk0ZmVjZDVmNzFlZWRjMzVmZjJkNzVlNTc5MjU3ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgY2xhc3MgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWwKIAogdXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlPjsKIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShFeGVjU3RhdGUqIHN0YXRlKQor
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlMShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC04Nyw5ICs4Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZTEoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlD
cmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkp
KTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3Ry
dWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CkBAIC0xMDAsMjIgKzEwMCwyMiBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UyKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3Jl
YXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7
CiB9CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVj
U3RhdGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7Ci0g
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48
c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09
IDApIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UxKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKGdsb2JhbE9iamVjdCwgc3RhdGUpOwog
ICAgIH0KICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5n
dWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UxKGdsb2JhbE9iamVjdCwgc3RhdGUpOwogICAgICAgICBpZiAoaGFzSXRlcmF0b3JN
ZXRob2QoKnN0YXRlLCBkaXN0aW5ndWlzaGluZ0FyZykpCi0gICAgICAgICAgICByZXR1cm4gY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOwot
ICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZTIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKGdsb2JhbE9iamVjdCwgc3RhdGUpOworICAg
ICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTIoZ2xvYmFsT2JqZWN0LCBzdGF0ZSk7CiAgICAgfQogICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAppbmRleCA0NGVmYzcwODUyZTE0YjAzNWVjOWJkOTEyYzFiYzQ3MmMwNjMxY2RkLi5m
MzFjOWMyMTk4YzdhOGRkMGYwMTc2ZWU1NTk4ZDc0MjBlNzcwOGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIC8vIEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIzNSw4ICsyMzUsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbUJvZHk+KCpzdGF0ZSwgIm5hbWVkSXRlbSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDVkNjVhZGFjYWVhNGI4ZmRlODNiMjA3Yjdh
NGUwOTNkOGIyYzZjNTEuLmJkNmM0OTJmNmM1ZmJlZWFlYTBlZjNiMjYwZmY5NTEzYmJkMTVlMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0xNTQs
OSArMTU0LDkgQEAgY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiAKIHVzaW5nIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3Rh
dGUqIHN0YXRlKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3IqPihzdGF0ZS0+anNDYWxsZWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbi5jcHAKaW5kZXggNWMwZDc4MmJiMzI5ZjExNzk5OWIzN2NkMmNiMjRkMjFkODcw
MmYxNi4uZjg4YTZlMTE3MDc3NmJmY2Q4MjVlMzdiMWRhNWJhY2E5ZThhOWY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRp
b25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC02NjUsOCArNjY1LDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25U
b0pTT05Cb2R5KEV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6
YXRpb246OnNlcmlhbGl6ZSgqc3RhdGUsICp0aGlzT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvblBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FsbDxqc1Rlc3RTZXJpYWxp
emF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKaW5kZXggN2ViMTUy
NjA5ZWNlOTc0ZmU4NWE1YjZhZTIwZWQ3MjlhZGQ3MWQ0MC4uYmUxZjM3ODhiMTRmOTk3ZjA0ZmNl
NjQxZWU0OGNhN2U0MmNlOWZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1
bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjIwLDggKzIyMCw5IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVG
dW5jdGlvblRvSlNPTkJvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdDo6c2VyaWFsaXplKCpzdGF0ZSwgKnRoaXNPYmplY3QsICp0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pT
T04oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQ+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rp
b25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCmluZGV4IGNmMjcxZTJhY2I4ZGFmMTVm
Yzc0MTk2YzE2MzdjZDJjZTZkNzM0OWIuLmRjYzNjZWVjNmNlNzkxNDVkOTJlOGY5N2M5YTQ4MTUy
NjRmNWFiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMjU1LDggKzI1NSw5IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpzZXJpYWxpemUoKnN0YXRlLCAqdGhpc09iamVj
dCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5j
dGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRl
KQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OmNhbGw8anNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAi
dG9KU09OIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTliNWVmNmI1MTg3MzE4MzZlZGYyZjdmNTQ0NTYy
Zjc3YWFkYzRiYi4uMGVlZjQxNmUwMDQxZWUxMWVmNDcyZTZjMmJjZThlYWNiY2FlMjRkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKQEAgLTUxLDggKzUxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rp
b25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uKEpTQzo6RXhlY1N0
YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRlcwogCkBAIC0zMjMsOCArMzIzLDkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZUYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uQm9keT4oKnN0YXRlLCAiZnVuY3Rpb24iKTsK
IH0KIApAQCAtMzM2LDggKzMzNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1w
bC5mdW5jdGlvblJldHVybmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25G
dW5jdGlvblJldHVybmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+Ojpj
YWxsPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
RnVuY3Rpb25SZXR1cm5pbmdCb2R5Pigqc3RhdGUsICJmdW5jdGlvblJldHVybmluZyIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBlNWM2MmUzOTY0MzUzMTIwZmVjN2FiODE5
NmFjN2JhYzQ2YWIwZDU2Li43MTk2NmY3NjBjMDRjOWRiN2YxM2Y2OGVkMjBjOGI2NTliM2U5Y2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJp
bmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0ZXMKIApAQCAtMTc3LDggKzE3Nyw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmdCb2R5CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllcj46OmNhbGw8
anNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAi
dG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbi5jcHAKaW5kZXggNzUyZTI2NmNiYzc4ODlkMzNiNmY2ZGUxM2NkZjgx
MTczMmYzN2E5OC4uM2UyZDg4OTBhOTVlMWUxYjMxOGYzMjFjNDk1ODI4NTlhYTliZDNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEZ1bmN0aW9u
cwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE3Nyw4ICsx
NzcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+
OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRleCBhMDJhMDIwM2EyY2Q4
MzZhNTgwMzU3ZjAyOTkzMWU5OWU0NmZhMWQ5Li40MDkxMzg0NmEzYTUxZjUwODdjNDE4YmZkYmFh
NzYxY2EyODA1MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24uY3BwCkBAIC00MSw4ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8v
IEZ1bmN0aW9ucwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmli
dXRlcwogCkBAIC0xNzksOCArMTc5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGkKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRl
bnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25JZGVudGlmaWVyQm9keT4oKnN0YXRlLCAiaWRlbnRpZmllciIpOwogfQogCkBA
IC0xOTIsOCArMTkzLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+
OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nQm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAppbmRleCBl
NmVlYTk5YzBjNjA4Njk1ODBjOTBkYTI0OWJiNTgwN2FiMjZmZDQ1Li5jMDJjZmY5NmE2YjlhYWJh
MDU0Njk3YTY3NGVhYjVmNjgzYzk5NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApAQCAtNDEsOCArNDEsOCBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcwogCkBAIC0xNzksOCArMTc5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHkKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwu
YWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rp
b25JZGVudGlmaWVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0
aW9uSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Y2FsbDxq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklk
ZW50aWZpZXJCb2R5Pigqc3RhdGUsICJpZGVudGlmaWVyIik7CiB9CiAKQEAgLTE5Miw4ICsxOTMs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcz46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpzdGF0ZSwgInRvU3RyaW5n
Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZy5jcHAKaW5kZXggYmNhMGZhZDgzYzUxZjg5NDEzMmJiOGNiMGY1ZmY5
MmViYjI5MThjOC4uZDIxYWMzZGIwNmZmYzljNTZiMjNlNjUyMDM4NzVmZWQxYzk0ODA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8g
RnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmlu
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAogLy8gQXR0cmlidXRl
cwogCkBAIC0xNzcsOCArMTc3LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJp
bmcoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKnN0YXRlLCAi
dG9TdHJpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IGNmMGYxMWIyOWYwNDNkZGI2ZDdlNmE5YTc2ZjkxM2M0
OGFkZjgyMTcuLjE2M2JmNjJlNTllYWIxNDVmZTFhZWVjZGEwZWExNTMxNjg2ODc1MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVuY3Rpb25zCiAK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTE5OSw4ICsxOTksOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT46OmNhbGw8
anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCA1N2NlYzg2YmVmZTdi
NGFmNjhkMmQ1MWE1M2E0YTI0Yzk1NDU4MDAxLi43MGM2ZmE1YzZhYjkwY2U1NWQwNGI2MDE3NjE0
YmYwNGQyMjg2ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogLy8gRnVuY3Rpb25zCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKIC8vIEF0dHJpYnV0
ZXMKIApAQCAtMjE4LDggKzIxOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50
aWZpZXIoKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5Pigqc3RhdGUsICJ0b1N0cmluZyIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA2YjhjMDRhYzhlMThmZWRhYmRmNTgwZDg1YmNl
NGUyOTQzN2MxNzU4Li5kOGI0Mzg5NjVhM2U1YjczZTAyYzM0NDkyYzE4MTc0NjQxYzhlNzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTYwLDIxICs2MCwyMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiAvLyBGdW5jdGlvbnMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEpTQzo6RXhlY1N0YXRlKik7Ci1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblNldFNoYWRvdyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2Vx
dWVuY2VBcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTQzo6RXhl
Y1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoSlNDOjpFeGVj
U3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y1dpdGhDbGFtcChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBl
ZGVmKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb24oSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShKU0M6OkV4ZWNTdGF0ZSopOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1
bmMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNo
YWRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZO
dWxsYWJsZXNBcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmlu
Z1NlcXVlbmNlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5j
bHVkZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsK
IAogLy8gQXR0cmlidXRlcwogCkBAIC0xNDIsOSArMTQyLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7
ICJUZXN0U3ViT2JqIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9i
aiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKIH07CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3Rl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RUeXBlZGVmc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgp
KTsKQEAgLTQ5Niw4ICs0OTYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5KEpTQzo6RQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY0JvZHk+KCpzdGF0ZSwgImZ1bmMiKTsKIH0KIApAQCAtNTIyLDggKzUyMyw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uU2V0U2hhZG93Qm9keShKCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
ZXRTaGFkb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U2V0U2hhZG93Qm9keT4oKnN0YXRlLCAic2V0U2hhZG93Iik7CiB9CiAKQEAgLTUzOSw4ICs1NDEs
OSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZN
b3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnQm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiB9CiAKQEAgLTU1Nyw4ICs1NjAsOSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZ0JvZHk+KCpzdGF0ZSwgIm51bGxh
YmxlU2VxdWVuY2VBcmciKTsKIH0KIApAQCAtNTc1LDggKzU3OSw5IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVu
Y2VPZk51bGxhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVu
Y2VPZk51bGxhYmxlc0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keT4oKnN0YXRlLCAic2VxdWVuY2VPZk51
bGxhYmxlc0FyZyIpOwogfQogCkBAIC01OTMsOCArNTk4LDkgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNl
cXVlbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51
bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdCb2R5Pigq
c3RhdGUsICJudWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmciKTsKIH0KIApAQCAtNjExLDgg
KzYxNyw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVk
ZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5j
ZU9mVW5pb25zQXJnQm9keT4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnIik7
CiB9CiAKQEAgLTYyOSw4ICs2MzYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnQm9keShKUwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHk+KCpzdGF0ZSwgInVuaW9uQXJnIik7CiB9
CiAKQEAgLTY0OSw4ICs2NTcsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBCbwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEJvZHk+KCpzdGF0ZSwgImZ1
bmNXaXRoQ2xhbXAiKTsKIH0KIApAQCAtNjY3LDggKzY3Niw5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcEluCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcEluVHlwZWRlZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmQm9keT4oKnN0YXRlLCAiZnVuY1dpdGhDbGFtcElu
VHlwZWRlZiIpOwogfQogCkBAIC02ODAsOCArNjkwLDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9u
Qm8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9pbnRGdW5jdGlv
bigpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBzdGF0ZSkK
IHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
UG9pbnRGdW5jdGlvbkJvZHk+KCpzdGF0ZSwgInBvaW50RnVuY3Rpb24iKTsKIH0KIApAQCAtNjk3
LDggKzcwOCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ1NlcXVlbmNlRnVuY3Rp
b24oV1RGTW92ZSh2YWx1ZXMpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNh
bGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb25C
b2R5Pigqc3RhdGUsICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uIik7CiB9CiAKQEAgLTcxNCw4ICs3
MjYsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihX
VEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIHN0YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxs
PGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMkJv
ZHk+KCpzdGF0ZSwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yIik7CiB9CiAKQEAgLTczMSw4ICs3
NDQsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRo
YXRSZXF1aXJlc0luY2x1ZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBzdGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGVCb2R5Pigqc3RhdGUs
ICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogfQogCkBAIC03NDUsOCAr
NzU5LDkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogc3RhdGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25Cb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfdXRpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5
LmgKaW5kZXggZmE0ODczMTU2ZGFmZjYyYjg1ODU0NTU5YmRhOTQ1MWZjMzk2ZGNjMy4uOWVkNzI1
YjZmMjliMzM5YWViMDQyZjYxMTc5N2QwNzRiNTg2MjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmgKQEAgLTM1LDggKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIElkZW50aWZpZXI7Cit1c2luZyBF
eGVjU3RhdGUgPSBDYWxsRnJhbWU7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA4NDQwNjQ3NTJmOTNmZmIx
NDdjYjI5MDRkYzZiNjk0N2E0ZjljMWU1Li43N2EyNDFjZTY4ZjEyZGJjZDk4Y2VhZTI2MTE3NDg1
ZTc4ZTI1MWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CkBAIC0yNDQsMTQgKzI0NCwxNCBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
akNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTQzo6Vk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0czxPYmpDUnVudGltZU9i
amVjdD4odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNTksNyArMjU5LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVj
dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgT2JqY0luc3RhbmNlKiBvYmpjSW5zdGFuY2UgPSBydW50
aW1lT2JqZWN0LT5nZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpOwogCiAgICAgaWYgKCFvYmpjSW5z
dGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihjYWxsRnJh
bWUsIHNjb3BlKSk7CiAgICAgCiAgICAgb2JqY0luc3RhbmNlLT5iZWdpbigpOwogCkBAIC0yNjgs
OSArMjY4LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNG
YWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2Ny
aXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0
YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChtYWtlVW5pcXVlPE9i
amNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRo
b2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOwotICAgICAgICBjb25zdCBTdHJpbmcm
IG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhl
Yy0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOworICAgICAgICBjb25zdCBTdHJpbmcmIG5h
bWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9k
LT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKLSAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMs
IGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKKyAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5p
bnZva2VPYmpjTWV0aG9kKGNhbGxGcmFtZSwgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAgIH0K
ICAgICAgICAgICAgIAogICAgIG9iamNJbnN0YW5jZS0+ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCBmZDZlNWVkNzFmMmUwYmNhZjM1NGNkNjJjZTAy
NzE5YTUzYWMxNzc4Li44N2YxNmIwZTgwYjY3MDA1ZTE3Y2NjZTE1ZDY5M2NhZmRkNjBjZDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEJpbmRpbmdzOwogCiBXRUJDT1JFX0VYUE9SVCBjb25zdCBDbGFz
c0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
UnVudGltZU1ldGhvZCkgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNZXRob2QqIG1ldGhvZCkKICAgICAvLyBDYWxs
ZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGNvcnJlc3Bv
bmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRob2QiLgpAQCAtODUsMzUgKzg1LDM1IEBA
IElzb1N1YnNwYWNlKiBSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQogICAg
IHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+cnVu
dGltZU1ldGhvZFNwYWNlKCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0
YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5qc0NhbGxlZSgpKTsKKyAgICBSdW50aW1l
TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIFJlZlB0cjxJbnN0YW5jZT4g
aW5zdGFuY2U7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
dGhpc1ZhbHVlLmluaGVyaXRzPFJ1bnRpbWVPYmplY3Q+KHZtKSkgewogICAgICAgICBSdW50aW1l
T2JqZWN0KiBydW50aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOwogICAgICAgICBpbnN0YW5jZSA9IHJ1bnRpbWVPYmplY3QtPmdldElu
dGVybmFsSW5zdGFuY2UoKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkgCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1
bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsaW5nIGEgcnVudGltZSBvYmplY3Qgb2YgYSBw
bHVnaW4gZWxlbWVudD8KICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0hUTUxFbGVt
ZW50Pih2bSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAg
IGlmICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlKTsKICAgICB9CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIAogICAgIGluc3RhbmNlLT5i
ZWdpbigpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmludm9rZU1ldGhvZChleGVj
LCBtZXRob2QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmludm9rZU1ldGhvZChj
YWxsRnJhbWUsIG1ldGhvZCk7CiAgICAgaW5zdGFuY2UtPmVuZCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwCmluZGV4IDg3M2JhMzQ2YmM0ZmEzZDI3N2FkNTA0ZjI3NzMzMGUyOTYzNDJlYzMuLjdk
MGVhMzU2ZjIzZDM3YmM2YTU1NTNmOThjYzJmYmIwNGYyMzg3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjIyLDEyICsyMjIsMTIgQEAgSlNWYWx1ZSBS
dW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU9iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBB
U1NFUlQoZXhlYy0+anNDYWxsZWUoKS0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZXhlYy0+dm0o
KSkpOwotICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Uoc3RhdGljX2Nhc3Q8UnVudGltZU9i
amVjdCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOworICAgIEFT
U0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCktPmluaGVyaXRz
PFJ1bnRpbWVPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpOworICAgIFJlZlB0cjxJbnN0YW5j
ZT4gaW5zdGFuY2Uoc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlRGVmYXVsdE1ldGhvZChleGVjKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VEZWZhdWx0TWV0aG9kKGNhbGxG
cmFtZSk7CiAgICAgaW5zdGFuY2UtPmVuZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTI0NiwxNCArMjQ2LDE0IEBAIENhbGxUeXBlIFJ1bnRpbWVPYmplY3Q6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmpzQ2FsbGVlKCk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9y
LT5pbmhlcml0czxSdW50aW1lT2JqZWN0PihleGVjLT52bSgpKSk7Ci0gICAgUmVmUHRyPEluc3Rh
bmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oZXhlYy0+anNDYWxsZWUo
KSktPmdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0g
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBj
b25zdHJ1Y3Rvci0+aW5oZXJpdHM8UnVudGltZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7
CisgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZShzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKICAgICBp
bnN0YW5jZS0+YmVnaW4oKTsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbnN0YW5jZS0+aW52b2tlQ29uc3RydWN0KGV4ZWMsIGFyZ3MpOworICAgIEFyZ0xp
c3QgYXJncyhjYWxsRnJhbWUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmludm9r
ZUNvbnN0cnVjdChjYWxsRnJhbWUsIGFyZ3MpOwogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICAK
ICAgICBBU1NFUlQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9T
dWJ0bGVDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaAppbmRl
eCBmNTE4YzEyNmE4MDcyM2Q2NTJkNTg0NzE4ZjEyYWY2ZDgyZTQ0YjZlLi4zNWIxN2FlZjU5Njlk
YTgzZjFhZjczZGI5NDMzMTZjOTU1MWNlZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vU3VidGxlQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNy
eXB0by5oCkBAIC0zOSw3ICszOSw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5QnVm
ZmVyVmlldzsKIGNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2Fs
bEZyYW1lOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDY3NmZiYTg1MzJmNjBhOGM1Y2Q0
Yjc1MjQwY2ViOWJkOTM2YzhiM2QuLmY1MjJkZjRiYjEyNjcyMTBlODZmODUxYjZlYjY2MzYxNmU4
YTQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0zOCw3ICszOCw4IEBACiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlLmgKaW5kZXggNTg5Yzg0MWNjM2U4OGNlNzllNzQyZTdiMmJiMzRhZTllNjlm
MDhhYi4uMWY3ODI0MmM1OTYyZDg1MWIxYzBhOTI4YWQ2MzFjZDhiZTQyOGFkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKQEAgLTMyLDcg
KzMyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDEwZTM0ZDI1NTMyOWUzM2RkMDUzOTU2NzBiZGE5ZTBjZTNlZDI5ODYuLjZi
ZjYxOWNkMTE2MTEyM2YzZmU1OTAzODQ2ZDczMzFmOTRkNjU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC04MSw4ICs4MSw5IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBJbnB1dEN1cnNvcjsKK3VzaW5nIEV4
ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuaAppbmRleCAyNjU2YmI0MzRjZWU2NzE3NWZkNmIxNWEwYmI5MmM4MzFhMDhj
Y2E3Li4wYjVmM2Q4N2MwMTU4NDU1NjJiYzkyOWM3Y2Y4ZjhlYjc0ZGY0OTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaApAQCAtMzYsOSArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgK
aW5kZXggZDE5MTFiMDg5NjQwMzA2NjMzYzkzMjNlMzA0YzFiYzdlMDUxYzk5NC4uMGJjYjgxYmIz
YjI5OTAxYzM1NTVlOWVkNjY5YTg2MGFmZDgxZDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5o
CkBAIC0zMiw4ICszMiw5IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRl
ID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBmMGU2NTRiNzMwYjlkZTJhNjUwY2Nl
NTI0Mjg0MjZlMDZjOWMxMjJlLi5lZmIwMTZmNTVjNTMwNGZkYTZiNDVkYTRjMTcwYzYxZGFiM2Ew
OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAg
LTQwLDExICs0MCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKLWNsYXNzIEV4
ZWNTdGF0ZTsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIFZNOwogdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIFN0cm9uZzsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmgKaW5kZXggZDFmNGUyMDI1MTZjOGE5M2M4ZTMzZjI2MWI2YWU3MDEzZjM4NDM2YS4uNDE0NmVl
N2U2MjMzMTQ4YjUwYmEwNGU2NzQwNTRhNjQxZmRlNzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgIkhU
TUxGcmFtZU93bmVyRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKK2NsYXNzIENhbGxGcmFtZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQW55LmgKaW5k
ZXggMzExNTQ4OGVjMDZmZTM1ODQxNTYwY2EyMWQ0MjkyMjRhODg2ODdjZS4uNWVmN2VjNDEwMGU2
N2I3ZDZhYWVlY2RhYWM2ZWQ5MTUyMTMzZTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEFueS5oCkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWlu
dDhBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTVmFsdWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA4MDRmMmJjYjI4OTZmYzkwMWMzNTU0
YWQ2ODM0YWMxYmFhYTQ1M2MwLi4wMzRlMWVmNDcxNTgxZjQ3MWJmZjgyOGI1ZDEzNmNmNzM5NjEy
YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC00Niw4ICs0Niw5IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKIH0KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBKU1ZhbHVlOwordXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCAwYzExZDI4NDNjNTUzYjkwMjIz
NjZiYmZmYmVjZjg0OTA3ZjIzNjJhLi4xNDg3YjEzMWU2YjlmNjgwYThiMjJjZGNmM2I5NGYxNTQ1
Mzc1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlUnVudGltZUFnZW50LmgKQEAgLTM2LDcgKzM2LDggQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmlu
ZGV4IDg4ZTMyN2FmZjY4ZDdkMmQ3MzU1YzBhMDAxMGIzNDhjYWQxYzdjNTMuLmI0ODIyNGViZjJk
Njg2MGM0M2M5NTlhNTFiNmU1YzQ4YzNmYzM4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApA
QCAtNDIsMTAgKzQyLDExIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVj
dDsKIGNsYXNzIEpTVmFsdWU7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKaW5kZXggZmZiZjYyYjIwMWZlMzEyODUz
ODIxNzhjMzQ5ZDBhYjJiNzRlNTU3MC4uZDU2YTZmNWQxMTk4MGNiNGZiMjg3ZmEyYzc1YjE2ZDJk
NTM5NTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaApAQCAtMzcs
NyArMzcsOCBAQCBjbGFzcyBDb25zb2xlTWVzc2FnZTsKIH0KIAogbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURP
TVdpbmRvdy5oCmluZGV4IDkzZmVlMWViYjRhMTk5MTI2YWJmODc4ODAzMjYzOTI5ODZlZWYzMGQu
LmY1NWJmNmExYzkwYWU4YThhNzdiMWFlOGU5OTYzOTQ0MmRlNThjNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVET01XaW5kb3cuaApAQCAtMzEsMTAgKzMxLDExIEBACiAjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNz
IENhbGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKIHRlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBTdHJvbmc7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNmI2NDJmMTkwNzc3YzMwY2QxMjgyNGZkZmI0YTU4ODM0
NDg4ODRiOC4uZGMwMmJmNGYzMDZlYWYyOGY5ZjRhNGYxY2FiMzA5NTliNjZkMzQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTM3
LDcgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNw
YWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1c2luZyBFeGVj
U3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDdmN2Y2NDRlNDcxN2Q5ODllMTBlNTRk
YWU1ZTExZTVjMDFkZmVmMjUuLjJkZWRmYTk3MjU2ODUyMDVkYzViODlhYTM2ZTY1NTY4ZmFiMjQ4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKQEAgLTMx
LDcgKzMxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwordXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKaW5kZXggNWZhYmRhYzY0Njc4YjY5Y2IxMTA0MWU2Zjcw
ZjlmNjgyZjM5ZTA5MC4uZGFmMWQ5MzFiYWYxNjQxZGJlY2ViMzhjMjMxMTc0OGIyYmE3ZmNmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaApAQCAtMzYsOSArMzYsMTAg
QEAgdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIGlkOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBK
U0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBDYWxsRnJhbWU7CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgdXNpbmcgRXhlY1N0
YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggOTQw
MGZhNzc5ZGFkYzk2ZWQ3ODcxNDczZWE5MTk2MjUwNDg1ZjE5Yy4uOTA1MjlhOWU4ZWQxOTllZjhh
NDdhY2VhZWI0ZGM1M2U4NTM3ZmRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsK
K3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggZWUzMWM3Y2VjNWVmZTlmZmZiYTc0MGNjMDVjM2I1
ODBmNzBjZjkyNC4uOGUzYmZhODdlYzU4ZjA2OGEzMjk4NDA5YWE1NmIxNGY5YzAwNjBkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwordXNp
bmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmluZGV4IDM4NDZkMjcx
YjY4YmQ2OTgyMDAwYjUyYjlhYmFiOTc2NzY3NjE0NjkuLmNiN2RmNjc0YWUwODIwNWMxOTE5ZTQ2
M2Q2ZmMzYTdlNGJjMGVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
c29sZUNsaWVudC5oCkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBDYWxsRnJhbWU7Cit1
c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oCmluZGV4IDBlZTgxNzZlYzU5OWY3OTQxZWY3Y2VjYjA5MTRlZGVlYTg1N2UzMTEu
LjkzYThlYWRkNzAzMDBjZWM4YzU4YmNmMmJhYzExZDk0N2IzMjhjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQu
aApAQCAtMzUsOCArMzUsOSBAQAogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNWYWx1
ZTsKK3VzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKaW5k
ZXggNjMxZGFlOTkwMWFjOWE0M2QyMDg2OWVhNWQ4MWZjMzM0NThjOGU5MC4uMWJiNzEzZDcwOWEx
ZDY4MjhkYWE3MjQ5Zjk0YTdmYmNlYmZkMTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBDYWxsRnJhbWU7Cit1c2luZyBFeGVjU3RhdGUgPSBDYWxsRnJhbWU7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKaW5kZXggZTA3NDNlNGExYjBlNjE4OTRmNTk3MDE5
OWNlMjNhNTVhMGQ0Zjg4My4uNmJmMDg1ZWY0YTM5YjVjZGNlZGJlNmJmYjJkY2VkMTEwYzM1NTA0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTTlBNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gSlNO
UE1ldGhvZDo6c19pbmZvID0geyAiTlBNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTlBNZXRob2QpIH07CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEpTTlBNZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5QSWRlbnRpZmll
ciBucElkZW50aWZpZXIpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSwgc3RydWN0dXJlLCBjYWxsTWV0aG9kLCBudWxscHRyKQpAQCAtNjYsMzEgKzY2LDMxIEBAIElz
b1N1YnNwYWNlKiBKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQogICAgIHJldHVy
biAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNOUE1ldGhvZCoganNOUE1ldGhvZCA9IGpzQ2FzdDxK
U05QTWV0aG9kKj4oZXhlYy0+anNDYWxsZWUoKSk7CisgICAgSlNOUE1ldGhvZCoganNOUE1ldGhv
ZCA9IGpzQ2FzdDxKU05QTWV0aG9kKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgY2Fs
bGluZyBhIG1ldGhvZCBvbiB0aGUgcGx1Zy1pbiBzY3JpcHQgb2JqZWN0LgogICAgIGlmICh0aGlz
VmFsdWUuaW5oZXJpdHM8SlNIVE1MRWxlbWVudD4odm0pKSB7CiAgICAgICAgIEpTSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OwogCiAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHNjcmlwdCBvYmplY3QgZnJvbSB0aGUgZWxl
bWVudAotICAgICAgICBpZiAoSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9i
amVjdChleGVjLCBlbGVtZW50KSkKKyAgICAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3Qg
PSBwbHVnaW5TY3JpcHRPYmplY3QoY2FsbEZyYW1lLCBlbGVtZW50KSkKICAgICAgICAgICAgIHRo
aXNWYWx1ZSA9IHNjcmlwdE9iamVjdDsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzPEpTTlBPYmplY3Q+KHZtKSkgewogICAgICAgICBKU05QT2JqZWN0KiBqc05QT2JqZWN0ID0g
anNDYXN0PEpTTlBPYmplY3QqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKIAotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTlBPYmplY3QtPmNhbGxNZXRob2QoZXhlYywganNOUE1ldGhv
ZC0+bnBJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05Q
T2JqZWN0LT5jYWxsTWV0aG9kKGNhbGxGcmFtZSwganNOUE1ldGhvZC0+bnBJZGVudGlmaWVyKCkp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBlNTcxNTFjMDg0MGZkMThmNTlk
MTlhYzBlMDkzMGIyYzllYTAzZWNmLi4wMmEzNzBhOWVmNWRmNTYzODE1ZTkzNmQ3N2ZkMmI3MTdi
ODE1ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMjM5LDEyICsyMzksMTIgQEAgSlNWYWx1ZSBK
U05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE5QSlNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCk7
Ci0gICAgQVNTRVJUKG9iamVjdC0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZXhlYy0+dm0oKSkpOwor
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCk7CisgICAgQVNTRVJU
X1VOVVNFRChnbG9iYWxPYmplY3QsIG9iamVjdC0+aW5oZXJpdHM8SlNOUE9iamVjdD4oZ2xvYmFs
T2JqZWN0LT52bSgpKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05Q
T2JqZWN0Kj4ob2JqZWN0KS0+Y2FsbE9iamVjdChleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCktPmNhbGxPYmplY3QoY2FsbEZyYW1l
KSk7CiB9CiAKIEpTQzo6Q2FsbFR5cGUgSlNOUE9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDOjpKU0Nl
bGwqIGNlbGwsIEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtMjU4LDEyICsyNTgsMTIgQEAg
SlNDOjpDYWxsVHlwZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwg
SlNDOjpDYWxsRGF0YSYgY2FsbERhdGEKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RXaXRoQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhl
Yy0+anNDYWxsZWUoKTsKLSAgICBBU1NFUlQoY29uc3RydWN0b3ItPmluaGVyaXRzPEpTTlBPYmpl
Y3Q+KGV4ZWMtPnZtKCkpKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBjYWxsRnJhbWUt
PmpzQ2FsbGVlKCk7CisgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9y
LT5pbmhlcml0czxKU05QT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNDYXN0PEpTTlBPYmplY3QqPihjb25zdHJ1Y3RvciktPmNhbGxD
b25zdHJ1Y3RvcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8SlNO
UE9iamVjdCo+KGNvbnN0cnVjdG9yKS0+Y2FsbENvbnN0cnVjdG9yKGNhbGxGcmFtZSkpOwogfQog
CiBDb25zdHJ1Y3RUeXBlIEpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxs
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAu
aAppbmRleCA2OWNhNTExODE0MzlkZmU5YzFkMTY1NzNlNTg2OTAxM2FmN2EwY2FlLi42NmYxZmM0
MDliMTY1YTMxNDE5YjY1OTA1M2I0NTI3MjFiODg5MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmpl
Y3RNYXAuaApAQCAtMzgsMTEgKzM4LDEyIEBAIHN0cnVjdCBOUE9iamVjdDsKIHR5cGVkZWYgc3Ry
dWN0IF9OUFZhcmlhbnQgTlBWYXJpYW50OwogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBF
eGVjU3RhdGU7CisgICAgY2xhc3MgQ2FsbEZyYW1lOwogICAgIGNsYXNzIFZNOwogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7
CisgICAgdXNpbmcgRXhlY1N0YXRlID0gQ2FsbEZyYW1lOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIuaAppbmRleCA4MzU3ZDkxY2E1YzVjMjRlN2Q2NDczNmNlZWVlM2E1YjBkNjY1YWU1Li43
OWMyYTY5MThlYjRjOGE3MDk4YTVkNTliYjAwNWM1NjA1ODI4YWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC0zNiwx
MSArMzYsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eworICAgIGNsYXNzIENhbGxGcmFtZTsKICAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKLSAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CiAgICAgY2xhc3MgQXJnTGlzdDsKKyAgICB1c2luZyBFeGVjU3RhdGUgPSBDYWxs
RnJhbWU7CiB9CiAKIEBjbGFzcyBXZWJTY3JpcHRDYWxsRnJhbWU7Cg==
</data>
<flag name="review"
          id="395988"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>